月亮链 月亮链
Ctrl+D收藏月亮链
首页 > OKB > 正文

PEER:以太坊主动数据同步简析_以太坊

作者:

时间:1900/1/1 0:00:00

一、前言

开门见山,以太坊数据同步是以节点作为数据载体存放和传输主要以Header,Body,Reciept组成的数据主体,通过以太坊p2p通信协议管理数据同步事务,最后交给执行器执行最后的数据下载任务。

那么问起数据主体我们进行同步需要同步哪些数据?不同数据又是否需要分类同步?

知道创宇区块链安全实验室?进行了全面而详细的分析。

二、数据主体:

进行数据同步首先需要明确我们同步的数据主体由什么组成,笼统来分有两类,一类不需要节点发送主动同步请求,节点会在完成数据打包的时候自行向网络广播,这一类数据有三种——完整block,区块hash,和交易Transaction。而我们今天重点探讨下一类数据。

第二类数据是需要节点主动发送同步请求随后其他节点响应才能进行同步的数据,除了第一类数据其他需要同步的数据都属于第二类,所以可以说他的种类更加繁杂,而其中最重要的也有三种——区块头Header,区块体Body,交易回执Receipt,跟第一类不同这三者可以说都是完整区块的某一组成部分,这也显示了主动同步希望节点进行数据同步时范围自由可控,能够优先同步必要数据而放弃同步暂时非必要的数据。

以太坊桥TVL达到117.7亿美元:金色财经报道,Dune Analytics数据显示,以太坊桥当前TVL达到117.7亿美元。其中锁仓量最高的5个桥分别是Polygon Bridges(41.11亿美元)、Arbitrum Bridges(24.7亿美元)、Avalanche Bridge(21.4亿美元)、Near Raibow(9.71亿美元)、Fantom Anyswap Bridge(9.7亿美元)。[2022/6/17 4:35:39]

?Header表示区块头,在区块里扮演这相当重要的角色,ParentHash会记录上一个区块的区块hash,uncleHash会记录叔块hash,coinbase则标识矿工地址。Root,Txhash,ReceiptHash这三个分别是statetrie,txtrie,Receipt.trie三个前缀树的根节点RLP编码hash一个用于描述世界状态,一个用于描述交易,一个用于描述交易回执。bloom是区块头中的布隆过滤器用于快速判断目标hash是否在某个集合中。Header中以上数据都是区块头用来对区块以及区块中重要数据模块利用hash进行标识的。剩下的数据则各有他用不细赘述。可以看出一个区块头其实已经将一个区块框架基本描述出来了这也为后面谈到的数据同步策略埋下了伏笔。

摩根大通:以太坊的高昂gas费和网络拥塞给智能合约平台带来了巨大风险:金色财经报道,银行业巨头摩根大通在最新报告中表示,以太坊的高昂gas费和网络拥塞给智能合约平台带来了巨大风险。这可能是“以太坊估值的问题”。以太坊可能会失去其 NFT 市场份额给竞争对手 Solana,后者在去年取得了巨大的进展。如果我们看数据,以太坊的 NFT 市场份额已经从 2021 年初的 95% 下降到 80%。摩根大通分析师还指出,数据显示 NFT 玩家已经从以太坊转向 Solana,因为后者的交易速度更快且成本更低。(coingape)[2022/1/20 9:01:25]

?Body就比较简明了,里面包含一组交易对象,和一个叔块的区块头数组。

?Receipt是区块中所有交易对象在执行完成后生成的一个数组,用于记录交易处理信息。他们会在生成后被逐个插入到Receipttrie中同时也会生成区块头中的ReceiptHash。一个交易回执记录了三部分信息用于交易的管理和标识,第一部分为共识部分,PostState,Status,CumulativeGasUsed,Bloom,Logs只有这五个数据在ReceiptRLP会被encode构成回执hash随后回执hash会参与共识的校验,第二部分数据是交易部分,TxHash指的是交易回执所对应的交易哈希,,ContractAddress是当这笔交易是部署新合约时记录新合约的地址,GasUsed表示该笔交易的Gas使用量,第三部分是区块部分,他记录的是BlockHash区块哈希,BlockNumber当前区块数,TransactionIndex该交易在区块中的序号。对于Receipt在数据同步策略中有着直观的区别,下文说到的fullSync和fastSync最直观的区别就在于到底是同步对端的Receipt,还是本地自行生成Receipt。

分析:以太坊竞价升级算法EIP-2593提案是以用户为主导的策略:加密货币研究员hasufl和gakonst联合发布了对EIP-2593 区块空间市场提案的分析,分析称,EIP-2593 更广为人知名字是竞价升级算法或者简称为自动扶梯,被称为改进以太坊交易费机制的 EIP-1559 提案的替代品,因为在设计目标上有很大的重叠。在自动扶梯方案中,用户继续参与区块空间的第一价格拍卖。不过每一笔交易都可以选择为逐步提高的出价提供参数,从而为区块生产者创建一个基于时间的拍卖,以便纳入这笔交易。EIP-2593 引入了用户必须指定的参数,包括用户愿意为交易支付的最低价格、交易有效的第一个区块、发送方为处理此交易愿意支付的最大价格、用户愿意等待处理交易的最后一个区块。EIP-2593 机制向交易中附加一个不断升级的出价,以缓慢地测试最佳出价。从较低的费用开始,有助于避免支付过高的价格,因为矿工应以他们愿意接受的最低价格进行交易。不断升级的价格确保了一笔交易最终被包括在内,前提是交易价格高于网络 gas 费,有助于防止支付不足。不过自动扶梯算法比 EIP-1559 小得多,并且设计范围不同。EIP-1559 拍卖范围也相对较小,即使在目标重叠的地方,结果也很难比较。这两个提案是相辅相成的,尽管不一定是在基础层,但都应该赞同。现在自动扶梯算法已经被使用了,无论是用户手动操作,还是在以太坊进行大量交易的专业服务公司的内部使用。这证明了自动扶梯是用户的主导策略。因此,应该关注的不是自动扶梯算法是否有用,而是它们是否应该在协议内部或外部实现。[2020/6/25]

三、数据载体

声音 | V神:对以太坊治理的质疑没有延误以太坊2.0的开发:以太坊创始人 Vitalik Buterin 在 Reddit 上表示,最近关于以太坊治理的噪音很大,让人不舒服,但是这并没有耽误以太坊 2.0 的开发进度,Prysmatic、Lighthouse 和 ETH 2.0 研究团队都朝着既定时间表进展,状态通道、Plasma 和 ZK Rollup 的开发也在稳步朝前。Vitalik Buterin 写道:当你押注在以太坊生态时,你其实是在押注这些不出声沉默的军队。[2019/4/14]

数据传输载体为peer节点,这个数据载体peer,如果你在源码里面去认真寻找你会发现,某些角落里就能找到一个peer.go.首先我列出有关数据同步模块我所找到的peer结构。有p2p/peer.go?,eth/peer.go,les/peer.go,eth/downloader/peer.go。以太坊的网络也有传输层,会话层,表示层和协议层。

那p2p包中的peer扮演了一个底层的节点模型,传输层会基于UDP协议发现相邻peer并维持peer连接,还会基于TCP协议建立peer之间的信息交流通道。会话层Peer管理主要管理的是节点和上层子协议的交互,而NodeTable管理主要管理的是底层基于udp协议构建的节点连接表table。所以p2p这一层的peer节点他需要能获取和开启子协议的能力,还需要有ping通其他节点的能力当然还要去接受其他节点消息。这就体现在p2p/peer.go中的3个重要功能模块,pingLoop,readLoop,startProtocols而这也是peer.run()方法里的3个函数。

韩国SK telecom加入企业以太坊联盟(EEA):1日根据业内人士透露,韩国SK telecom公司最近加入了EEA。SK telecom公司的一位负责人说“根据评估区块链技术应用必要性的需求所以加入了企业以太坊联盟,但是这与虚拟货币无关”。SK telecom是韩国大型企业中仅次于三星SDS第二个加入企业以太坊联盟的公司。[2018/2/1]

可以看出上面是底层peer结构,下图则是子协议层的peer结构,不同的子协议层会有不同的peer结构,这也就是为什么会有eth/peer.go和les/peer.go毕竟不同子协议应用于不同的数据场景。

我们可以看出数据载体有底层peer,和子协议层peer,而进行数据同步需要利用通信协议管理连接两层peer,由底层实现peer的消息分发,消息的监听,子协议层peer执行数据的下载和同步,而这两层之间就需要非常重要的protocolManger进行管理和沟通。

四、数据同步流程

那么如何启动protocolManager呢?我们上面介绍了peer结构,他主要是代表远程其他节点,在以太坊中还有一类同样是代表了节点的结构Node,他主要代表了本地节点自身会稍微有点区别,而节点想要启动p2p网络就要依靠本地Node模块,其中利用Node.Start()函数开启了两个任务,一个是启动EthereumService,其中的Ethereum.start就启动了protocolmanager;另一个是启动p2p.Server,新建并刷新K桶,开启UDP端口监听,同时监听TCP端口,处理从远端节点发来的message。

当protocolManager启动了之后,他就开始需要连接底层逻辑层peer和顶层协议层peer:

当启动了protocolManager,首先节点会进行初始化,调用NewProtocolManager,初始化的过程中会调用SubProtocol函数向地城p2p.peer获取一个消息读写通道,然后再构建一个消息处理器Handle,Handle,他不仅会接受请求同步的消息,也会接受节点响应的消息,在protocolManger的start方法中他会启动一个定期同步协程syncer,他会根据消息通知调用fecher或者downloader执行器执行数据同步。

数据同步模式

主动数据同步指的是本地节点自发的向相邻节点请求区块数据,数据入口在eth/downloader/downloader,和eth/handler里

被动数据同步指本地节点收到其他节点数据同步消息而后请求区块数据,数据入口在eth/fetcher/fetcher.go

主动同步流程我们以主动同步为例,当调用downloader执行器时,他会先调用findAncestor找到本地链和远程链的共同祖先,从共同祖先开始同步,他会配置4个fetchers,分别是fetcherHeader,fetcherBodies,fetcherReceipts,ProcessHeaders最后根据同步模式调用收到processFullSyncContent和processFastSyncContent最后调用spawnSync执行同步。

以上为同步过程的源码,从源码里可以看出主要的下载任务是集中在他构造的可拓展fetchers里,他是一个fetcher任务队列。而根据不同的数据同步策略他的fetcher任务队列不仅构造不同,fetcher之间的协作流程也不尽相同。

五、数据同步策略

fetcher任务队列的作用概括起来就是在进行,数据填充,数据组装,和最后的数据插入。而其中填充什么样的数据,那些数据需要组装,什么时候插入数据,均由一个重要的数据结构mode进行标识,他代表了数据同步策略,主要分为三种。

lightSync?:轻节点同步,数据填充的时候只填充区块头数据,不需要进行数据组装,调用insertHeaderchain直接插入区块头。

fullSync?:全节点同步,数据填充的时候需要填充区块头Header,区块体Body,但不填充交易回执Receipt,将数据组装到结果集Result,之后调用importBlockResults将结果集内数据插入到主链,和lightSync区别在于轻节点同步没有区块体,所以他不会执行和验证交易而fullSync全节点同步会在插入数据的同时执行交易并验证这也是他为什么同步速度慢的原因,之后会自行生成交易回执Receipt,所以他在填充组装的时候不需要Receipt参与。

fastSync?:快速同步,数据填充的时候会填充Header,Body,同时也会填充Receipt,然后组装3个数据,执行数据插入,而在执行数据插入的时候和fullSync,lightSync完全不同,他调用的commitFastSyncData这个函数和fullSync全节点同步调用的importBlockResults不一样他不会执行交易而只是提交同步数据,所以他为了保证安全加了一步验证获取来的交易回执。而这也才是快速同步的一部分,快速同步为了保证数据的安全性古老的区块会使用上述方法同步,对于时间上来说比较新的区块会使用fullSync的同步模式进行同步。用而言之就是fastSync会快速同步一大部分而一小部分还是会按照fullSync的同步模式同步。

六、结语

以太坊数据同步非常复杂,他涵盖了其网络架构,通信协议管理,数据传输通道的相互配合,数据同步策略的安排,以及加速数据同步速率的算法。其中还有众多细节和逻辑关系。而数据同步是区块链节点和外界通信的基石他还有更多的架构彩蛋令人拍案叫绝。期待后续文章和大家分享。

标签:PEEREER以太坊SYNCPeerguessSTEER价格以太坊币多少钱一个SYNCBRAIN价格

OKB热门资讯
Gate.io Startup:Karmaverse (KNOT) Initial Sale Result & Listing Schedule

1Karmaverse(KNOT)TokenSaleResultTheGate.ioStartupKarmaverse(KNOT)saleresultisasfollows:KNOTStartu.

1900/1/1 0:00:00
ONO:关于宇宙富豪Monopolon的派系你需要知道的一切_Monopolon

什么是宇宙富豪Monopolon?小时候大家都玩过"大富翁"游戏----用一对骰子和一叠纸币组成的单人棋盘游戏.

1900/1/1 0:00:00
DAO:DAO迈向合规化:为何主流DAO组织纷纷成立基金会?_COI

作者:RichardLee,链捕手“2022年是DAO爆发的元年。”这是2021年终盘点时,各路预测集体看好的趋势之一.

1900/1/1 0:00:00
Chain:声誉代币,Web3世界的社交名片?_EXRNchain

翻译:PonziCurator编辑&排版:Vera本文来自TheSeeDAO。重新思考一个问题:在以社区为本的去中心化元宇宙中,我们应如何更好地建立声誉机制、认同机制和奖赏机制.

1900/1/1 0:00:00
ETH:Foresight Ventures市场周报:市场多维度向好,链游赛道融资加速_etha币价格

现货观点:本周BTC持续上涨。技术层面是整体偏多,BTC处于周线级别调整尾声,当前上涨距离牛熊分界线已是近在眼前。ETH周线级别突破,这次ETH明显强于BTC,主要是转POS减产影响.

1900/1/1 0:00:00
USD:OneRing Finance闪电贷攻击事件分析_NCE

前言北京时间2022年3月22日,知道创宇区块链安全实验室?监测到Fantom生态稳定币收益优化器OneRingFinance遭到闪电贷攻击,黑客窃取逾145万美元.

1900/1/1 0:00:00