ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

EIPs 仓库解析:EIP-7918 如何用执行成本为 blob 基础费设置下限

EIPs 仓库解析:EIP-7918 如何用执行成本为 blob 基础费设置下限 EIPs 仓库解析EIP-7918 如何用执行成本为 blob 基础费设置下限【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs导读本文围绕 Ethereum Improvement Proposal 仓库EIPs中的 EIP-7918Blob base fee bounded by execution cost已进入 Final 状态展开剖析其如何通过在calc_excess_blob_gas()中引入一条if子句为 blob 设置一个以执行成本为锚的保留价格reserve price。读完本文你将掌握 blob 费用市场从 EIP-4844 到 EIP-7840 再到 EIP-7918 的演进脉络、EIP-7918 的完整规范与代码级实现细节以及其背后的供需经济学、KZG 证明验证成本实证与安全考量。背景blob 费用市场的由来与缺陷EIP-4844 引入的动态定价拍卖EIP-4844 为以太坊引入了 blob携带数据的交易块与一种独立于普通 gas 的新型 gas——blob gas。其定价机制是典型的动态定价拍卖当消耗的 blob gas 少于目标值target_blob_gas GAS_PER_BLOB * blobSchedule.target时降低 blob 基础费当消耗超过目标值时提高 blob 基础费。核心状态变量是区块头中的excess_blob_gas其更新函数如下EIP-4844 原始版本def calc_excess_blob_gas(parent: Header) - int: if parent.excess_blob_gas parent.blob_gas_used TARGET_BLOB_GAS_PER_BLOCK: return 0 else: return parent.excess_blob_gas parent.blob_gas_used - TARGET_BLOB_GAS_PER_BLOCKblob 基础费本身则由指数函数fake_exponential()计算MIN_BASE_FEE_PER_BLOB_GAS * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)其中关键常量包括| 常量 | 值 | 说明 | | - | - | - | |GAS_PER_BLOB|2**17| 每个 blob 消耗的 blob gas | |BLOB_BASE_FEE_UPDATE_FRACTION|3338477| 控制 blob 基础费的最大变化率约每块 1.125 倍 | |MIN_BASE_FEE_PER_BLOB_GAS|1| 基础费下限1 wei |EIP-7840blobSchedule 与按分叉动态调参EIP-7840Final进一步将每个分叉的 target、max 与baseFeeUpdateFraction放入客户端配置文件中的blobSchedule对象例如blobSchedule: { cancun: { target: 3, max: 6, baseFeeUpdateFraction: 3338477 }, prague: { target: 6, max: 9, baseFeeUpdateFraction: 5007716 } }EIP-7918 的规范正建立在这一机制之上处理当前区块时使用当前区块所属分叉的blobSchedule分叉后第一个区块计算base_fee_per_blob_gas时必须使用新的baseFeeUpdateFractioncalc_excess_blob_gas()中必须使用新的max与target。动机当执行成本主导时价格信号失效EIP-7918 直指 blob 费用市场的一个结构性问题拍卖只有在 blob 基础费本身构成有意义的“价格信号”时才能正常运作。当 blob 携带交易的执行成本L1 执行 gas、ZK proof 验证、优先费占据主导地位时blob 基础费的相对变化对消费者总成本的影响微乎其微协议便无法再依靠 blob 基础费来控制 blob 消费的均衡数量。其后果是当前机制可能反复下调 blob 基础费直至最终停在 1 wei 的下界。此时 blob 基础费哪怕变化 10%也仅使利用 blobspace 的总成本偏移 0.0000001%。一旦需求回升需要超过一小时的接近满块区块才能恢复市场出清的均衡费用期间机制还会间歇性退化为一级价格拍卖first-price auction而这被 blob 消费者视为更差的体验。资源消耗的剧烈波动对 blobspace 的扩展scaling十分不利。EIP-7918 还承担了第二个功能节点必须通过密码学方式验证 KZG proofs以确保 commitments 与提供的 blobs 对应而这一过程计算开销高昂。让 blob 消费者至少为其施加在节点上的计算负担支付一部分市场费率是合理的设计目标——而执行基础费恰好反映了消费者请求节点计算服务时的供需热度。综上本提案联合保证两件事通过设定一个相对 blob 消费者 L1 执行成本而言显著的保留价格让 blob 基础费更新机制能够正常运作blob 消费者至少为节点计算支付相关的一部分市场费率数据本身的附加费用则在 blob 费用市场中独立确定。规范在 calc_excess_blob_gas 中引入 if 子句参数| 常量 | 值 | | - | - | |BLOB_BASE_COST|2**13|函数修改EIP-7918 对 EIP-4844 的calc_excess_blob_gas()增加了一条if子句当“一个 blob 的价格”低于“BLOB_BASE_COST份执行 gas 的价格”时函数不再从excess_blob_gas中减去target_blob_gas从而使excess_blob_gas随blob_gas_used增长同时保持每块最大增量不变。def calc_excess_blob_gas(parent: Header) - int: target_blob_gas GAS_PER_BLOB * blobSchedule.target if parent.excess_blob_gas parent.blob_gas_used target_blob_gas: return 0 if BLOB_BASE_COST * parent.base_fee_per_gas GAS_PER_BLOB * get_base_fee_per_blob_gas(parent): return parent.excess_blob_gas parent.blob_gas_used * (blobSchedule.max - blobSchedule.target) // blobSchedule.max else: return parent.excess_blob_gas parent.blob_gas_used - target_blob_gas对照 EIP-4844 的原始实现EIPS/eip-4844.md#L155-L160可以看出关键差异原逻辑只要excess_blob_gas blob_gas_used target_blob_gas就总是减去target_blob_gas费用可升可降新逻辑当保留价格条件成立时即执行成本定价主导excess_blob_gas改为按blob_gas_used * (max - target) // max增长——它只升不降且每块的最大增量与原来一致。这正是后文执行费快速上涨时的延迟响应一节中所说的“以直观方式回归 blob 费主导定价机制”的工程实现保持相同最大涨幅同时不允许下降。从仓库结构看这条if子句是整个 EIP-7918 唯一的共识层改动极小侵入性正是该提案的一大特点。值得注意的是EIP 家族中还有两条同领域的竞品方案EIP-7915 通过 EMA 均值回归权重为 blob 基础费建立平滑的下限EIP-7742 则将target_blobs_per_block移入区块头并由 CL 保证其有效性。EIP-7918 选择的是以执行成本为锚的相对阈值路线与 EIP-7915 的长期均值锚定形成对照。原理保留价格与费用无弹性需求曲线的“无弹性视界”EIP-7918 用简洁的需求函数刻画问题。blobspace 的真实需求可写作 $Q(b c)$其中 $b$ 是 blob 基础费$c$ 是消费者“每 blob gas”的执行成本c execution_cost * base_fee_per_gas / GAS_PER_BLOB依据需求定律$b c$ 越低需求越高。但从 blob 基础费更新机制的视角看$c$ 是固定的。只要 $c 0$需求曲线就存在一个“无弹性视界”inelasticity horizon越过该视界后继续压低 $b$ 不再能增加 $Q$$$\lim_{b \to 0} Q(b c) Q(c).$$也就是说需求曲线最终变成一条竖直线——blob 基础费的变化不再影响需求。而此时协议使用的是一条长期完全无弹性的供给曲线竖直线固定于target_blob_gas两条竖直曲线相交意味着有机需求的微小偏移或执行基础费的微小变化都可能引致均衡 blob 基础费的剧烈跳变甚至直接跌到 1 wei 边界。图 1展示了这一现象四条不同执行基础费下的真实需求曲线黑至红随着 blob 基础费下降最终都与供给曲线平行垂直小偏移箭头即导致均衡费用巨变而在保留价格机制下均衡方块将落在左上象限的边缘——目标供给曲线与需求的交点或沿虚线表示的“考虑执行成本的保留价格均衡带”。保留价格的数学形式为修复该机制EIP-7918 规定了一个不能再被压低的保留价格当BLOB_BASE_COST * base_fee_per_gas GAS_PER_BLOB * base_fee_per_blob_gas时不再从excess_blob_gas中减去target_blob_gas。这意味着保留 blob 基础费为$$\text{reserve} \frac{BLOB_BASE_COST \times base_fee_per_gas}{GAS_PER_BLOB}$$且保留价格与执行基础费的比值被固定为BLOB_BASE_COST / GAS_PER_BLOB。以提案常量计算$$\frac{2^{13}}{2^{17}} \frac{1}{16}$$即在保留价格生效时一个 blob 的价格至少等于2**138192份执行 gas 的价格。由此blob 费用占总价格$b c$的比例恒不低于BLOB_BASE_COST / (BLOB_BASE_COST execution_cost)——这正是图 1 中虚线均衡带总是位于零执行基础费有机需求曲线下方一个恒定比例的原因。无论需求曲线未来如何变化该提案基于的是切实影响 blob 消费者的有形成本因此是一个合理的“中性”价格下界。延迟响应执行费快速上涨时的平滑回归当if条件判定以太坊处于“执行费主导定价”区间时blob 基础费按blob_gas_used * (max - target) // max上升而不减去target_blob_gas。若执行基础费快速上涨会有少数区块的窗口期期间target_blob_gas永远不会被减去让 blob 基础费追赶上来。提案作者认为这不成问题这种平滑响应甚至可被视为一个优点——它避免了费用在两种定价机制切换时的剧烈振荡。实证KZG 证明验证成本与历史费用数据blob 的 KZG 验证计算负担EIP-7918 用详细的算力对比论证BLOB_BASE_COST 2**13的取值合理性。EIP-4844 引入的 DAS 路线图中CL 验证者需验证 KZG commitments 与 blobs 的对应关系EL 节点也须为进入 tx pool 的每个 blob 验证tx_payload_body与包装数据。验证整个 blob 的 KZG proof 的计算量略高于验证单点 proof——后者正是智能合约支付的POINT_EVALUATION_PRECOMPILE_GAS50000所覆盖的操作。EIP-7594PeerDAS将进一步改变计算需求依赖 blob cells 及其独立 proofs粗略量级如下EL 节点在将携带 blob 的 tx 纳入 tx pool 前批量验证每个 blob 的CELLS_PER_EXT_BLOB128个 cell proofs该验证如verify_cell_kzg_proof_batch约为单次POINT_EVALUATION_PRECOMPILE_GAS计算量的15 倍全节点full nodes托管 4 列custodied columns每列含 payload 中所有 blob 各一个 cell可按列批量验证超级节点supernodes托管 128 列每列含所有 blob 各一个 cell验证者介于两者之间托管 4–128 列所有节点每 slot 额外对SAMPLES_PER_SLOT8列进行 peer-sampling。CL 通过按列批处理 cell proofs可在 blob 数量增加时摊薄每 blob 的计算时间也可以将全部列联合批处理或跨列并行。但需要注意的是rollup 使用的点评估预编译同样可并行化因此单点评估 vs 按列顺序批处理 blob的对比仍然成立。图 2展示了在 Apple M2 Max12 核上测得的、每 blob 验证时间相对单次点评估操作执行时间的倍数。EL mempool 验证红色在最坏情况下耗时 15 倍与 blob target 无关列验证的每 blob 耗时取决于托管/采样的列数并随 blob target 上升而下降同一列的所有 cell 联合处理的加速效应。绿色线标记的BLOB_BASE_COST相对节点承受的计算成本而言是适中的。历史数据的费用演化EIP-7918 还给出了两段历史窗口的实证2024 年 11 月的三周平均执行基础费约 16 gwei与 2025 年 3 月的三周平均约 1.3 gwei。提案的保留费用被直接施加于原始数据未计入其对均衡费用的潜在影响——实际上一旦在该费用水平的需求高于目标供给均衡 blob 基础费会从阈值水平进一步上升。EIP-7918 施加的是两条曲线的最大值图中深色部分。图 32024 年 11 月三周平均执行基础费约 16 gwei的 blob 基础费演化EIP-7918 施加两曲线之最大值深色。图 42025 年 3 月三周平均执行基础费约 1.3 gwei的 blob 基础费演化。可以直观看到在执行基础费低的时期当前机制下 blob 基础费更容易沉底而保留价格提供了地板。图 5覆盖 2024 年 11 月至 2025 年 3 月约 90 万区块自区块号 22075724 起的 blob 基础费直方图无阈值黑与施加 EIP-7918蓝黑虚线组合的对比。直方图采用每十进制 100 个对数间距分箱并以宽度 21 的 Hanning 窗做镜像反射边缘的轻度平滑。面向未来的设计考量EIP-7918 的作者从数据存储成本的历史趋势论证了相对阈值的必要性过去 80 年存储固定数据的价格持续下降技术进展Nielsen 定律、Moore 定律会持续拉低数据服务的单位成本ETH 计价的每 blob 价格也应随以太坊 blob 吞吐量上升而下降。此外更高的 ETH 计价 blob 总收益通过燃烧分配给 ETH 持有者会推高 ETH 的法币价值其他条件不变这反过来又对 blob 基础费形成上界。同样的反身性reflexivity也适用于执行基础费。因此固定阈值不关联 blob 数量或执行费可能不可持续当以太坊每块卖出更多 blob 时均衡 blob 基础费应有一个相对更低的地板任何固定阈值都需要随规模扩大而反复重新调整才能保持相同的相对影响。EIP-7918 将保留价格锚定在BLOB_BASE_COST份执行 gas 上正是为了随执行市场自然伸缩。当然作者也坦承边界情形若 blob 吞吐量提升数个数量级而区块空间不扩容执行基础费保持高位BLOB_BASE_COST份执行 gas 的保留价格仍会过高——例如每块 1000 个 blob 30M 执行 gas 时即使在严格按保留价格出售 blob 的情况下blob gas 也只贡献约 1/521.5%的协议收入。但这并非以太坊当前的演进轨迹只要区块空间与 blob 空间大致同步扩展保留价格就能维持在期望水平。安全考量在保留价格机制下blob 基础费将稳定在一个“blob 至少花费BLOB_BASE_COST份执行 gas”的水平。提案作者声明据其所知这不引入任何安全风险。从机制设计角度该改动仅阻止 blob 基础费跌破与执行成本挂钩的地板不影响区块验证规则的其他部分也不改变 blob 数量上限的校验路径。总结EIP-7918 以最小侵入calc_excess_blob_gas()中的一条if子句 常量BLOB_BASE_COST 2**13解决了 blob 费用市场在“执行成本主导”区间失灵的问题保留价格让 blob 基础费重新成为一个有效的价格信号同时确保 blob 消费者为节点的 KZG 验证计算支付相关的一部分市场费率。它与 EIP-4844、EIP-7840 一脉相承与 EIP-7915、EIP-7742 共同构成 blob 费用机制迭代的完整图景是理解以太坊 blobspace 经济学演进的关键一环。版权说明本文基于 EIP-7918 原文版权及相关权利已通过 CC0 放弃。【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表