什么是EIP-4844?以太坊扩容的关键一步
EIP-4844是**以太坊Dencun升级**(也称坎昆升级)中的核心提案,于2024年3月13日正式上线。它引入了一种新型交易类型——Blob交易,专为Layer2 Rollup解决方案设计,旨在显著提升以太坊的交易吞吐量并大幅降低手续费[1][2][5]。
传统以太坊交易使用Calldata(调用数据)存储Layer2数据,这种方式存储成本高昂,因为Calldata会永久占用EVM执行空间。EIP-4844通过新增Blob数据格式解决这个问题:Blob数据不参与EVM执行,仅存储在共识层,生命周期约18-30天(具体为4096个epoch),过期后可自动清理或迁移至去中心化存储,从而节省存储成本[1][3][4]。
简单来说,EIP-4844是Proto-Danksharding(原型分片)的第一阶段,它不改变现有分片设计,而是为未来完整分片铺路。通过降低L2数据上链费用,EIP-4844让Optimistic Rollup和ZK Rollup等方案的手续费可能下降90%以上[2][7]。
EIP-4844的技术原理详解:从Blob交易到KZG承诺
EIP-4844的核心创新在于新增一种交易类型:SignedBlobTransaction。其数据结构基于EIP-1559交易,但增加了两个关键字段:
- blob_versioned_hashes:Blob数据的版本化哈希列表,每个交易最多携带6个Blob,每个区块最多容纳6个Blob。通过将Blob数据转换为KZG多项式承诺,再生成VersionedHash,实现数据与交易的分离关联。这种设计使用KZG算法(Kate-Zaverucha-Goldberg承诺方案)作为证明机制,便于未来兼容STARK等其他算法[1][2][3]。
- max_fee_per_data_gas:为Blob数据设置独立的低Gas费标准,远低于Calldata费用,确保Rollup经济性[1]。
Blob数据存储流程如下:
- Rollup将L2交易数据打包成Blob。
- 使用KZG多项式生成承诺(commitment),转换为VersionedHash。
- 交易携带VersionedHash上链,节点验证承诺有效性(通过新增的POINT_EVALUATION_PRECOMPILE预编译合约)。
- 区块记录blob_gas_used,确保总Blob Gas不超过MAX_BLOB_GAS_PER_BLOCK限制[2][3]。
新增的DATA_HASH opcode用于计算Blob哈希,Gas成本固定,进一步优化验证效率。为了验证KZG证明,EIP-4844引入了kzg_to_versioned_hash函数:将承诺通过SHA256哈希后添加版本前缀,确保向前兼容[2]。
如何在实际项目中使用EIP-4844:开发者教程
作为开发者,你可以快速集成EIP-4844来优化Rollup链。以下是基于OP Stack(如Optimism)的升级步骤指南[4]。
步骤1:升级客户端支持Blob交易
- 使用Geth或Erigon等支持Dencun的节点客户端,确保版本兼容EIP-4844。
- 在rollup的submitter组件中打包L2数据为Blob:先生成4096个field elements(每个Blob 31*4096字节),通过preimage oracle获取commitment[4]。
步骤2:实现Blob数据获取与解析
- 在fetcher组件中,从L1区块头读取blob_gas_used和versioned_hashes。
- 使用KZG验证重建完整Blob:循环读取field elements,验证proof有效性。示例伪代码:
for i in 0..params.BlobTxFieldElementsPerBlob {[4]
fieldElement = oracle.Get(preimage.BlobKey(keccak(fieldElemKey)))
blob.Add(fieldElement)
}
步骤3:签名与发送Type3交易
- 构造BlobTransaction:设置chain_id、nonce、max_fee_per_data_gas等字段。
- 签名后广播,确保to字段可选(支持合约部署)。
- 测试网络如Sepolia已支持,监控Gas消耗:Blob Gas价格通常仅为Calldata的1/10[1][6]。
注意事项:Blob仅存18天,L2需及时从L1拉取数据;升级前备份节点,避免fork风险[4]。
EIP-4844的影响与未来展望
EIP-4844上线后,Arbitrum、Optimism等L2手续费已显著下降,用户体验接近Solana水平。它标志着以太坊从“信任我兄弟”(Optimistic Rollup的挑战期)向更高效数据可用性过渡[7]。
未来,EIP-4844将作为分片基础,支持完整Danksharding(EIP-4844的后续阶段),进一步提升TPS至10万+。对于开发者,这是优化DApp成本的绝佳机会;对于投资者,L2生态爆发指日可待[2][9]。
通过以上教程,你已掌握EIP-4844的核心实现。立即在测试网实验,迎接以太坊新时代!(本文约1280字)