Error de segmentación al cargar puntos de control - altcoin dev

Estaba tratando de clonar el código fuente de bitcoin y ejecutar una cadena de bloques completamente nueva. Tuve éxito en cambiar los parámetros iniciales como

  • pszTimestamp
  • nTiempo
  • nNounce

Generó un bloque de génesis y reemplazó los valores codificados de

  • consenso.hashGenesisBlock
  • genesis.hashMerkleRoot

Los pasos anteriores generaron con éxito el bloque de génesis. Pero después de eso, el núcleo de bitcoin intenta cargar los puntos de control (creo que sí) desde el disco y da como resultado un error.

2017-07-31 21:06:42 Bitcoin version v0.14.99.0-42307c4bf-dirty
2017-07-31 21:06:42 InitParameterInteraction: parameter interaction: -whitelistforcerelay=1 -> setting -whitelistrelay=1
2017-07-31 21:06:42 Assuming ancestors of block 0000000000000000003b9ce759c2a087d52abc4266f8f4ebd6d768b89defa50a have valid signatures.
2017-07-31 21:06:42 Using the 'standard' SHA256 implementation
2017-07-31 21:06:42 Using RdRand as an additional entropy source
2017-07-31 21:06:42 Default data directory /Users/username/Library/Application Support/Bitcoin
2017-07-31 21:06:42 Using data directory /Users/username/Library/Application Support/Bitcoin
2017-07-31 21:06:42 Using config file /Users/username/Library/Application Support/Bitcoin/bitcoin.conf
2017-07-31 21:06:42 Using at most 125 automatic connections (4864 file descriptors available)
2017-07-31 21:06:42 Using 16 MiB out of 32/2 requested for signature cache, able to store 524288 elements
2017-07-31 21:06:42 Using 16 MiB out of 32/2 requested for script execution cache, able to store 524288 elements
2017-07-31 21:06:42 Using 2 threads for script verification
2017-07-31 21:06:42 scheduler thread start
2017-07-31 21:06:42 HTTP: creating work queue of depth 16
2017-07-31 21:06:42 No rpcpassword set - using random cookie authentication
2017-07-31 21:06:42 Generated RPC authentication cookie /Users/username/Library/Application Support/Bitcoin/.cookie
2017-07-31 21:06:42 HTTP: starting 4 worker threads
2017-07-31 21:06:42 init message: Verifying wallet(s)...
2017-07-31 21:06:42 Using BerkeleyDB version Berkeley DB 4.8.30: (April  9, 2010)
2017-07-31 21:06:42 Using wallet wallet.dat
2017-07-31 21:06:42 CDBEnv::Open: LogDir=/Users/username/Library/Application Support/Bitcoin/database ErrorFile=/Users/username/Library/Application Support/Bitcoin/db.log
2017-07-31 21:06:42 Cache configuration:
2017-07-31 21:06:42 * Using 2.0MiB for block index database
2017-07-31 21:06:42 * Using 8.0MiB for chain state database
2017-07-31 21:06:42 * Using 440.0MiB for in-memory UTXO set (plus up to 286.1MiB of unused mempool space)
2017-07-31 21:06:42 init message: Loading block index...
2017-07-31 21:06:42 Opening LevelDB in /Users/username/Library/Application Support/Bitcoin/blocks/index
2017-07-31 21:06:42 Opened LevelDB successfully
2017-07-31 21:06:42 Using obfuscation key for /Users/username/Library/Application Support/Bitcoin/blocks/index: 0000000000000000
2017-07-31 21:06:42 Opening LevelDB in /Users/username/Library/Application Support/Bitcoin/chainstate
2017-07-31 21:06:42 Opened LevelDB successfully
2017-07-31 21:06:42 Using obfuscation key for /Users/username/Library/Application Support/Bitcoin/chainstate: 7bbd099730c6ddd0
2017-07-31 21:06:42 LoadBlockIndexDB: last block file = 0
2017-07-31 21:06:42 LoadBlockIndexDB: last block file info: CBlockFileInfo(blocks=0, size=0, heights=0...0, time=1970-01-01...1970-01-01)
2017-07-31 21:06:42 Checking all blk files are present...
2017-07-31 21:06:42 LoadBlockIndexDB: transaction index disabled
2017-07-31 21:06:42 Initializing databases...
2017-07-31 21:06:42 Pre-allocating up to position 0x1000000 in blk00000.dat
2017-07-31 21:06:42 init message: Verifying blocks...
2017-07-31 21:06:42  block index             208ms
2017-07-31 21:06:42 init message: Loading wallet...
2017-07-31 21:06:42 nFileVersion = 149900
2017-07-31 21:06:42 Keys: 2001 plaintext, 0 encrypted, 2001 w/ metadata, 2001 total
2017-07-31 21:06:42  wallet                  127ms
2017-07-31 21:06:42 setKeyPool.size() = 1999
2017-07-31 21:06:42 mapWallet.size() = 0
2017-07-31 21:06:42 mapAddressBook.size() = 1
2017-07-31 21:06:42 ERROR: ReadBlockFromDisk: Errors in block header at CBlockDiskPos(nFile=0, nPos=8)
2017-07-31 21:06:42 *** Failed to read block
2017-07-31 21:06:42 Error: Error: A fatal internal error occurred, see debug.log for details

Había un hilo que explicaba cómo bloquear el código para que no compruebe los puntos de control. https://bitcointalk.org/index.php?topic=225690.0 Pero el hilo está desactualizado y el código ha sufrido muchos cambios.

Necesito ayuda para resolver el error y proceder a instalar los primeros bloques y codificarlos también en el código.

Lo primero que debe hacer cuando tiene un error de segmento es usar su depurador para obtener un seguimiento e inspeccionar los valores de las variables relevantes. ¿Lo ha hecho?
estoy recibiendo el mismo error exacto. pudiste solucionarlo?
@ subodh1989 desafortunadamente, no. Para lograrlo con el enlace del foro que proporcioné. Necesitamos revertir literalmente todo, desde la versión de git hasta la versión de openssl. Entonces puede funcionar.
Resolví este problema. revisa mi pregunta y respuesta.

Respuestas (2)

Intente eliminar los archivos de bloque. Ese error indica que la prueba de trabajo en el bloque cargado es incorrecta.

Intenté eliminar toda la carpeta de bitcoin de ~/Library/Application\ Support/ antes de intentar ejecutar esto. sigue con el mismo error
¿Cambió alguno de los códigos de prueba de trabajo?
No, solo las cosas que mencioné anteriormente. - pszTimestamp - nTime - nNounce - consenso.hashGenesisBlock - genesis.hashMerkleRoot
¿El nuevo bloque tiene suficiente prueba de trabajo?
¡No he comenzado a extraer (o instalar) ni siquiera los bloques iniciales que deben codificarse como checkpointData en chainparams.cpp si eso es lo que está preguntando!
No, estoy preguntando si su bloque de génesis tiene suficiente prueba de trabajo. ¿Con cuántos ceros comienza el hash del bloque?
sin ceros0xc9b9f1fec2c0d161183f01e781a390f56d251b359ee07933bc2ac7bc009a1726
Intente usar un bloque de génesis con suficiente PoW.
¿Cómo logro eso? Estaba tratando de usar esto para generar un bloque de génesis. github.com/lhartikk/GénesisH0
Sí, ese programa parece que funcionaría.
Probé un par de bloques de Génesis diferentes, pero no logré obtener un hash con muchos ceros anteriores. Además, estaba pensando que también podría haber alguna otra razón, ya que el código de litecoin no tiene ese hash en su código. hash de génesis de litecoin

También verifique los puntos de control, ¡tal vez esto ayude!

por puntos de control, ¿te refieres a checkpoints.cpp?
sí, depende de la versión del código, también de los puntos de control en chainparams.cpp