Advanced Blockchain Development
上QQ阅读APP看书,第一时间看更新

Fast synchronization

At the time of writing this book, the blockchain size is around 30 GB. Downloading it may take several hours or days if you have a slow Internet connection. Ethereum implements a fast synchronization algorithm, which can download the blockchain faster.

Fast synchronization doesn't download the entire blocks; instead, it only downloads the block headers, transactions receipts, and the recent state database. So, we don't have to download and replay all transactions. To check blockchain integrity, the algorithm downloads a full block after every defined number of blocks. To learn more about fast synchronization algorithm, visit https://github.com/ethereum/go-ethereum/pull/1889.

To use fast sync while downloading the blockchain, you need to use the --fast flag while running geth.

Due to security reasons, fast sync will only run during an initial sync (that is, when the node's own blockchain is empty). After a node manages to successfully sync with the network, fast sync is forever disabled. As an additional safety feature, if a fast sync fails close to or after the random pivot point, it is disabled as a safety precaution, and the node reverts to full, block-processing-based synchronization.