EIP Fun 周刊 #33 | Verkle Tree
点击蓝字,关注我们
编辑/ tiao, Zoe
排版/ Purple
介绍:EIP 与 EIP Fun
EIP 是 「Ethereum Improvement Proposal」 的缩写,翻译成中文为「以太坊改进提案」,也即以太坊的技术标准。EIP Fun 由 LXDAO 和 PlanckerDAO 支持创建。我们致力于连接以太坊的建设者与爱好者们,促进 EIP 的采用。
EIP Fun 周刊是为此所做的努力之一。一周一期,它关于以太坊改进提案(EIP),关注已经发生、正在发生、和将要发生的 EIP 故事。
进入网站:
https://eip.fun/
加入 EIP Fun 项目电报群:
https://t.me/eipfun
周刊的 Substack 地址:
https://eipfun.substack.com/
为了阅读体验,我们在微信版周刊中略去了绝大部分链接。如果你有兴趣继续了解相关内容,请点击上方链接或点击文章左下角的「阅读原文」,进入 EIP Fun 的 Substack 以获得完整内容(英文版)。
正文
大家好!欢迎阅读 EIP Fun 周刊第 33 期。让我们来看看本周 EIP 社区都发生了什么吧。
1. EIP 更新
先来回顾一些关键会议和 EIP 的正式状态变更吧。
关键会议
AllCoreDevs 执行层会议(ACDE):第 180 期
AllCoreDevs 会议分为两个部分:ACDC(关注共识层)和 ACDE(关注执行层)。
这两个会议每周轮流召开,以协调和决定以太坊协议层以及硬分叉事务。协议层标准的创作者们通常会在这个会议上与核心开发者一起讨论 EIP。
录屏链接:https://youtu.be/KE4VH-lSfHg
会议摘要
1)Dencun 更新:
开发者决定暂停确认 Dencun 升级的主网激活日期,原因是还有待调查的问题。他们同意在 2 月 8 日的下一次 ACD 电话会议上重新讨论此事。Potuz 表示需要来自 Layer-2 rollup 团队的额外反馈意见。
2)Prague 提议:
开发者就三个重要的代码变更进行了讨论,分别是 Verkle、EOF(以太坊虚拟机对象格式)和历史过期。Verkle 将在 Prague 之后的 EL 升级中实施,也被称为 Osaka。
3)Besu 1 月 6 日主网事件:
Besu 开发者 Matt Nelson 讨论了 1 月初影响了约 70% 的 Besu 以太坊节点的服务中断问题。幸运的是,已经部署了一个热修复来解决 Besu 客户端的问题。
4)了解更多:
第 180 次「以太坊全核心开发者执行会议」总结,来自Christine Kim
https://www.galaxy.com/insights/research/ethereum-all-core-developers-execution-call-180/
EIPIP 会议:第 99 期
EIPIP 的全称是「以太坊改进提案的改进提案」,其旨在汇集经验丰富的开发人员和专家,促进以太坊改进提案的改进过程。如果你对 EIP 的过程有任何疑惑或者感到不舒服的点,可以在两周一次的 EIPIP 会议中和大家探讨。
录屏链接:https://youtu.be/qd5E-4TbbXs
会议摘要(源于 Pooja Ranjan 的总结)
1)RIP 流程文档:
尽管 RIP 工作组的成员仍未参加会议,Juan Caballero 有机会与 RIP-7212 的作者进行了交流,后者在社区活跃,但不是 RIP 工作组的成员。
2)包括 EIPs、ERCs 和 RIPs 在内的网页渲染:
Sam Wilsn 和 Ansgar 表示希望看到由工作组渲染的 RIPs,而当时的 RIP-7212 作者 Ullas 似乎对工作组的角色和责任不太了解。
Gavin John 已辞去 EIP 编辑的职务,并提供了基于工作组的页面渲染的进展更新。Sam Wilsn 分享了工作组页面的高级概述和演示。
EIP 状态变更
以下是本周通过异步沟通获得状态变更的 EIP:
EIP-7045: 增加最大的证明包含时隙
状态:社区评议→终审
摘要:该提案修改将最大的证明包含时隙从attestation.slot + SLOTS_PER_EPOCH 提升到第 N+1个时隙的最后一个时隙,这里的 N 表示包括该证明时隙的时期。这一调整对于当前的 LMD-GHOST 安全分析和确认规则都是至关重要的。
EIP-6780:仅在同一交易中使用 SELFDESTRUCT
状态:社区评议→终审
摘要:该 EIP 对 SELFDESTRUCT 操作码的功能进行了修改。修改后的功能只涉及将账户中的所有以太币转移到指定的目标地址。然而,当 SELFDESTRUCT 在同一交易中被调用并在一个合约被创建时,将保留现有的行为。
EIP-4788: 在 EVM 状态中引入 Beacon 区块根
状态:社区评议→终审
摘要:该 EIP 提议在与每个 Beacon 链区块相关联的执行载荷头中提交哈希树根。这些根将被存储在智能合约中供将来参考。
EIP-7516: BLOBBASEFEE 操作码
状态:社区评议→终审
摘要:该提案建议在 Capella 上锁定验证器主动退出签名域,以确保其永久有效。目前,验证器签名的主动退出仅在两次升级中有效。通过实施这一变更,由验证器签名的主动退出在 Capella 升级上将无限期保持有效。
EIP-4844: 分片 Blob 交易
状态:社区评议→终审
摘要:该提案引入了 blob-carrying 交易,这是以太坊中的一种新的交易格式。这些交易包含大量的数据,这些数据无法被 EVM 访问,但可以通过其承诺进行访问。其目标是为未来的完全分片提供兼容性,并允许在交易中包含大量数据负载。
EIP-5793: eth/68 - 在交易公告中添加 tx 类型
状态:社区评议→终审
摘要:EIP-5793 在以太坊中引入了“不可变事务参数”的概念。该概念允许将特定的交易参数标记为不可变,增强安全性和交易验证的效率。不可变参数不能被后续交易修改,从而提高了网络性能和可靠性。
EIP-4938: eth/67 - 移除 GetNodeData
状态:社区评议→终审
摘要:该提案建议从以太坊网络协议中移除 GetNodeData 和 NodeData 消息,这些消息用于通过哈希从状态树中请求和检索 trie 节点或合约代码。该变更旨在通过消除这些特定的消息类型来简化协议。
2. EIP 一周热点
接下来,让我们一起看看本周与 EIP 相关的新应用或作品。
EIP-1153: 短暂存储操作码
此提案介绍了短暂存储操作码的概念,它们允许以类似于常规存储的方式操纵状态。
然而,有一个关键的区别:每次交易后,短暂存储会被丢弃,而不像永久存储那样保留。实际上,短暂存储中的值不会从存储中读取或写入,从而节省了成本,因为不需要磁盘访问。智能合约可以使用两个新引入的操作码 TLOAD 和 TSTORE 来访问短暂存储,其中「T」表示「transient(短暂)」。
潜在用例
1)实时市场数据:
智能合约可以订阅市场数据源,实时获取价格更新,从而更准确和及时地执行交易。
2)事件驱动自动化:
智能合约可以订阅特定事件,如代币转移或合约交互,并根据这些事件自动触发相应的操作。
3)去中心化金融(DeFi):
DeFi 协议可以使用 EIP-1153 来通知用户其持仓变化、流动性池更新或套利机会等信息。
4)游戏生态系统:
游戏平台可以利用 EIP-1153 来通知玩家有关游戏内事件、更新和奖励的消息。
了解更多
FEM (Fellowship of Ethereum Magicians) 论坛中的相关讨论:
https://ethereum-magicians.org/t/eip-1153-transient-storage-opcodes/553
EIP-2330: EXTSLOAD 操作码
EIP-2330 提议在以太坊网络上的令牌合约中引入一个标准化的元数据扩展。
该扩展允许令牌发行者为其令牌附加额外的信息,包括名称、符号、小数位数和其他可选属性等元数据。
EIP-2330 的目标是通过提供一种一致且易于访问的方式来检索关于令牌合约的重要信息,从而增强 ERC-20 令牌的可用性和互操作性。
潜在用例
1)提升用户体验:
通过 EIP-2330,钱包、交易所和其他应用程序可以轻松获取令牌的基本信息,例如令牌名称、符号和小数位数。这提供了关于令牌的清晰和一致的信息,增强了用户体验。
2)增强的令牌列表和发现:
EIP-2330 允许令牌发行者提供关于其令牌的其他信息,例如网站链接、标志和描述。这提供了更好的令牌列表和发现功能,使用户更容易识别和理解不同的令牌。
3)互操作性和标准化:
通过提供标准化的元数据格式,EIP-2330 促进了令牌合约之间的互操作性。应用和服务可以统一处理令牌元数据,确保在各个平台上有一致的行为。
4)可访问性和透明度:
EIP-2330 中定义的令牌元数据可以公开访问,促进了透明度,并允许用户在与令牌进行交互之前验证重要信息。
了解更多
FEM (Fellowship of Ethereum Magicians) 论坛中的相关讨论:
https://ethereum-magicians.org/t/eip-2330-extsload-and-abi-for-lower-gas-cost-and-off-chain-apps/3733
3. EIP 趣闻:Verkle Tree
图片来源:https://giphy.com/gifs/matrix-christopher-pindling-spaced-out-bandits-5iWX6XFTndU0YP0Yut
在最近的第 180 次 ACDE 电话会议中,开发人员主要关注了三个重要的代码变更:Verkle、以太坊虚拟机对象格式(EOF)和历史过期。他们决定计划在 PRAGUE 升级(也称为 Osaka )之后,在 EL 升级中实施 Verkle 。
什么是 Verkle Tree ?
Verkle Tree 是一种数据结构,与以太坊目前使用的 Merkle Patricia Tree(MPT)具有一些相似之处。尽管 Verkle Tree 采用了类似于 MPT 的树状结构,但存在一个重要区别,即每个节点使用向量承诺来承诺其子节点。这种向量承诺是一种特殊类型的哈希,具有长期优势,并有助于在以太坊中实现无状态性。通过使用这种数据结构,可以提高以太坊的存储和计算效率,并为未来的升级和改进打下基础。
为什么我们需要 Verkle Tree ?
在 Verkle Tree 中使用向量承诺确实为以太坊实现无状态性提供了重要优势。通过使用向量承诺,Verkle 树可以实现更小的证明大小,也称为 witness。
与 Merkle Tree 不同,在 Verkle Tree 中,在每个级别上并不需要所有兄弟节点的哈希。Verkle Tree 只需要父节点和可选的从叶子节点到根节点路径的证明。这个区别使得 Verkle Tree 可以具有比 Merkle Tree 更宽的结构,从而导致更小的 witness 。其重要性在于克服了大 witness 对于实现无状态性所带来的挑战。当 witness 足够小,可以包含在每个区块中,从而使得区块的验证仅基于区块内部信息即可实现。这样可以减少网络中传输的数据量,提高验证的效率。
通过减小 witness,Verkle Tree 有望为以太坊向无状态性迈进提供支持,并促进整个系统的可扩展性和效率。
我们应该如何实现 Verkle Tree ?
覆盖方法
目前,最常用的方法是使用先导候选方法。该方法涉及使用两棵树:一棵空的覆盖树(称为 Verkle Tree)和一棵现有的 Merkle Tree,称为基础树。在每个区块中,从基础树有选择性地转移一定数量的值到覆盖树中。当访问状态时,首先在覆盖树中搜索给定的键。如果未找到键,则随后在基础树中进行搜索。另一方面,在修改状态时,所有的更新只发生在覆盖树上。
转换节点
在特定的区块高度上,有限数量的高性能机器执行转换,并随后将结果分发给整个网络。较低性能的客户端通过 Verkle 模式获取转换结果并重放区块,直到追赶到最新区块。
本地批量转换
在没有分明不同类别节点存在的情况下,所有机器都独立地执行转换过程。虽然此方法以前被认为不实际,但最近在性能方面的增强使其变得可行。
状态过期
在这种方法中,Merkle Tree 保持不变,并在当前状态下实际上被「冻结」。从头开始创建一棵全新的树。读写数据的过程与覆盖方法类似,但树之间没有任何合并或转换。每棵树保持着自己的独立状态和数据,它们之间没有任何交互或同步。现有的策略涉及在分叉之前悄悄地执行此转换过程,仅在后台平稳进行。
4. 预告
(1)EIP 编辑问答会 第 31 期
时间:2 月 6 日,15:00 UTC+0(北京时间 23 点)
想要了解更详细的会议议程,可以浏览 GitHub 相关议题:
https://github.com/ethcatherders/EIPIP/issues/307
(2)AllCoreDevs 共识层会议 第 127 期
时间:2 月 8 日,14:00 UTC+0(北京时间 22 点)
想要了解更详细的会议议程,可以浏览 GitHub 相关议题:
https://github.com/ethereum/pm/issues/951
往期内容
点击「阅读原文」,订阅 EIP Fun
/ About Plancker
PlanckerDAO 是一个专注建设以太坊生态的社区,我们为开发者、产品经理和研究员提供多方面支持,致力于与以太坊共建人类的数字化美好未来。
Website:https://plancker.org/
Forum:http://forum.plancker.org/
Telegram:https://t.me/PlanckerDAO
Notion:https://planckerdao.notion.site/
Twitter:https://twitter.com/PlanckerDAO