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).