<p>The short answer is no, because you can run Bitcoin Core with -nocheckpoints, and different versions may have different checkpoints.</p>

<p>The long answer is that it doesn't matter. If checkpoints ever actually prevent a reorganization of a fully synchronized client, it means that the assumptions on which Bitcoin's security relies (collusion of a majority of hashpower to rewrite the blockchain is too uneconomical to ever be a problem) are fundamentally broken. Checkpoints are not a security feature for this reason, and are often mistaken for one.</p>

CC BY-SA 3.0
2015-08-15T13:42:42.137Z
2015-08-15T13:42:42.137Z
Pieter Wuille
<p>The core Bitcoin client has a list checkpoints - blocks where it will only accept a particular block header. This means that if someone builds a blockchain with more work that does not include these checkpoints, Bitcoin Core will not accept it:</p>

<p>There are currently 13 checkpoints in Bitcoin:</p>

<pre><code>    checkpointData = (Checkpoints::CCheckpointData) {
        boost::assign::map_list_of
        ( 11111, uint256S("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"))
        ( 33333, uint256S("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"))
        ( 74000, uint256S("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
        (105000, uint256S("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"))
        (134444, uint256S("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"))
        (168000, uint256S("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
        (193000, uint256S("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
        (210000, uint256S("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
        (216116, uint256S("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
        (225430, uint256S("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
        (250000, uint256S("0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"))
        (279000, uint256S("0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"))
        (295000, uint256S("0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983")),
        1397080064, // * UNIX timestamp of last checkpoint block
        36544669,   // * total number of transactions between genesis and last checkpoint
                    //   (the tx=... number in the SetBestChain debug.log lines)
        60000.0     // * estimated number of transactions per day after checkpoint
    };
</code></pre>

<p>(<a href="https://github.com/bitcoin/bitcoin/blob/master/src/chainparams.cpp#L120" rel="nofollow">Source.</a>)</p>

<p>Do other Bitcoin clients enforce these checkpoints? In particular, if someone were to create a blockchain from the genesis block longer than the current public one, would some clients accept this chain, causing a fork?</p>

<bitcoin-core><checkpoints>
Do all Bitcoin client enforce checkpoints?
Nick ODell
# Do all Bitcoin client enforce checkpoints?

(Asked by: username_0 on 2015-08-15)

The core Bitcoin client has a list checkpoints - blocks where it will only accept a particular block header. This means that if someone builds a blockchain with more work that does not include these checkpoints, Bitcoin Core will not accept it:
There are currently 13 checkpoints in Bitcoin:
    checkpointData = (Checkpoints::CCheckpointData) {
        boost::assign::map_list_of
        ( 11111, uint256S("0x0000000069e244f73d78e8fd29ba2fd2ed618bd6fa2ee92559f542fdb26e7c1d"))
        ( 33333, uint256S("0x000000002dd5588a74784eaa7ab0507a18ad16a236e7b1ce69f00d7ddfb5d0a6"))
        ( 74000, uint256S("0x0000000000573993a3c9e41ce34471c079dcf5f52a0e824a81e7f953b8661a20"))
        (105000, uint256S("0x00000000000291ce28027faea320c8d2b054b2e0fe44a773f3eefb151d6bdc97"))
        (134444, uint256S("0x00000000000005b12ffd4cd315cd34ffd4a594f430ac814c91184a0d42d2b0fe"))
        (168000, uint256S("0x000000000000099e61ea72015e79632f216fe6cb33d7899acb35b75c8303b763"))
        (193000, uint256S("0x000000000000059f452a5f7340de6682a977387c17010ff6e6c3bd83ca8b1317"))
        (210000, uint256S("0x000000000000048b95347e83192f69cf0366076336c639f9b7228e9ba171342e"))
        (216116, uint256S("0x00000000000001b4f4b433e81ee46494af945cf96014816a4e2370f11b23df4e"))
        (225430, uint256S("0x00000000000001c108384350f74090433e7fcf79a606b8e797f065b130575932"))
        (250000, uint256S("0x000000000000003887df1f29024b06fc2200b55f8af8f35453d7be294df2d214"))
        (279000, uint256S("0x0000000000000001ae8c72a0b0c301f67e3afca10e819efa9041e458e9bd7e40"))
        (295000, uint256S("0x00000000000000004d9b4ef50f0f9d686fd69db2e03af35a100370c64632a983")),
        1397080064, // * UNIX timestamp of last checkpoint block
        36544669,   // * total number of transactions between genesis and last checkpoint
                    //   (the tx=... number in the SetBestChain debug.log lines)
        60000.0     // * estimated number of transactions per day after checkpoint
    };

(Source.)
Do other Bitcoin clients enforce these checkpoints? In particular, if someone were to create a blockchain from the genesis block longer than the current public one, would some clients accept this chain, causing a fork?

**Tags:** bitcoin-core, checkpoints


---

## 1 answers

### Answer by username_1 on 2015-08-15. Score: 4

The short answer is no, because you can run Bitcoin Core with -nocheckpoints, and different versions may have different checkpoints.

The long answer is that it doesn't matter. If checkpoints ever actually prevent a reorganization of a fully synchronized client, it means that the assumptions on which Bitcoin's security relies (collusion of a majority of hashpower to rewrite the blockchain is too uneconomical to ever be a problem) are fundamentally broken. Checkpoints are not a security feature for this reason, and are often mistaken for one.


---

