github.com/KYVENetwork/cometbft/v38@v38.0.3/docs/core/block-sync.md (about) 1 --- 2 order: 10 3 --- 4 5 # Block Sync 6 7 *Formerly known as Fast Sync* 8 9 In a proof of work blockchain, syncing with the chain is the same 10 process as staying up-to-date with the consensus: download blocks, and 11 look for the one with the most total work. In proof-of-stake, the 12 consensus process is more complex, as it involves rounds of 13 communication between the nodes to determine what block should be 14 committed next. Using this process to sync up with the blockchain from 15 scratch can take a very long time. It's much faster to just download 16 blocks and check the merkle tree of validators than to run the real-time 17 consensus gossip protocol. 18 19 ## Using Block Sync 20 21 When starting from scratch, nodes will use the Block Sync mode. 22 In this mode, the CometBFT daemon 23 will sync hundreds of times faster than if it used the real-time consensus 24 process. Once caught up, the daemon will switch out of Block Sync and into the 25 normal consensus mode. After running for some time, the node is considered 26 `caught up` if it has at least one peer and its height is at least as high as 27 the max reported peer height. See [the IsCaughtUp 28 method](https://github.com/KYVENetwork/cometbft/v38/blob/v0.38.x/blocksync/pool.go#L168). 29 30 Note: While there have historically been multiple versions of blocksync, v0, v1, and v2, all versions 31 other than v0 have been deprecated in favor of the simplest and most well understood algorithm. 32 33 ```toml 34 ####################################################### 35 ### Block Sync Configuration Options ### 36 ####################################################### 37 [blocksync] 38 39 # Block Sync version to use: 40 # 41 # In v0.37, v1 and v2 of the block sync protocols were deprecated. 42 # Please use v0 instead. 43 # 44 # 1) "v0" - the default block sync implementation 45 version = "v0" 46 ``` 47 48 If we're lagging sufficiently, we should go back to block syncing, but 49 this is an [open issue](https://github.com/tendermint/tendermint/issues/129).