一、简介
以太坊数据同步是以节点(peer)作为数据载体存放和传输主要以Header,Body,Reciept组成的数据主体,通过以太坊p2p通信协议管理数据同步事务,最后交给执行器(主动同步会交给Downloader,被动同步会交给Fetcher)执行最后的数据下载任务。
二、节点分类
以太坊节点主要有四种类型,分别是全节点、挖矿节点、轻节点、存档节点,对网络的贡献各有不同。它们共同将信息传递给其他节点,验证交易和EVM状态,并提供保持以太坊网络高效运行所需的基础设施。它们相互联系,以确保都能就网络状态达成一致。因此,拥有更多节点使得网络更强大,更能抵御攻击。以下将分别介绍四种节点。
2.1 全节点
全节点验证交易和EVM状态、验证区块、启动和执行智能合约代码,并在请求时提供网络数据。它们还将以太坊区块链的状态存储到最近的128个区块,并可以根据需要建立历史状态存档。
2.2 挖矿节点(又叫Miner)
挖矿节点是运行挖矿客户软件的全节点。在目前状态下,以太坊通过Ethash 加密算法进行挖矿,采用的是工作量证明机制(POW),挖矿节点与其他挖矿节点争夺算力,以创建下一个区块。一旦创建,新区块将被广播到网络,由其他节点验证,并附加到区块链的末尾。
2.3 轻节点
轻节点是全节点的“轻量”版,只包含区块头数据,比如前一个区块的哈希和时间戳,而不是整个区块数据。它们向全节点发出按需请求,用户需要时才验证状态的某些部分。典型的用途是查看余额、验证交易是否已确认、检查事件日志以及执行其他轻型任务。轻节点很容易由手机或Raspberry Pi等容量较低的设备运行。
2.4 存档节点(archive node)
存档节点是一种“存档模式”下运行的全节点。它们包含与全节点相同的所有数据,但还包含自创始区块(Genesis Block,即第一个区块)以记录整个区块链的所有历史状态数据。
举个例子,如果你想知道以往一百万个区块的以太坊账户余额,那么最快的方法是运行存档节点,然后查询这个数字。虽然全节点可以重建历史区块链状态数据,但这个过程缓慢且低效,而存档节点包含自第一个区块以来的历史数据,它们可以随时轻松地跟踪任一笔交易信息,包括账户余额、智能合约代码、交易数量或特定存储位置的值,同时存档节点还可以无需在区块链上创建交易的情况下测试智能合约代码。
三、同步模式分类
以太坊节点的同步主要有以下三种:
-
fast Enable fast syncing through state downloads
-
light Enable light client mode
-
syncmode full
3.1 Full同步
从创世块到最新区块,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。速度最慢,但是能获取到所有的历史数据。
3.2 Fast同步
获取区块的header,获取区块的body,在同步到当前块之前不处理任何事务。然后获得一个快照,此后,像full节点一样进行后面的同步操作。这种方法用得最多,目的在不要在意历史数据,将历史数据按照快照的方式,不逐一验证,沿着区块下载最近数据库中的交易,有可能丢失历史数据。此方法可能会对历史数据有部分丢失,但是不影响今后的使用。文章来源:https://www.toymoban.com/news/detail-419133.html
3.3 Ligth同步
从网络中同步所有区块头,不去同步区块体,也不去同步状态数据,仅在需要相应区块和状态数据时从网络上获取。文章来源地址https://www.toymoban.com/news/detail-419133.html
到了这里,关于以太坊的节点分类及Geth的几种同步模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!