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

本文深入探讨以太坊Downloader模块,它负责同步完整的区块数据。从启动Downloader、同步数据方法到详细的数据同步过程,揭示了Downloader如何在不同模式下工作,特别是FastSync模式下的区块、状态和交易数据处理。通过对getHeaders、fillHeaderSkeleton等关键方法的分析,揭示了以太坊区块链同步的复杂而精妙的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一节分析到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
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

区块链(Web3)开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值