发布于 2016-02-10 14:00:45
让我们一步一步地走。
区块链的工作通常是有一个起源(起源)状态,有几个帐户有资金,然后你放置在链的每一个块移动这些来源的资金,也给予矿工一些额外的。因此,每当您将一个新块导入到您现有的链中,以查看您对世界的看法(状态),并根据块中包含的事务将该状态转换为一个新的视图,您认为这个世界是什么样的。您不会抛弃过去对世界的看法,因为如果区块链中有一个分叉(例如,一个矿工出现了一个更好的块,或者可能出现了两个更好的块),那么您需要将您的观点从过去的状态转换为更好的版本。这导致了所有过去的状态,你通过被永远的积累而过渡。这是一种未修剪的状态/块链,目前Ethereum的状态/块链为7GB。
重要的是要注意的是,大多数情况下,你不在乎一个账户3年前有多少资金,你只关心当前的状况(也许几天前也是如此)。那么,为什么要把那些非常古老的过去的过渡状态留在身边呢?州修剪基本上是把所有的中间状态,然后冲到厕所。重要的是要认识到,您只丢弃中间世界视图,而不是阻塞本身或任何其他可能对网络有害的数据(即,连接节点需要同步该数据)。因此,通过修剪状态trie,您将失去查询过去帐户余额的能力,但将存储的数据量减少到原来大小的1/5-1/6。
好吧,那么快速同步呢?那么,按照以前的思维模式,如果你不关心3年前随机账户的余额,你为什么要重播区块链的整个交易历史,只是为了达到当前的状态。所以,快速同步所做的就是下载所有的区块链,但它不执行生成world视图的事务,每次只执行一个块。相反,它只验证工作证明,当下载整个链时,它会查看状态根(定义当前世界视图的散列),并直接从网络中下载状态数据库,从一开始就重新构造最终状态,而不需要对其进行瞬态。这意味着,除了下载块之外,它还需要下载额外的数据,状态会自行测试,因此它将带宽交换为处理能力(也就是说,我下载状态,而不是生成它)。快速同步的最终结果是通过一种不同的方法从所有意图和目的中删除数据库。这样一个数据库的当前大小是1.2-1.3GB。
发布于 2021-11-13 18:11:43
我不能对此发表评论,但这是在EIP-4444中提出的。
https://ethereum.stackexchange.com/questions/1229
复制相似问题