Skip to main content
1 of 3

How to generate a checkpoint for checkpoint.cpp?

I'd like to know how checkpoints for the monero network are formed and hardcoded in the checkpoint.cpp. Especially when having a fresh fork with the first genesis block having to be made. How to effectively generate the very first checkpoint?

From the Monero source code:

    ADD_CHECKPOINT2(1,     "771fbcd656ec1464d3a02ead5e18644030007a0fc664c0a964d30922821a8148", "0x2");
    ADD_CHECKPOINT2(10,    "c0e3b387e47042f72d8ccdca88071ff96bff1ac7cde09ae113dbb7ad3fe92381", "0x2a974");
    ADD_CHECKPOINT2(100,   "ac3e11ca545e57c49fca2b4e8c48c03c23be047c43e471e1394528b1f9f80b2d", "0x35d14b");
    ADD_CHECKPOINT2(1000,  "5acfc45acffd2b2e7345caf42fa02308c5793f15ec33946e969e829f40b03876", "0x36a0373");
    ADD_CHECKPOINT2(10000, "c758b7c81f928be3295d45e230646de8b852ec96a821eac3fea4daf3fcac0ca2", "0x60a91390");

What are those values? Height, block hash, checksum? How are those created specifically?

Additionally, it would be useful to know what effect the PER_BLOCK_CHECKPOINT flag has on checkpoints in general.