见证也要收门票:EIP-4762 为无状态时代预排的费用表 图 1
见证也要收门票:EIP-4762 为无状态时代预排的费用表 · 图 1

无状态以太坊的愿景里,节点不再需要随身携带整个状态库:每笔交易自带一份见证数据,证明自己动过的那些状态值长什么样,验证者拿着见证就能查真伪。见证是要占字节、要过网络的,而以太坊给一切资源定价的语言是 gas。EIP-4762 就是那份提前写好的价目表:在真正的 Verkle 树上线之前的那一次升级里,先把费用结构改到无状态的计价逻辑上,让开发者和数据库实现有时间搬家。这份由执行层客户端团队核心成员起草的草案 2022 年 2 月提交,至今仍是草案状态——它设计的树后来被新的树形方案取代,但计价思想活了下来。

从「冷热账户」到「访问事件」

现行以太坊给状态访问定价用的是冷热二分法:一条交易第一次碰某个存储槽按冷价,之后按热价,界限由 EIP-2929 一类规则划。EIP-4762 把计量单位从「碰没碰过」换成「见证里多了什么」。交易执行时,规范定义了若干触发点:某地址的账户头被调用、被读余额、被复制代码,就产生一个形如「地址、树键、叶键」的访问事件;合约执行到第几条指令,对应代码块产生一个事件;一次调用还会为交易发起方和目标方各立事件。客户端要维护一组集合去重,每纳入一个新事件就按下表收钱。

事件gas
见证分支1900
见证分块200
子树编辑3000
分块编辑500
分块填充6200

分支对应证明路径上的内部节点,分块对应树里单个叶子承载的数据单元,三档写价则区分「改已有块」「填新块」和「整棵子树重排」三种最坏情况的见证膨胀。

见证也要收门票:EIP-4762 为无状态时代预排的费用表 图 2
见证也要收门票:EIP-4762 为无状态时代预排的费用表 · 图 2

便宜与昂贵的新版图

这套价目表重画了合约的省钱地图。最显眼的红利在低号存储槽:规范明文把访问零到六十三号槽的成本从两千一百降到二百,且首槽不再特殊——因为新结构里同一个「茎」下的叶子天然聚在一棵小树里,编译器只要把高频变量安排进低号槽,一笔操作就能省下一个数量级的见证分支。反过来,大面积散读代码的合约会更疼:代码按块计量,逐字节翻大合约的时代结束了。规范还处理了一堆交接期的细节——预编译与系统合约不进见证、带非零转账的调用要额外记录付款方、六十四分之一 gas 保留规则的扣减时点在调用和创建之间刻意不同。数据库侧的功课也写进了安全考量:若客户端仍按旧布局存状态,同茎邻居访问会退化成反复找盘,做提案里承诺的便宜就要先改存储格式,比如把一整茎放进同一个数据块。

停在草案,活在思想

Verkle 路线本身在 2025 年后的讨论中被统一二叉树方案替换,「按见证事件收费」的锚点因此悬空——价目表是为那棵树画的,树换了图纸就得重画。但把这件事只读成一份废案会错过它的真正遗产:以太坊第一次在规范层面承认「状态访问的真实成本是数据搬运」,并用可加总的离散事件取代了近似账。后来的访问列表、状态费用实验,计价骨架都是这套思路的远亲。一份草案可以死在技术方案上,不会死在问题上。

快速问答

问:这等于给每个存储槽单独报价吗? 答:不是。价格挂在见证的增量结构上,同茎槽位共享证明路径,所以「槽位怎么摆」第一次变成了直接省钱问题。

问:现在跑节点需要为它做什么? 答:什么都不用。它没有激活;这句话本身就是这份提案最诚实的注脚。

风险提示:本文讨论未激活的费用设计,不构成投资建议;现行 gas 规则以当期规范与客户端行为为准。