OACC区块链商学院邱老师:为什么以太坊节点同步这么慢?

本文作者:OACC商学院邱老师

更多干货关注:OACC区块链商学苑

目前以太坊钱包默认的同步模式,叫做快速同步。和从创世区块开始,重新处理所有的转账不同(这会需要好几个星期),快速同步下载区块,然后只是验证和工作量证明相关的数据。下载所有区块是直截了当的,但是快速过程会相对快速地重新组成整个区块链。很多人错误地认为,因为他们有区块,所以在同步。

不幸地是,这不是问题的关键,因为没有任何转账被执行了(也就是说,为了验证区块链的有效性,没有转账进行),所以我们没有任何账户的状态(也就是,余额,记录,智能合约代码以及数据)。这些需求被分开下载,而且会和最新的区块交叉检测。这个部分叫做状态前缀树的下载,而且它实际上和区块下载同时运行;同时它比下载区块要花费更长的时间。

所以,什么是状态前缀树?在以太坊主网中,有无数的账户,这些会追踪每个用户的余额,数据等等,

这些账户本身是不足够去运行节点,他们需要和每个区块进行加密连接,从而节点能够验证账户没有被欺诈。这个加密连接是通过在账户上创建树状的数据结构来完成的,每个层级都和下面的层级连接,然后和更小的层级连接,直到你达到单个根数据。这种庞大的数据结构包含了所有账户和中间的加密证明,被称为状态前缀树。

那么为什么要提出这个问题?这种树状的数据结构是几百万个很小的加密证明相连接的、为了获得同步节点,你需要下载所有账户的数据,同时这些加密证明也会验证网络中没有任何东西尝试去欺骗你。这本身已经是非常夸张的数据了。它变得更加混乱的部分是这个数据不断地变化:每个区块(15秒),大约有1000个节点会从树状结构中删除,然后大约有2000个新节点会添加。这意味着需要同步数据库的节点正在以每秒200次的速度改变。最差的部分是让你在同步的时候,网络还在往前推进,并且你开始下载的状态也许会在你下载的时候小时,所以你的节点需要一直跟着网络进行,同时还需要获得所有最近的数据。但是当你实际上获得所有数据的时候,你的本地节点不能使用,因为它不能加密证明任何账户的任何信息。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180824A1U3DF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券