<p>A Checkpoint is the header hash permitted at a given height, thereby hardcoding the chain that the validating node must follow. If a node follows an alternative chain branch which reaches the same height, this branch can now be identified as such and rejected. This was initially designed to protect a node from following an alternative long branch, especially generated with low difficulty, which could be so long that it would challenge the available resources of the validating node.</p>

<p>Validation used to be skipped prior to checkpoints, but that is no longer the case. Validation is skipped up to "known blocks", but only if these are found in the strongest chain. Today, checkpoints don't reduce chain sync time.</p>

CC BY-SA 4.0
2019-02-07T20:44:57.280Z
What's "known blocks"? Is that a separate list from checkpoints?
pinhead
CC BY-SA 4.0
2019-02-07T20:47:16.373Z
Yes. When syncing the node will first build the strongest header chain, and if known blocks are included, it will download all blocks but skip validation up to the known block. However, unlike checkpoints, if the strong header chain does not include any known blocks, this is ok and validation will begin from genesis.
James C.
CC BY-SA 4.0
2019-02-07T20:58:18.850Z
Its confusing, checkpoints guard against following chain branches other than ones formed thru checkpoints. Known blocks are from known branches so validation can be skipped, but a node mustn’t necessarily follow known branches.
James C.
CC BY-SA 4.0
2019-02-07T22:21:07.027Z
@JamesC. In Bitcoin Core (assuming that's what the question is about), the "known blocks" feature is called "assumevalid", and you can configure it yourself. It is indeed independent from checkpoints.
Pieter Wuille
CC BY-SA 4.0
2019-02-07T20:13:22.793Z
2019-02-07T20:13:22.793Z
James C.
<p>I've seen some guides that suggest that initial sync time for a new full node can be accelerated by setting <code>checkpoints: false</code> but I don't understand why that would be the case. My thinking is the opposite would be true, because bitcoind won't bother fully verifying blocks below checkpoint height?</p>

CC BY-SA 4.0
2019-02-07T22:20:12.983Z
What software is this question about?
Pieter Wuille
CC BY-SA 4.0
2019-02-08T01:50:55.930Z
I'm asking about Bitcoin Core. Although the speedup I heard about was in reference to lcoin (the litecoin fork of bcoin). In that case I think checkpoints actually prevented the node from getting blocks from peers since the network is so much smaller and the checkpoints are "too far apart"
pinhead
<synchronization><checkpoints>
Do checkpoints affect initial chain sync time?
pinhead
# Do checkpoints affect initial chain sync time?

(Asked by: username_0 on 2019-02-07)

I've seen some guides that suggest that initial sync time for a new full node can be accelerated by setting `checkpoints: false` but I don't understand why that would be the case. My thinking is the opposite would be true, because bitcoind won't bother fully verifying blocks below checkpoint height?

**Tags:** synchronization, checkpoints

> **Comments:**
> **username_1**: What software is this question about?  
> **username_0**: I'm asking about Bitcoin Core. Although the speedup I heard about was in reference to lcoin (the litecoin fork of bcoin). In that case I think checkpoints actually prevented the node from getting blocks from peers since the network is so much smaller and the checkpoints are "too far apart"  

---

## 1 answers

### Answer by username_2 on 2019-02-07. Score: 2

A Checkpoint is the header hash permitted at a given height, thereby hardcoding the chain that the validating node must follow. If a node follows an alternative chain branch which reaches the same height, this branch can now be identified as such and rejected. This was initially designed to protect a node from following an alternative long branch, especially generated with low difficulty, which could be so long that it would challenge the available resources of the validating node.

Validation used to be skipped prior to checkpoints, but that is no longer the case. Validation is skipped up to "known blocks", but only if these are found in the strongest chain. Today, checkpoints don't reduce chain sync time.

> **Comments:**
> **username_0**: What's "known blocks"? Is that a separate list from checkpoints?  
> **username_2**: Yes. When syncing the node will first build the strongest header chain, and if known blocks are included, it will download all blocks but skip validation up to the known block. However, unlike checkpoints, if the strong header chain does not include any known blocks, this is ok and validation will begin from genesis.  
> **username_2**: Its confusing, checkpoints guard against following chain branches other than ones formed thru checkpoints. Known blocks are from known branches so validation can be skipped, but a node mustn’t necessarily follow known branches.  
> **username_1**: @JamesC. In Bitcoin Core (assuming that's what the question is about), the "known blocks" feature is called "assumevalid", and you can configure it yourself. It is indeed independent from checkpoints.  

---

