引言
EIP‑4844(Proto‑Danksharding)是以太坊在向完整 Danksharding 过渡前的关键中间步骤,旨在通过 blob 数据 的临时存储降低 L2 交易的 gas 成本。该提案在 2023 年的 “Shanghai” 硬分叉中正式激活,使每个区块能够承载最多 4 MB 的 blob,约等于 40 倍于当前 calldata 的容量。实现后,链上存储需求仅在 1‑2 周后自动清除,避免了长期状态膨胀。
工作原理/How it works
- 每个区块在执行完交易后,会附加 0‑4 个 blob(每个大小 1 MiB),这些 blob 通过新的
blob类型的 transaction 发送。 - Blob 数据不进入以太坊状态树,只写入 KZG commitments(基于多项式承诺的加密摘要)并存放在专用的 “blob storage”。
- L2 通过 rollup 将大量 calldata 打包进 blob,单笔 L2 交易的费用从约 0.01 ETH 降至 0.001 ETH(约 90% 成本削减)。
- 以太坊节点在 ~2 周 后自动丢弃已确认的 blob,保持链上状态的恒定大小;而验证者只需保留 KZG 承诺用于数据可用性检查。
常见用例/Common use cases
- Rollup 扩容:如 Arbitrum 和 Optimism 可将每日约 100 GB 的 calldata 压缩至 1 GB 的 blob,显著提升吞吐量。
- 去中心化存储:Filecoin、Arweave 等项目可利用 blob 作为短期缓存层,将大文件的前 1 MiB 直接写入以太坊,提高可用性证明的效率。
- 链下计算结果提交:在 zk‑Rollup 中,证明生成方只需将证明的公共输入写入 blob,验证者即可在链上快速验证,而无需完整的计算数据。
常见误解/Pitfalls
- Blob 永久保存:很多人误以为 blob 会永久留在链上,实际上它们在约 2 周 后被节点自动清除,只保留承诺用于数据可用性检查。
- 降低所有费用:Proto‑Danksharding 主要降低的是 calldata 成本,对执行合约本身的 gas 费用影响有限,仍需关注合约优化。
- 立即实现完整 Sharding:EIP‑4844 只是 Danksharding 的“原型”,完整的多分片数据可用性层仍需数年时间才能上线。
FAQ
Q1:为什么需要 KZG 承诺而不是直接存储 blob?
A:KZG 承诺提供了 可验证的多项式评估,使验证者在不下载完整 blob 的情况下即可检查数据可用性,极大降低了网络带宽需求。
Q2:节点是否必须存储所有 blob?
A:普通全节点可以选择 “blob‑pruned” 模式,只保留最近两周的 blob;而专门的 blob‑archive 节点则保留全部历史数据供查询。
Q3:EIP‑4844 对现有 L1 合约有何影响?
A:对已部署的合约本身没有直接影响,但如果合约依赖大量 calldata(如批量转账),迁移到使用 blob 的 rollup 将显著降低成本。
*本文旨在提供技术概念说明,不构成任何投资建议。*