当前位置:主页 > 列表页 > 正文

观点 | 一种状态保质期和无状态性的路线图

2021-06-25 00:36 | 出处: EthFans

以太坊的状态的规模正迅速增长。当前仅存储状态大概是 35 GB,如果加上默克尔证明就是 100 GB 了;而且现在预计每年都要增长这个数字的一半。此外,状态存储也是以太坊经济模型的一个短板:在这个机制中,用户只需付费一次就可以给共识节点施加永久的负担。为了保持以太坊的可扩展性和可持续性,我们需要一些解决方案。


有两种路径,而且都已经存在很长时间了:“弱无状态性” 和 “状态保质期”:


本文提出了一种多阶段的方案,来同时实现这两种方案。因为,可以证明,这会比按顺序实现这两个(无论什么顺序)容易很多。如果不实现 Verkle 树,状态保质期方案下就需要非常大的见证数据来证明一个旧状态;如果不实现状态保质期,切换到 Verkle 树就需要一个一步到位的切换流程(例如 EIP 2584),这几乎跟只实现状态保质期一样复杂。如果合二为一,同时进行,它们就解决了彼此面临的挑战:状态保质期方案包含了每年创建一棵新状态树的机制,因此 Verkle 树可以分阶段逐步建构,而无需一个一步到位的切换流程,而 Verkle 树也解决了见证数据规模的问题。


链接:“状态保质期” 和 “无状态性” 概念的历史



回顾:状态保质期如何工作?


这里所描述的是此提案的机制。

核心想法是,每个周期(比如以一年为一个周期)都会有一棵状态树,每当一个周期开始时,就初始化一棵空状态树,所有的状态更新都写到这颗状态树上。在一个周期内,所有的写入都会发生在最新的状态树上(所以新树和老树可能会存储同样的信息,也可能会发生冲突;那么总是以更新的树为优先)。


- 注意:我之前曾把这个约长一年的状态保质期周期称为 “epoch”,现在都称为 “period”,以免与信标链的术语相混淆 -
两个关键原则是:

“见证数据” 就是一个简短的证据,证明某个值(或者某一组值)存在于某棵树的某个位置上,而且验证的一方只需具有树根即可。举个例子,可以制作 一个 witness 来证明账户 0 x124f...89ab 的存储空档 123 处在某时的状态下,包含的值为 50;任何人都只需要这棵状态树的根值就可以验证这个证据。

状态保质期产生了一种混合的状态机制:共识节点需要保存最近被人访问和修改过的状态,但可以使用基于见证消息的无状态客户端方法来验证更老的状态。也就是说,也可以维护一个 “归档节点”,存储所有历史状态树,或者 一个完全无状态的节点,使用见证数据来验证哪怕是最新的状态。不过,gas 消耗量的结构和默认的网络格式,都要围绕 “节点会存储最近的两棵状态树” 来开发。


路线图


迁移将按阶段来实现:


原文链接:

https://notes.ethereum.org/@vbuterin/verkle_and_state_expiry_proposal

作者: Vitalik

翻译: 阿剑
作者郑重申明:截至发文时,作者与文中提及项目存在利益关系,特此告知。利益关系包括但不限于下述情况:本人为项目团队成员、本人是项目团队成员的直系亲属或配偶、参与投资该项目、持有该项目发行的股份或通证、参与做空或做多该项目、收取回报进行有偿撰文等。
相关文章