【区块链 | 智能合约】Ethereum源代码(10)- 以太坊Downloader源码分析

区块链(Web3)开发工程师 2022-11-24 15:43:16 阅读数:203

区块源代码智能合约ethereum

上一节分析到Fetcher用于同步网络节点的新区块和新的交易数据,如果新区块和本地最新的区块相隔距离较远,说明本地区块数据太旧,Fetcher就不会同步这些区块。这时候就要借助Downloader来同步完整的区块数据。

一,启动Downloader
handler 初始化的时候会进行Downloader的初始化:

eth/handler.go:196 newHandler()
// Construct the downloader (long sync) 构建下载器(长同步)
h.downloader = downloader.New(h.checkpointNumber, config.Database, h.eventMux, h.chain, nil, h.removePeer, success)
// New creates a new downloader to fetch hashes and blocks from remote peers. 创建一个新的下载器以从远程对等端获取哈希和块。
func New(checkpoint uint64, stateDb ethdb.Database, mux *event.TypeMux, chain BlockChain, lightchain LightChain, dropPeer peerDropFn, success func()) *Downloader {
if lightchain == nil {
lightchain = chain
}
dl := &Downloader{
stateDB: stateDb,
mux: mux,
checkpoint: checkpoint,
queue: newQueu
版权声明:本文为[区块链(Web3)开发工程师]所创,转载请带上原文链接,感谢。 https://web3dapp.blog.csdn.net/article/details/127917499