据我所知,依定义,Ethereum的块历史表示状态机的状态。然而,在所有的块中,块存储被创建并随后被销毁。
我假设验证器节点在应用链中定义的所有操作之后,在内存中表示状态机,然后将下一个块应用到(即。每次创建新块时,节点都不会应用链中从成因到当前块的所有操作)。
发布于 2023-03-09 03:30:02
这里是钱斯塔克的开发者代言人。
在Ethereum上进行验证需要两个客户端--协商一致客户端和执行客户端--才能协同工作。
简单地说:
回答你的第一个问题:>这个过程是如何发生的?
当节点验证协商一致块时,其一致性客户端处理该块并向执行客户端发送执行有效负载,执行客户端:
关于你的第二个问题:内存中的表示有多大?
要运行states节点,您不需要所有的历史状态数据,您只需要当前状态的快照。但即便如此,也需要1TB以上的数据。此数据存储在本地DB中。
以盖斯为例,在编写本报告时,要运行完整的Geth节点+协商一致客户端,您需要:
这是一个包含最近128个块的完整节点。
还有其他类型的节点具有不同的存储需求。例如,存档节点--一个保存所有历史状态的节点--需要12 TB的磁盘空间。但是,既然您询问的是验证器节点,那么完整的节点就足够了。
如果您有兴趣了解更多,我们有一个技术博客文章EVM节点:深入研究完整节点与存档节点,这可能是有帮助的。
编码愉快。
https://ethereum.stackexchange.com/questions/147102
复制相似问题