Der standardmäßige bitcoin-qt/bitcoind-Client verfügt über eine Option -checklevel
, die vorgibt, verschiedene Überprüfungen der auf der Festplatte gespeicherten Blockdaten durchzuführen. Gibt es eine aktuelle Dokumentation (außer der Quelle), die genau beschreibt, was auf den verschiedenen Ebenen geprüft wird?
Die Funktion VerifyDB
in der Quelle enthält kurze Kommentare, die die Ebenen beschreiben:
// check level 0: read from disk
// check level 1: verify block validity
// check level 2: verify undo validity
// check level 3: check for inconsistencies during memory-only disconnect of tip blocks
Es wäre schön, diese anhand des Bitcoin-Protokolls erklärt zu sehen. Werden beispielsweise Block-Hashes verifiziert? Prüfen wir, ob alle Blöcke in der Kette korrekt miteinander verknüpft sind? Werden Transaktionssignaturen verifiziert? Und so weiter.
Die andere Antwort scheint selbst zum Zeitpunkt der Beantwortung veraltet zu sein. Das Folgende scheint eine aktuellere Erklärung zu sein: Von https://bitcointalk.org/index.php?topic=141200.msg1504768#msg1504768
Beachten Sie, dass die neue Standardeinstellung (3) tatsächlich eine stärkere Überprüfung ist als die vorherige höchste Stufe (6).
Überprüfen Sie die Kommentare in diesem Commit https://gitorious.org/bitcoin/luke-jr-bitcoin/commit/4538e45c46d3829a21aed7685e6fbac7e8aafad3
Add -checklevel and improve -checkblocks
-checkblocks now takes a numeric argument: the number of blocks that must be verified at the end of the chain. Default is 2500, and 0 means all blocks.
-checklevel specifies how thorough the verification must be:
0: only check whether the block exists on disk
1: verify block validity (default)
2: verify transaction index validity
3: check transaction hashes
4: check whether spent txouts were spent within the main chain
5: check whether all prevouts are marked spent
6: check whether spent txouts were spent by a valid transaction that consumes them