以太坊给节点存储算过一笔租金账:状态租金提案的来龙去脉 图 1
以太坊给节点存储算过一笔租金账:状态租金提案的来龙去脉 · 图 1

以太坊的转账要付 gas,合约调用要付 gas,唯独一件事长期免费:把数据永久写进全球状态并指望所有节点替你存着。状态租金(state rent)这个词,就是围绕这顿”免费午餐”展开了近十年的提案家族。这一篇讲清楚它要解决什么、方案长什么样、为什么迟迟没进协议。

问题的形状

状态(state)是所有账户余额、合约代码与存储槽的集合。全节点为了验证新区块,必须能即时查到任意账户状态。随着合约数量累积,状态只增不减:哪怕一个账户十年没人碰,它的存储仍然占据每个全节点的数据库。社区常拿一个直观量级提醒风险:状态数据库体积以数百 GB 计持续增长,而同期消费级硬件的升级速度并不能一直跟上,节点重、跑的人少、去中心化打折,这条推理链就是”状态膨胀”担忧的全部。

以太坊已经在做减法:快照同步、历史过期类方案(EIP-4444 方向)把历史数据卸载给归档层;状态过期(state expiry)与无状态验证(verkle 树路线图)针对状态本身。状态租金是同一目标函数下更激进的一支:既然使用状态占用了所有人的存储,就让它在使用时持续计费,或者不使用时自动降级。

以太坊给节点存储算过一笔租金账:状态租金提案的来龙去脉 图 2
以太坊给节点存储算过一笔租金账:状态租金提案的来龙去脉 · 图 2

提案的形态

公开讨论中最著名的两份文件是 EIP-1581 与其后的状态租金规格草稿(常被称为 W-EIP,2019 年前后发布,状态一直是草稿/WIP,从未进入任何主网硬分叉)。它们的共同骨架:给每个状态条目维护一个”租金额度”,交易读写状态时可以续租;不续租的对象进入某种休眠——以太坊版本的状态过期思路里,账户不会被删除,而是把”证明它存在”的负担从节点转给持有者:账户的余额与存储根仍然被状态树承诺着,但具体内容从热数据库里请出去,谁想再动它,谁就得带上默克尔凭证向网络出示,顺带完成一次付费。

这样设计的妙处在于不破坏任何余额承诺:账户过期不等于钱消失,树根仍然证明着它。代价是钱包与交易所的工程复杂度上升——你得替用户保管过去写进状态的东西,并准备好在需要时提交它们。

为什么一直没进协议

拖延的原因不是没人同意问题存在,而是每一条实现路线都有硬反对者。第一类反对是责任转嫁:过期方案把状态保管义务推给用户端,交易所和托管机构需要为每个地址保留大量数据,一旦凭证丢失,用户资产就陷入”钱在树里、钥匙没了”的境地,这类机构利益方长期谨慎。第二类是参数政治:租金费率定多高?定低了无效果,定高了重演”谁穷谁搬走”的分配争议。第三类是替代路线竞争:无状态客户端加 verkle 树能把读验证负担用见证(witness)方案解决,不必然需要收费;历史过期先解决更急的磁盘问题。近几轮升级(Pectra、Fusaka 等)的取舍确实是”先做不需要向用户收钱的部分”,状态租金继续留在研究文档里。

判断它是否”已经实施”的最快方法永远是查当期升级清单:官方升级公告列出的 EIP 列表是唯一权威来源,而不是某篇博客里”租金即将到来”的说法。多年里几乎每一轮升级前都有人预告租金落地,全部落空,这本身说明该提案在治理上的真实状态。

对普通用户的现时影响

今天它不改变任何钱包行为,但有三个间接后果值得知道。第一,节点硬件门槛的长期压力是真实的,这也是自建节点教程强调 NVMe 盘的原因之一。第二,与状态直接相关的 gas 结构改革(比如转字节的静态成本、退款上限调整)实际承担着部分”给状态使用定价”的功能,你付的每一笔 gas 已经隐含了这些设计。第三,如果你开发需要写入链上状态的合约,“状态会被怎么定价”仍是悬着的政策风险,写进状态的数据越少、被复用的越多,越经得起未来任何方案。

常见误区

误区一:“状态过期等于资产过期作废”。所有主流设计都保留余额承诺,作废的是免验证权,不是资产。误区二:“以太坊要学比特币那样收费”。比特币靠 UTXO 天然免全状态重算,两者要解决的问题不同,费用机制不可类比。误区三:“提案编号存在就等于会激活”。EIP 的状态字段(draft/stagnant/final)与主网激活是两回事,以升级清单为准。

风险提示

状态定价类政策未来若推进,可能改变链上应用的成本结构。本文不构成投资建议,亦不构成对协议演进方向的预测。

风险提示:本文只描述公开技术机制,不构成任何投资建议。数字资产价格可能剧烈波动。