Estoy leyendo el índice Bitcoin Core LevelDB (bloques/índice) y usando el Estatus FLAG para determinar si un bloque es válido y parte de la cadena activa.
Actualmente estoy usando el siguiente cheque:
if ((BlockStatus & BLOCK_VALID_MASK) >= BLOCK_VALID_CHAIN)
Esto parece funcionar para la mayoría de los bloques, pero falla para el bloque 0, que tiene un Estatus valor de 11.
Como resultado, la condición evalúa a FALSO.
Supongo que esto se debe a que el bloque 0 está codificado y posiblemente manejado de manera diferente por el núcleo.
Entonces mis preguntas son:
- ¿Es este un proxy razonable para inferir que un bloque está completamente verificado, en función de los metadatos nivelados de LevelDB solo, o este cheque es inherentemente poco confiable para ese propósito?
- ¿Cómo maneja Bitcoin Core el Blockstatus del bloque 0 internamente?
- ¿Debo omitir el bloque 0 y aplicar esta comprobación solo para bloques con
peak > 0
?