上一节分析到Fetcher用于同步网络节点的新区块和新的交易数据,如果新区块和本地最新的区块相隔距离较远,说明本地区块数据太旧,Fetcher就不会同步这些区块。这时候就要借助Downloader来同步完整的区块数据。文章来源:https://www.toymoban.com/news/detail-606012.html
一,启动Downloader
handler 初始化的时候会进行Downloader的初始化:文章来源地址https://www.toymoban.com/news/detail-606012.html
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
到了这里,关于【区块链 | 智能合约】Ethereum源代码(10)- 以太坊Downloader源码分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!