Elea Notes.

PeerDAS:以 1/16 的下载量换取全量数据可用性保证

PeerDAS 将 blob 扩展后切分为 128 列,每节点仅保管 8 列。纠删码与多项式承诺使随机抽样在概率上等价于全量核验。附主网实测的 blob 占用数据。

结论

  • 以太坊在 2025 年 12 月 3 日上线的 Fusaka 升级里带了 PeerDAS(EIP-7594)。它解决的问题一句话说清:以前每个节点都要下载每一个 blob,现在每个节点只下载一小部分,但网络整体仍能证明数据都在
  • 关键机制不是”分片存储”这么简单。分开存之后立刻出现新问题:每个节点只有碎片,怎么保证没人在撒谎? 答案是纠删码多项式承诺,这是全篇最值得理解的部分。
  • 数字很具体:扩展后的 blob 数据被切成 128 列,普通节点订阅其中至少 8 个子网,也就是收到全部数据的 1/16。因为数据被扩展成了两倍,这 1/16 相当于原始数据的 1/8——理论上给出 8 倍的扩容空间。
  • 扩容不是一次到位。Fusaka 刚激活时 blob 数量没有任何变化,之后靠 BPO(EIP-7892)这种只改参数的小型分叉每隔几周翻一倍,上限 48。
  • 我在写这篇时抓了主网最近 25 个区块实测:blob 数在 1 到 10 之间,均值 4.28。也就是说扩容通道已经打开,但实际用量还远没到顶

全量下载模型的扩展瓶颈

先讲清楚这是个什么瓶颈,因为它不是存储瓶颈,是上传带宽瓶颈。

以太坊的扩容路线是把交易推给 L2(rollup),L2 只把安全关键的承诺和压缩后的数据发回 L1。2024 年的 Dencun 升级引入了 EIP-4844,给这类数据开了一个专门通道:blob。blob 是”二进制大对象”,特点是不进 EVM 执行、节点只保存有限时间。每个 blob 最多装 128KB。

但 4844 留了一半没做完:网络里每个节点仍然要下载每一个 blob。于是 blob 数量一涨,每个节点的下载量就线性上涨。

以太坊官方文档在这里的论证值得注意,它不是在谈成本,是在谈去中心化的底线:即便算力便宜,上传带宽的限制——文档点名了德国、比利时、澳大利亚、美国这些发达国家的城市——也可能让节点只能跑在数据中心里。一旦家庭节点跑不动,去中心化就没了。所以 blob 的大小和数量被带宽卡住,不是被存储卡住。

分片后的数据扣留问题

这是核心。数据可用性采样(DAS)的思路是:不再让每台机器存下每个 blob,而是把 blob 切块,每个节点只下载几块。

问题立刻来了:如果每个节点只有碎片,恶意节点完全可以提供假数据。 怎么保证数据既完整又真的存在?

答案分两层。

第一层是正确性,靠 KZG 承诺,这在 EIP-4844 里已经有了。KZG 是一种多项式承诺方案,它的关键性质是:可以验证多项式曲线上的任意单个点。每个区块里带一个很小的承诺(只有几个字节,类似哈希),节点可以据此验证收到的碎片确实属于这个区块承诺的数据。于是采样节点只要检查曲线上少数几个点,就能获得很强的概率保证。

第二层是可恢复性,靠 Reed-Solomon 风格的纠删码。做法是把 blob 数据表示成一个多项式(数据编码为系数),然后在额外的点上求值,得到一个扩展后的 blob,求值点数量翻倍。这个冗余带来一个很好的性质:

只要总数据(含扩展部分)中有至少一半可得,原始 blob 就能被完整重建

文档里那个类比很到底:DVD 用的是同一套编码。划伤了还能读,就是因为 Reed-Solomon 能把缺失的多项式片段补回来。

参数:128 列、8 子网、1/16 下载量

具体到网络层。Fusaka 之后共识层的网络按 gossip 主题/子网组织:

  • 扩展后的 blob 数据被切成 128 列
  • 每列分配到特定子网,节点订阅其中一部分并只保管自己那些
  • 普通节点参与至少 8 个随机选中的列子网

算一下这意味着什么:

8 / 128 = 1/16        节点收到的占全部(含扩展)数据的比例
因为数据被扩展了 2 倍:
1/16 × 2 = 1/8        相当于原始数据的比例
→ 理论扩容上限 8×     相对"人人下载全部"的旧方案

订阅哪些子网不是自己挑的,而是由节点那个随机生成的唯一 ID 决定——这个 ID 平时用作连接身份,在 PeerDAS 里同时决定了它必须订阅的子网集合,从而让全网数据分布接近均匀随机。跑验证者的节点要按验证者数量订阅更多子网。

还有两个设计值得单独点出来:

自愈。 一旦某个节点成功重建出原始数据,它会把恢复出来的列重新播回网络,主动填补数据缺口。

超级节点。 关联验证者总余额 ≥ 4096 ETH 的节点必须做超级节点,订阅所有列子网、保管所有列,持续修补缺口。

可用性是被强制的,不是自愿的:验证者要遵守新的分叉选择规则,只有在验证过数据可用之后才会接受并投票给一个区块。

安全性论证

EIP-7594 本身给了形式化的界,思路值得了解。设:

  • n = 采样节点总数(网络规模)
  • m = 可能的样本总数(规范里的 NUMBER_OF_CUSTODY_GROUPS
  • k = 每个节点至少要下载的样本数(SAMPLES_PER_SLOT

要在数据被扣留的情况下骗过其中 ϵ\epsilon 比例的节点,攻击成功概率的上界由三个因子相乘:选哪些节点来骗((nnϵ)\binom{n}{n\epsilon})、选一个“最大但仍不足以让人重建全部数据”的样本子集、以及这些节点的采样请求恰好全部落在该子集里的概率。

EIP 里按主网参数、假设网络有一万个节点,给出了具体数值:

ϵ\epsilon被针对的节点数攻击成功概率上界
0.0110011
0.022001020.0410^{-20.04}
0.0330010101.5510^{-101.55}
0.0440010198.2410^{-198.24}
0.0550010306.3410^{-306.34}

这张表最值得看的不是那些小到荒谬的数字,而是它们下降得多快:想骗过 1% 的节点是可行的(上界就是 1,等于没有保证),但想骗过 2% 就掉到 102010^{-20},3% 掉到 1010110^{-101}。攻击难度不是线性上升,是断崖。

换句话说,攻击者可以骗过少数几个节点,但骗不过网络——而共识只需要网络整体判断正确。

我尝试用规范给的三项描述反推这个公式,没能精确复现出表里的数字(我算出 ϵ=0.02\epsilon=0.02 时是 104010^{-40} 量级,比它保守)。真正的公式在 EIP 的一张 SVG 图里,文字版没有给出。所以上面这些数字我按规范原文引用,推导细节我没有验证到位,这点如实说明。

结论是这个方案的安全性随网络规模增长而提升,而每个节点下载的数据量只需亚线性增长。

这是我觉得 PeerDAS 最漂亮的地方:它没有假设任何节点是诚实的,安全性来自于”你不知道我会抽查哪几个点”。

渐进放量与 BPO 分叉

理论上 8 倍,但Fusaka 激活时 blob 数量一点没变

原因是提高 blob 数量需要先确认 p2p 网络在真实负载下稳定。测试网给了足够信心上线功能,但不足以直接放开数量。于是 Fusaka 引入了 BPO(Blob-Parameter-Only,EIP-7892)分叉:只修改 blob 相关参数(target、max、baseFeeUpdateFraction),不改任何客户端代码。这些参数被预先编排进支持 Fusaka 的客户端版本里,按计划自动生效,不需要每次都做全生态协调。

节奏是每隔几周翻一倍,直到上限 48。参考历史:Dencun 刚引入 blob 时 target 是 3,Pectra 提到 6,Fusaka 之后才能继续往上走。

我实测的当前状态。 写这篇时我抓了主网最近 25 个区块(最新块 25645033,2026-07-30T10:19:59Z),按每个 blob 占 131072 blob gas 换算:

每块 blob 数:1 3 1 4 3 4 6 2 4 5 5 3 6 1 8 5 2 4 10 6 3 6 6 5 4
最大观测值:10        均值:4.28
blob gas price:约 0.0052 gwei

出现了 10 这个值,说明上限确实已经抬过 6 了。但均值只有 4.28,blob 价格也趴在很低的位置——扩容空间是打开的,真实需求还没填满它。这一点比”8 倍扩容”这个标题数字更有信息量。

边界与未验证项

  • 「8 倍」是理论上限,不是当前状态,也不是最终状态。真实的容量取决于 BPO 走到哪一步,而这依赖网络实测表现。
  • 我的 25 个区块样本很小,只能说明数量级,不能当作严格统计。blob 用量随 L2 活动波动很大。
  • PeerDAS 只是中途站。它对每个 blob 单独做 1D 纠删码;完整的 Danksharding(FullDAS)要在整个 blob 数据矩阵上做 2D 纠删码,冗余性质更强、重建和验证更高效。文档明确说这还需要大量网络与协议优化和进一步研究。
  • 「L2 手续费会降」在方向上成立,但文档自己也说了:这需要时间,且取决于 BPO 的推进节奏。不要指望立刻见效。

来源

  1. PeerDAS — Fusaka upgradeethereum.org
  2. EIP-7594: PeerDAS - Peer Data Availability SamplingEthereum Improvement Proposals
  3. EIP-7892: Blob Parameter Only HardforksEthereum Improvement Proposals
  4. Fusaka upgrade overviewethereum.org
  5. Mainnet blob data (25 blocks sampled 2026-07-30)Blobscan API