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

上一节分析到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

猜你喜欢

转载自blog.csdn.net/qq_28505809/article/details/127917499