一条迟到了两年半的镜像指令
以太坊主网在 2024 年 3 月的 Dencun 升级(执行层代号坎昆)里给 Blob 数据装了一套独立的费用市场:Blob 基础费随每个区块的 Blob 用量自动升降,逻辑和 EIP-1559 的主 Gas 基础费同构。设计者没有留下「有了市场却读不到价格」的缺口:同一次升级里,EIP-7516 顺手把读数指令装进了 EVM。EIP-7516 新增 BLOBBASEFEE 指令,字节码 0x4a,零输入、压一个输出、收 2 Gas。它把自己做成了 BASEFEE 指令(EIP-3198,2021 年伦敦升级激活)的镜像——同样的两段式:EIP-4844 定义 Blob 基础费怎么算,EIP-7516 让合约能查。
Gas 只收 2 的理由和 BASEFEE 一样朴素:这个数在区块头解析阶段就算出来了,指令只是把现成数据放上栈,不新增任何读写负担。

谁真的需要读这个数字
提案点名两类用户。第一类是 Rollup 的桥和收件箱合约:二层把批量数据发到主网时烧的是 Blob 费,如果桥合约能直接读 BLOBBASEFEE,就能在用户存款或提现时按当前 Blob 价格动态收取数据补贴,不需要运营方拍一个固定值——那个固定值永远在暴涨和过时之间反复横跳。第二类是 Blob 费用的衍生品:想做「数据费期货」或平滑账单的协议,得先在链上有一个可信的费用读数,预言机喂一个执行时点即过期的数字显然不合格,指令读数则天然与结算规则同源。
把这条指令和 BASEFEE 摆在一起看最有启发:同一个「把协议自动算出的价格暴露给合约」的模式,在两种资源上各装了个插座。插座本身不做决策,它改变的是「谁有资格做决策」——从运营者参数表,换成了合约代码。
读数边界:三件事它不负责
第一,BLOBBASEFEE 返回的是 Blob Gas 价格维度上的数,与 EVM 执行用的 Gas 价格是两套市场,互不换算、各涨各的。用 BASEFEE 的数据推算 Blob 账单,等于用出租车价估机票。第二,它只有当前区块一个粒度:Blob 基础费按区块目标用量调节,拥挤区块连续上调时,你读到的永远是「刚发生过的过去」,对下一个区块只有惯性参考意义。第三,这条指令在 2024 年 3 月之前部署的字节码里根本不存在,跨链环境、老链副本或分叉链对它的行为可能不同——合约在 0x4a 处遇到「未定义指令」会直接异常终止,迁移代码前先确认目标链真的支持它。
一个直觉算术
Blob 基础费的调节器长这样:每个区块有个目标 Blob 用量,超出目标就上调、低于目标就下调,单价围绕 wei 级别的数量级震荡。假设某小时连续出现满 Blob 区块,费用每块向上翻着涨,几分钟后可能翻出十几倍。一个在这条曲线上做「固定价格数据发布」报价的桥合约,如果不读 BLOBBASEFEE 而用一小时前人工设的常数,在高峰期每笔发布都在倒贴;读了,则自动把账单转嫁给当笔用户。同样的市场,两种结局,差别只在那条 2 Gas 的指令上。
快速问答
问:普通用户会感知到这条指令吗? 答:不会直接感知。它是给合约开发者装的工具;用户的体验变化是间接的——二层费用报价更跟手、补贴机制更自动化,账单的「人工调参时差」变短。
问:0x4a 之前是什么指令? 答:在以太坊主网的指令表里,0x4a 此前长期是未定义操作码,碰到即终止。这正是新指令能安全插入的前提——给「本来就报错」的位置填一条语义明确的读数指令,不改变任何存量合约的行为。
和邻居指令的排排坐
EVM 指令表里,0x48 的 BASEFEE 与 0x4a 的 BLOBBASEFEE 像两把相邻的尺子,中间那格属于「本块 Gas 用量」。三条读数指令服务三套账:执行费、数据费、区块体积。把它们放在同一张桌上看,能理解协议设计的一个长期偏好——凡是被共识规则自动算出来、且结算必然要用到的量,最终都会被装一条只读指令暴露给合约。下一个进入这条流水线的候选,大概率还是某个计费器已经先跑起来、但程序看不见的数字。
风险提示
本文是协议机制科普,不构成投资建议。费用机制与参数随升级变化,涉及成本决策请核对当期官方规范与目标链的实际支持状态。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。