eip4844
Blob 交易与 KZG(EIP-4844, Proto-danksharding)
EIP-4844 为扩容引入“blob 数据”与独立的 blob gas 市场。 交易类型 0x03
携带“版本化哈希(versioned hashes)”,实际 blob 数据以“sidecar”随网络传播;链上仅存承诺与费用信息。
交易主体(type 0x03)关键字段
- 与 1559 类似字段:
chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data, accessList
- 新增:
maxFeePerBlobGas
、blobVersionedHashes[]
- 签名:
y-parity, r, s
(链 ID 在主体中)
注意:执行层不可直接读取 blob 内容;EVM 逻辑看不到 blob 数据本身。
Blob 与承诺
- 每个 blob 约 125–128 KB(场大小固定的编码单元)
- 使用 KZG 承诺(BLS12-381)保证 blob 内容完整性;随交易提供点评估证明
- 版本化哈希用于 EL 识别 blob(含版本字节 + 承诺哈希),链上写入
blobVersionedHashes
Blob gas 市场与 BaseFee
- 独立于执行 gas 的市场:
- 目标 blob 数量(主网):≈ 3/块
- 上限 blob 数量:≈ 6/块
blobBaseFee
按 1559 公式随块需求调节(步长上限 1/8)
- 用户为 blob 数据另行设置
maxFeePerBlobGas
;实 际支付min(maxFeePerBlobGas, blobBaseFee + priority)
(通常无 priority) blobBaseFee
被销毁(burn),不属于提议者奖励
相关改动与接口
- EVM 可用
BLOBBASEFEE
(EIP-7516)获取当前 blob base fee - RPC:
eth_blobBaseFee
获取当前 blob base fee 建议 - 打包器需同时传播/校验“交易 + blob sidecar + 证明”;节点可独立裁剪过期 blob 数据
使用建议
- L2 rollup 将 calldata 迁移到 blob,显著降低数据可用性成本
- 估算费用时同时考虑执行层 baseFee 与 blobBaseFee;分别设置上限避免拒绝
- 观察网络目标/上限:高峰期 blob 稀缺会推高 blobBaseFee
Go 伪代码(构造 0x03)
tx := &BlobTx{
ChainID: cid,
Nonce: n,
MaxPriorityFeePerGas: tip,
MaxFeePerGas: maxFee,
Gas: gas,
To: &to,
Value: val,
Data: input,
AccessList: al,
MaxFeePerBlobGas: maxBlobFee,
BlobVersionedHashes: hashes, // 来自 KZG 承诺
}
sig := SignTx(tx, priv)
raw := EncodeTyped(0x03, tx, sig)
参考:EIP-4844、KZG 可信设置说明、客户端实现文档(geth/reth/nethermind)