数据列传输的增量思路:EIP-8136 只补缺的 cell 图 1
数据列传输的增量思路:EIP-8136 只补缺的 cell · 图 1

以太坊给二层数据准备的 PeerDAS(EIP-7594)把 blob 打散成数据列分发:节点不必下载全部 blob,只需要从网络拿齐负责采样的列并做可用性检查。列的粒度解决了要不要的问题,却没完全解决重不漏的问题——节点之间传列,仍然一传就是整列。EIP-8136 在 2025 年 1 月提出一个精简的补丁:允许节点只取自己缺的 cell。提案当前处于 Review 状态,挂在 EIP-7594 之上。

一个常见的浪费场景

一个区块引用的 blob,绝大多数情况下其内容早已躺在节点自己的内存池里——交易传播时 blob 就跟着来了。可只要其中有一个 blob 是本地没见过的,信标层的可用性检查就会卡住:按现行设计,节点要等收到对方发来的整列数据才放行,哪怕这一列里九成的 cell 本地都有。网络于是重复搬运早已存在的字节,节点的等待时间也取决于最慢的那一整列。

cell 级增量改了什么

提案把列的最小收发单位降到 cell——列切成的固定小块。实现路线不是新造协议,而是给 Gossipsub 挂上它的 Partial Messages 扩展:节点之间交换 cell 位图、按位图请求与提供缺失 cell,分发策略从默认推送转为默认拉取。本地覆盖率越高,增量越薄,理想情况下几乎零传输。提案特别强调三点兼容性:这是纯广播层的优化,不要求硬分叉,可以渐进部署;不支持该扩展的节点照旧收发整列,新旧节点共存时行为退回传统 gossipsub;mesh 与 gossip 性质保持不变。

为什么值得单独做一篇 EIP

带宽是 PeerDAS 路线的命门。数据可用性采样的意义就是把节点负担压到只取若干列,若传播层在常态路径上还带冗余搬运,节省就打了折扣。而内存池覆盖率的现实是:多数节点对多数区块都只缺零星 cell,整列收发属于典型的九成浪费。把这类浪费从常态路径里挤出去,等于用工程手段白捡一层带宽收益——这也是提案不碰共识、只求快上的原因。

读这份提案时该想到的张力

增量传输天然引入一对多的协调问题:节点 A 缺左半、节点 B 缺右半,向同一邻居拉取时,位图怎么交换、限速怎么算、缺失 cell 的重试预算怎么分配,都是实现层要磨的细节。提案在安全考量里点了几个实现陷阱:优先和扩展支持方组网会把网络切成两圈,文本明确要求实现不应歧视不支持扩展的对端;评分要对推送与拉取两种方式保持中立,否则诚实节点会被挤出;还要防范滥用不同 Group ID 的垃圾消息。延迟也是一笔明账——默认拉取比默认推送多一跳请求,提案把这一点列为上线期要盯的关键指标,指望靠打磨预推策略补回来。

一条判断线

评估这类优化,看三个数就够了:常态场景的传输节省、缺失场景的延迟回退、以及新旧节点混跑时的净收益。EIP-8136 目前的文本姿态很清楚:不赌架构、只做增量、坏了不伤共识。它能不能进升级清单,很大程度取决于客户端实测里那两条曲线的表现。

一个采样日常的对照

PeerDAS 的常态是这样的:节点对没把握的列发起采样,拿到零散 cell 后要能拼出可验证的可用性证明。EIP-8136 的优化恰好卡在拼图的缝隙上——大部分拼图块早已在本地内存池里,缺的往往只是几条边。把边按需补齐而不是整盒重发,节点凑齐证明的等待更短,网络的重复流量也更少。提案不改动列的定义、承诺方案或采样规则,正因为它只想给这条日常路径提速,而不是重新设计数据可用性本身。

风险提示:本文为协议优化草案的科普解读,不构成投资建议;提案状态与细节请以仓库页面为准。