以太坊节点硬盘每年要装下多少新状态,是整个协议最敏感的公共地problem之一:状态越大,跑全节点的门槛越高。EIP-8295 给出一种温和的疏导方案——给状态写入加一层“账龄定价”:一块状态如果很久没人碰过,再往里写的 gas 就更贵;经常有写入的状态维持现价。这份 2026 年 6 月创建的草稿把这条思路叫做 renewal-age pricing(续约账龄定价),目前是 Draft,未进入任何主网计划。
账龄从哪来:先有一个记账字段
账龄不能凭空算。它的前提是 EIP-8188:给账户和存储槽的 RLP 编码加一个 last_written_block 字段,记录这块状态最后一次被写入的区块号。注意规则里有一处关键克制——写入时更新该字段,读取不更新。这样一个只被疯狂读取、从不改写的槽,账龄照常变老,不会被“常有人看”伪装成“常有人用”。EIP-8188 本身不改任何 gas 价格,只负责产出这个跨客户端一致的信号。
EIP-8295 站在这个字段上,把每笔状态项的最后写入块号折算成一个粗略的 period(周期),再按已经过去的周期数把状态划成两档:Active(活跃)与 Inactive(不活跃)。账龄阈值 INACTIVE_MIN_AGE、周期长度 PERIOD_LENGTH 在提案文本里都还是 TBD,等待后续定值。定价规则一句话能说清:写 Active 状态与今天一样,写 Inactive 状态要付更多;读取费用完全不动。
与状态过期、存储租金的路线差别
这条路线的聪明之处在于“什么都不删”。状态过期(state expiry)方案要把长期不活跃的状态请出主 trie,激活时要付出证明与重建的工程与使用成本;存储租金方案定期向状态“收租”,不交就清理,语义更重。EIP-8295 只是让写冷状态变贵:状态留在 trie 里,节点不需要实现迁移与复活机制,用户不需要为老资产提交恢复证明。它更像在公共走廊装一个按需收费的电表,而不是把没人住的房间查封。提案自己也把定位写明了:给状态卫生(state hygiene)一个经济激励,但不强制删除。
谁会感到疼
按这笔账推演:被动挨打的是“沉睡资产被唤醒”的场景——一个多年没动的合约冷启动做一笔写操作,SSTORE 会按 Inactive 档计费;同样疼的还有把长期沉淀数据拿出来改一下的业务。不受影响的是纯读取型合约与活跃 DeFi 热路径。对投机性写状态的地址膨胀(今天 SSTORE 设置费已在吸收的部分),这层定价只是在既有机制上再加一个与年龄挂钩的系数。
一笔对照账
给个粗糙的算术感受账龄机制:假设一块存储槽一年被写一次,按 8295 的设计它很快滑进 Inactive 档,下次写入要按“唤醒价”付;若它背后是一个被高频交互的热池,几乎永远留在 Active 档付现价。一年下来,两笔写入名义上动的是同一个操作码,实际单价可能差出一个明显的系数——协议第一次把“你用状态占的位置放了多久”计入账单,而不只是“你这次写多大”。
快速问答
问:为什么读不刷新房龄? 答:账龄要衡量的是“这块状态还有没有人改”,不是“有没有人看”。只刷读会让高频查询型状态(比如被反复读的预编译式合约)永远霸占 Active 档,激励就失真了。
问:它和 EIP-8037 什么关系? 答:方向互补。8037 给“新造状态字节”整体提价(按字节收 CPSB),8295 给“写老状态”加价;一个管增量、一个管账龄,都指向压状态增速。
问:参数定了没有? 答:周期长度与进入不活跃档所需的账龄周期数在提案里仍是 TBD,机制与字段的落地时间也未排期。
一条判断线
看这类提案,问一个问题就够:它到底要求状态“消失”还是要求写入“变贵”。前者动数据结构与共识,后者只动价目表。EIP-8295 显然选后者——工程代价小,也更像一场可以随时调表盘的长期实验。
风险提示:本文是对公开提案文本的解读,不构成投资建议;提案内容可能随社区讨论修改或作废,请以提案仓库页面为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。