The standard bitcoin-qt/bitcoind client has an option -checklevel
which purports to perform various checks on the block data stored on disk. Is there current documentation (other than the source) describing specifically what is checked at the different levels?
The function VerifyDB
in the source has brief comments describing the levels:
// 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
It would be nice to see these explained in terms of the Bitcoin protocol. For example, are block hashes verified? Do we check that all the blocks in the chain correctly link back to one another? Are transaction signatures verified? Et cetera.