Vitalik Buterin2021-06-17 15:09:41
原作者:Vitalik Buterin,《状态到期和无状态路线图》(A state expiry and statelessness roadmap)
以太坊的状态规模正在迅速增长。目前仅状态大小大约有 35 GB,如果包括所有 Merkle 证明在内,则超过 100 GB,并且每年大约增加一半。状态存储也是以太坊经济学的一个弱点:它也是唯一一种机制,使得参与者支付一次就可变成节点永远的负担。为了保持以太坊的可扩展性和可持续性,我们需要一些解决方案。
有两种途径的解决方案,并且已经存在很长时间:弱无状态和状态到期:
状态到期:从状态中移除最近没有被访问过的状态(例如:上一次访问还是去年),并需要见证人(witnesses)才能恢复过期状态。这会将每个人需要存储的状态减少到大约 20-50 GB。
弱无状态:只需要区块提议者存储状态,并允许所有其他节点无状态地验证区块。在实践中实现这一点需要切换到 Verkle 树以减少见证人的规模。
本文档描述了同时实施这两个想法的多阶段提案。 事实证明,这比先后连续执行这两个解决方案要容易得多。 没有 Verkle 树的状态到期需要非常大的见证大小来证明旧状态,而切换到没有状态到期的 Verkle 树需要就地转换程序(例如 EIP 2584),这几乎与仅实现状态到期一样复杂。 然而,如果同时进行,这两项改革解决了彼此面对的挑战:状态到期涉及每年创建一个新的状态树,允许 Verkle 树随着时间的推移逐步引入而无需就地转换,而 Verkle 树解决了 见证人规模的问题。
相关链接:状态到期和无状态思想的发展历史
无状态客户端概念,最初的 ethresear.ch 帖子(2017 年):https://ethresear.ch/t/the-stateless-client-concept/172(另见 EthHub)
状态租金(状态到期的前身),2015 年原始提案:https://github.com/ethereum/EIPs/issues/35
ReGenesis(Alexey Akhunov 的提议,可以说是状态到期 +历史到期的一种形式):https://medium.com/@mandrigin/regenesis-explained-97540f457807
Verkle 树:https://notes.ethereum.org/_N1mutVERDKtqGIEYc-Flw
关于边界见证大小的演示(Youtube):https://www.youtube.com/watch?v=qQpvkxKso2E
状态大小管理理论(2021 年 2 月):https://hackmd.io/@vbuterin/state_size_management
复活冲突最小化状态边界:https://ethresear.ch/t/resurrection-conflict-minimized-state-bounding-take-2/8739
无状态和状态到期的一些路径:https://hackmd.io/@vbuterin/state_expiry_paths
回顾:状态到期是如何工作的?这是对此处提议的机制以及本文档中提议的内容的描述。 核心思想是每个时期都会有一个状态树(如:1 个时期 ~= 1 年),当新时期开始时,会为该时期初始化一个空状态树,任何状态更新都会进入该树。 在一段时间内发生的所有写入都进入最新的树(因此新树和旧树可能存储相同的信息甚至相互冲突;新树总是优先)。
请注意,这些大约一年的状态到期时间在历史上有时被称为“时期(epochs)”,但我正在切换到“周期(period)”一词以避免与信标链时期混淆。
保持两个关键原则:
只能修改最近的树(即当前周期对应的树)。 所有旧树都不再可修改; 旧树中的对象只能通过在新树中创建它们的副本来修改,并且这些副本取代了旧副本。
全节点(包括区块提议者)预计只持有最新的两个树,因此只有最新的两个树中的对象才能在没有见证人的情况下被读取。 阅读较旧的树则需要提供见证人。
“见证(witness)”是一个简短的证明,它证明一个值或一组值位于树中的某个位置,可以由只有树根的人进行验证。 例如,可以做一个见证,证明账户 0x124f...89ab 的存储槽 123 在某个状态下包含值 50,任何拥有该状态树根的人都可以验证该证明。
状态到期建立了一种混合状态机制:共识节点需要存储最近访问或修改的状态,但可以使用基于见证的无状态客户端方法来验证较旧的状态。 也就是说,可以维护一个“归档节点”,它甚至可以存储历史状态树,或者是一个完全无状态的节点,它使用见证人来验证甚至最近的状态。 然而,gas 成本结构和默认网络格式是围绕节点存储最新的两个状态树的假设构建的。
路线图这种转换路线图分阶段实施。这些阶段包括:
周期 1 硬分叉:我们从周期 1 开始实施一个硬分叉(之前的所有内容都是周期 0)。在此分叉之后,将有两个状态树:十六进制 Patricia 树(已冻结且不再可编辑)和一个新的 Verkle 树(包含对状态的所有新编辑/添加,以及已访问的旧状态的副本)
原始 EIP:https://notes.ethereum.org/@vbuterin/verkle_tree_eip
地址周期扩展:地址从 20 字节扩展到 32 字节,新的地址格式包括“地址周期”(以前称为“地址空间”)的概念。这允许新合约在不需要提供见证人的情况下填充新的存储槽。这可以在最终状态到期转换之前、周期 1 硬分叉之前或之后的任何时候完成。
VB 的提议:https://ethereum-magicians.org/t/increasing-address-size-from-20-to-32-bytes/5485
Ipsilon 团队提案:https://notes.ethereum.org/@ipsilon/address-space-extension-exploration
周期2 硬分叉:我们实施了开始周期 2 的硬分叉,并安排了未来阶段的开始。周期 0 十六进制 Patricia 树被替换为 Verkle 树,并且客户端只存储根,因此周期 0 树中的状态现在需要见证人来证明。在此之后,状态到期计划已全面实施。
原始 EIP:https://notes.ethereum.org/@vbuterin/state_expiry_eip
以太坊Layer 2必知必会2023-04-26 15:03:27
浅析NFT未来:仅少数项目上涨 出圈项目会成赢家2023-04-26 14:15:26
E-CNY时代来临:当你的工资成为数字人民币2023-04-26 12:43:48
浅谈为什么MEV搜索者矿池并不可行?2023-04-26 12:08:40
"庄家"互撕 曝出加密巨头拉的那些"帮派"2023-04-26 11:59:08
怎样到达Web3世界:使用Web3技术的公司及集成到业务的步骤2023-04-26 11:53:15
稳定币项目 HAI、Starknet 2023 路线图2023-04-26 11:46:35
ChatGPT类产品安全隐患解决?英伟达发布开源工具包2023-04-26 11:26:24
蚂蚁集团发布HOU、AntChainBridge、Web3开放联盟链等多个Web3产品2023-04-26 11:24:46
ChatGPT背后的算力博弈 中国企业亟待打破美国桎梏2023-04-26 10:59:28
简析DWF Labs:出手频繁 颇具争议的加密做市商2023-04-26 10:48:45
NFT 交易平台生存现状研究:后版税战争时代下的龙头之争2023-04-26 09:20:51
以太坊提款功能开启后的带宽使用情况2023-04-26 08:30:24
上海升级提款效应:数据揭示 LSD 项目们的表现2023-04-26 07:28:37
3分钟读懂基于LayerZero的多链抗MEV DEX聚合器Cashmere2023-04-25 20:05:34
对话去中心化流动性质押协议Rocket Pool:如何促进以太坊Staking民主化?2023-04-25 19:02:21
Bankless:欧美都想监管稳定币 他们怎么做?2023-04-25 17:43:44
Coinbase起诉SEC全文:请在合理时间内回应加密规则请愿书2023-04-25 16:43:34
慢雾:Web3 假钱包第三方源调查分析2023-04-25 15:43:36
Binance Sensei介绍:您的Web3 AI导师2023-04-25 13:20:55