Segmentierungsfehler beim Laden von Checkpoints - altcoin dev

Ich habe versucht, den Quellcode von Bitcoin zu klonen und eine völlig neue Blockchain auszuführen. Ich war erfolgreich bei der Änderung der Anfangsparameter wie z

  • pszZeitstempel
  • nZeit
  • nAnkündigen

Generierte einen Genesis-Block und ersetzte die fest codierten Werte von

  • konsens.hashGenesisBlock
  • genesis.hashMerkleRoot

Die obigen Schritte haben den Genesis-Block erfolgreich generiert. Aber danach versucht der Bitcoin-Kern, die Prüfpunkte (glaube ich) von der Festplatte zu laden, und führt zu einem Fehler.

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

Es gab einen Thread, in dem erklärt wurde, wie der Code daran gehindert werden kann, nach Checkpoints zu suchen. https://bitcointalk.org/index.php?topic=225690.0 Aber der Thread ist veraltet und der Code hat viele Änderungen erfahren.

Ich brauche etwas Hilfe, um den Fehler zu lösen und die ersten paar Blöcke zu instaminieren und sie auch im Code fest zu codieren.

Das erste, was Sie tun müssen, wenn Sie einen Segfault haben, ist, Ihren Debugger zu verwenden, um einen Backtrace zu erhalten und die Werte relevanter Variablen zu überprüfen - haben Sie das getan?
Ich bekomme genau den gleichen Fehler. konntest du es lösen?
@subodh1989 leider nein. Um dies mit dem von mir bereitgestellten Forum-Link zu erreichen. Wir müssen buchstäblich alles von der Git-Version bis zur Openssl-Version zurücksetzen. Dann kann es funktionieren.
Ich habe dieses Problem gelöst. Überprüfen Sie meine Frage und Antwort.

Antworten (2)

Versuchen Sie, die Blockdateien zu löschen. Dieser Fehler signalisiert, dass der Arbeitsnachweis für den geladenen Block falsch ist.

Ich habe versucht, den gesamten Bitcoin-Ordner aus ~/Library/Application\Support/ zu löschen, bevor ich versucht habe, dies auszuführen. immer noch der gleiche Fehler
Haben Sie einen der Proof-of-Work-Codes geändert?
Nein, nur die Dinge, die ich oben erwähnt habe. -pszTimestamp -nTime -nNounce -consensus.hashGenesisBlock -genesis.hashMerkleRoot
Hat der neue Block genügend Arbeitsnachweise?
Ich habe noch nicht einmal mit dem Mining (oder Instaminieren) der Anfangsblöcke begonnen, die als checkpointData in chainparams.cpp fest codiert werden müssen, wenn Sie das fragen!
Nein, ich frage, ob Ihr Genesis-Block genügend Arbeitsnachweise hat. Mit wie vielen Nullen beginnt der Block-Hash?
keine Nullen.0xc9b9f1fec2c0d161183f01e781a390f56d251b359ee07933bc2ac7bc009a1726
Versuchen Sie, einen Genesis-Block mit genügend PoW zu verwenden.
Wie erreiche ich das? Ich habe versucht, dies zu verwenden, um einen Genesis-Block zu generieren. github.com/lhartikk/GenesisH0
Ja, das Programm sieht so aus, als würde es funktionieren.
Ich habe ein paar verschiedene Genesis-Blöcke ausprobiert, konnte aber keinen Hash mit vielen vorangestellten Nullen bekommen. Außerdem dachte ich, dass es auch einen anderen Grund geben könnte, da der Litecoin-Code keinen solchen Hash in seinem Code hat! Genesis-Hash von Litecoin

Überprüfen Sie auch Checkpoints, vielleicht hilft das!

meinst du mit checkpoints die checkpoints.cpp ?
ja, hängt von der Codeversion ab, auch Checkpoints in chainparams.cpp