Suponiendo un nodo completo que ejecuta Bitcoincore v0.10 (con txindex=1
), ¿cómo afecta exactamente la nueva funcionalidad de "primero los encabezados" a la estructura de los datos de la cadena de bloques? (Específicamente, los blkxxxx.dat
datos, aunque quizás desconozco otros archivos que son auxiliares de la estructura de datos).
El README.md para el lanzamiento especifica que no hay compatibilidad con versiones anteriores de v0.9.x para los blk
datos de cadena de bloques v0.10.
Debido a que la versión 0.10.0 utiliza la sincronización de encabezados primero y la descarga de bloques en paralelo (consulte más adelante), los archivos de bloques y las bases de datos no son compatibles con versiones anteriores de Bitcoin Core u otro software:
Los bloques se almacenarán en el disco desordenados (realmente en el orden en que se reciben), lo que lo hace incompatible con algunas herramientas u otros programas. La reindexación usando versiones anteriores tampoco funcionará como resultado de esto.
Entonces, ¿cómo analiza el cliente los datos de la versión 0.10 blk? Y por extensión, ¿por qué "los encabezados primero" cambian la estructura en absoluto, dado que parece configurar lógicamente "una plantilla" para que se asienten los datos Tx?
Habiendo probado con el BlockStore de NBitcoin , el formato es el mismo. Los archivos BLK son solo bloques casi en bruto (tiene un pequeño encabezado adicional)
Cualquier bloque almacenado en este archivo tiene la red a la que pertenece con su tamaño, seguido de los datos del bloque. La base de datos leveldb apunta a esos bloques por su (fileId, offset).
Sin embargo, el orden cambió, yo mismo usé el hecho de que esos bloques se ordenaron en el pasado para construir la cadena de encabezado desde la carpeta bitcoin. Tal código se rompería ahora. (Ahora me estoy conectando directamente al nodo del mismo nivel en lugar de depender de la carpeta de bloques)
Según tengo entendido, es solo que los bloques se almacenan en un orden diferente. La primera sincronización de encabezados hace uso de descargas paralelas y los bloques se descargan (y luego se almacenan) fuera de orden. Solía ser el caso en versiones anteriores que los bloques se descargaban y luego se almacenaban en orden, por lo que agregaron el comentario al LÉAME.
Creo que no cambia la estructura de cómo se almacena cualquier bloque individual, solo que ahora es probable que no estén en el orden correcto.
mago de ozzie
codificador morse
mago de ozzie