It is the set of block hashes from the genesis block to a fairly recent block, and is used to speed sync up for historical blocks. It is typically updated shortly before a new release.
Those hashes are stored as is so they can be read without having to parse hex strings, which would be slower and use more memory.
To calculate checkpoints.dat
for yourself, sync the blockchain past the latest checkpoint height (For example, height 2606000 for release v0.17.3.2). Then run the following commands to generate a list of block hashes:
monero-blockchain-export --block-stop <aforementioned height> --blocksdat --output-file mycheckpoints.dat
You can compare the generated file against the checkpoints.dat
in the source tree:
diff mycheckpoints.dat /path_to_monero_repo/src/blocks/checkpoints.dat
You may have noticed the value expected_block_hashes_hash
in the "Release Checklist" document. This is a simple SHA-256 digest of checkpoints.dat
. This value should be equal to the value of:
sha256sum src/blocks/checkpoints.dat
This value is used to double-check the integrity of the checkpoints.dat
file.