叔块对象里补一个基准费字段:EIP-3045 与 3046 的接口小补丁为何停在半途 图 1
叔块对象里补一个基准费字段:EIP-3045 与 3046 的接口小补丁为何停在半途 · 图 1

以太坊的协议层向前跑,接口层在后面永远在补票。EIP-1559 把基准费写进区块头之后,一批 JSON-RPC 端点的响应对象并没有同步长出这个字段——2020 年 10 月 14 日递交的两个孪生小提案 EIP-3045 与 EIP-3046,就是去给两个叔块查询端点补这个字:按哈希与按序号查叔块的响应对象各加一个 baseFee 属性。它们最终都停在 Stagnant,故事比字段本身更值得讲。

字段本身没什么戏剧性

两份文本互为镜像,作者同为 Abdelhamid Bakhta,依赖清单同写 EIP-1474 与 1559。规范部分的核心是一时代一刀切:1559 分叉区块之后产生的块,其叔块对象必须包含 baseFee;分叉之前的块必须不包含——用字段的有无标记时代的分界,而不是用零值假装统一。理由一节写得直白:加一个字段胜过造一个新端点,这是最容易推进的改法;为向后兼容,旧块响应干脆不带该字段。动机很实用——预测 gas 价格的人想要任意历史块的基准费读数,而 1559 之后每个块的基准费都不同。安全考量只有一句话:这是信息性字段,不引入技术安全问题。

叔块对象里补一个基准费字段:EIP-3045 与 3046 的接口小补丁为何停在半途 图 2
叔块对象里补一个基准费字段:EIP-3045 与 3046 的接口小补丁为何停在半途 · 图 2

为什么叔块也需要基准费

叔块是被主链接纳的迟到兄弟:它是没能成为正块的合法区块头,被父块引用后按规则获得激励。它携带完整的区块头——1559 之后,基准费恰恰就写在区块头里。叔块的经济意义归矿工激励,但链分析工具、区块浏览器、数据仓库把叔块对象当正常区块对象消费:主块对象长出基准费字段而叔块对象没有,等于同一类数据开了两套模式,下游解析被迫分叉。这对提案想缝合的正是这个缝。

一份依赖清单里的时代眼泪

这两份提案的命运被自己的依赖清单剧透了。EIP-1474——那份试图把以太坊 JSON-RPC 方法整体规范化的老提案——在 2022 年被标记 Withdrawn,接口规范迁移到独立仓库继续演化;同一年的合并让叔块机制随工作量证明一起退役,两个端点从字段缺失问题升格成整条路径的历史包袱。今天的执行层 RPC 规范里,块对象的基准费早已是常规成员,而叔块字段组整体走进了历史文档。两份提案没有被 Reject,只是 Stagnant——被时间归档,而不是被评审否决。

快速问答

问:这是共识规则改动吗? 答:不是。它们属于接口类提案,改的是 RPC 响应形状,节点之间的共识不受影响。

问:为什么对旧块必须不返回 baseFee,而不是返回零? 答:避免各实现自造默认值制造假数据——缺字段比错字段诚实,读端可以据此判断该块属于哪个时代。

问:提案作者还写过什么? 答:同一位作者还递交了给 EVM 添加 Poseidon 哈希预编译的 EIP-5988——一份在共识层、两份在接口层,命运同样都是搁置。

一条判断线

评估接口补丁类提案,看它是不是只是主升级的尾巴:主改动落地时把配套端点一并规范掉,这类补丁就失去存在必要;主规范换了维护场所时,补丁连递交通道都失去。3045 与 3046 恰好两次都被踩中——1559 的配套规范与执行层 API 仓库的迁移都没带上它们。

常见误区

一是把 RPC 字段当成链上数据源,基准费永远以区块头里的承诺为准,端点只是搬运工;二是以为接口提案改动无成本——字段名、可选性、时代分界都会写进无数下游解析器的肌肉记忆;三是把 Stagnant 读成评审失败,提案们只是没等到属于自己的那趟升级班车。

接口债务该怎么清点

这类小提案的价值,在于提醒维护者接口是协议的镜像:共识层每新增一个字段,RPC、索引器、审计工具都会收到一张待办单。后来执行层 RPC 规范改为按方法逐条维护、随升级同步修订,正是为了不再靠这种补丁式追单。读 3045 与 3046 的正确姿势不是嘲笑它们的琐碎,而是把它们当作主升级发布清单上缺失那一栏的证据。

风险提示:文中端点与状态描述以 EIPs 仓库与执行层接口文档当期版本为准,本文不构成投资建议。