以太坊账户里的以太被认为是”永久存放、无人能动”的,但 2018 年有一份提案想给这条默认规则装上钟:EIP-1418,Blockchain Storage Rent Payment,作者 William Entriken,2018 年 9 月 16 日立案,现状态 Stagnant(停滞)。它的主张一句话能说完:每个区块都按账户占用的存储量扣一笔”租金”,租金耗尽的账户被逐出状态。本文只讲该提案文本(提案状态另有说明),机制史坐标见 长期没人写的状态更贵:EIP-8295 按账龄给状态写入定价 与 Verkle 树是什么?状态树重构与无状态客户端的路线图。
要解决的问题:字节乘以时间
提案的动机模型很简单:存储成本约等于”字节数乘以时间”,而以太坊的 Gas 费只在写入的那一刻收费,此后这份数据被全网每个节点无限期背着走,费用为零。作者把以太坊定位成公共设施,认为长期存储被系统性低估——这正是后来所有”状态膨胀”方案的共同出发点。EIP-1418 选择的计价工具是持续扣费:与其指望写入时一次性收对未来收租定价,不如每个区块扣一点。

机制细案:两个新操作码与一段子程序
按规范文本,每个账户新增两个状态变量:σ[a]_rent(已积累的租金,带符号数)与 σ[a]_storageWords(占用的存储字数),另设 RENT_WORD_COST、RENT_ACCOUNT_COST、FORK_BLOCK 三个常量。新操作码有两个:RENTBALANCE(address) 读取账户的租金余额,收费同 BALANCE;SENDRENT(address, amount) 把发送者的以太转成租金注入目标账户——只加租金、扣余额,不触发调用。核心是名为 PAYRENT 的子程序:每次触碰账户时结算”距上次支付过了多少个区块”,应付额等于区块数乘以(账户费加每字数费),从租金里扣;租金不足先吃账户余额,两者双双见底,就记下驱逐区块号。提案明确租金一旦支付就不能再换回以太,作者用”礼品卡”类比说这是会计上的好事。
驱逐怎么发生:惰性结算,共识即账本
最巧的设计是驱逐不需要任何人”执行”:规则只是”当前区块号大于账户的应驱逐区块号,该账户即视为不存在”。节点无需记录谁被驱逐,只需对驱逐条件达成一致;某账户若真在过期后才被交易触碰,交易失败,除非走提案新增的交易类型、随附证明把旧状态重建出来。理由一节把这叫”惰性求值”:由共识客户端在精确的时点判定,不需要链下监视者领赏金干活的激励设计。
为什么没落地,以及谁接了棒
EIP-1418 的软肋在部署那一刻:它假设全链所有账户从分叉块开始同时开始付租,没人预先充值的合约会排队死亡;租金费率本身也牵一发动全身。此后这个题目被切成数块分别求解:按账户状态账龄给写入定价(EIP-8295 路线,见 长期没人写的状态更贵:EIP-8295 按账龄给状态写入定价)、另一组把状态计数器与净字节计量先钉进状态模型的 State Rent 系列配套提案(EIP-2026、2027、2029、2031,同样停在 Stagnant)、再到 Verkle 树与无状态化把”状态多大”从节点负担问题变成证明开销问题(见 Verkle 树是什么?状态树重构与无状态客户端的路线图)。Stagnant 不代表问题消失,只代表这份具体方案不再有人推进。
对钱包用户的假设性后果
值得认真推演一遍它的”如果生效”:交易所热钱包地址长期不活跃也会被抽干租金,充值地址的”余额”从此附带隐性成本;空投粉尘将自动蒸发——这是当年社区欢迎该提案的卖点;而所有依赖”合约状态永生”的协议设计(把账本写进存储、打算永远不迁的 DAO)都得内置续费逻辑。今天读它最好的姿势是当压力测试题:以太坊的哪些便利建立在”存储免费永存”这个未被承认的补贴上。
费率参数背后的两笔账
提案文本对 RENT_WORD_COST、RENT_ACCOUNT_COST 只给符号不给数值,但理由一节留下一组体量数据做定价讨论的锚:正文按当时主网约 150 亿个存储字、累计约 1 亿枚以太估算,如果拿全部已挖出的以太按提案价目支付存储,理论上能覆盖 400 PB 年的存储量——作者的潜台词是费率定得并不激进,远不至于把现有状态一次性抽干。按区块计费则带来一个棘手的副作用:出块节奏一改,同样的年费就摊到不同块数上,费率与共识参数耦合。这也是后来路线放弃全账户周期扣费、转向”写入时按账龄加价”(EIP-8295 一类)的现实原因之一:把收费触发点从”每个块”挪回”有人碰它的时候”,既保住了”字节乘以时间”的计价模型,又不用替全网闲置账户做每块结算。
风险提示:本文为以太坊改进提案机制科普,不构成投资建议;提案机制未在当前网络实施,账户与费用的真实规则以现网规范和客户端行为为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。