审查一笔以太坊交易只要 2 欧元:FairFIL 把代价换成整个区块奖励
抗审查被形式化成(成本,延迟)二元组后,FIL/FOCIL/MCP/AUCIL 的审查成本全在 0.11-3.30 欧元区间;FairFIL 改为让区块组装者公示排除清单,把价码提到出块奖励量级。
买通一个以太坊验证者委员会,让它把某笔交易挡在链外,一个区块要多少钱?
不到 2 欧元。
这不是因为委员会人少——它有约 3 万名验证者。也不是因为出块奖励低。是因为在现有的抗审查设计里,委员会成员对交易最终有没有被打包,不承担任何后果。他们的活是「提名」,不是「负责」。
而提名一笔交易能多拿到的钱,就是那笔交易的小费。2025 年 9 到 12 月,以太坊 1.94 亿笔交易的中位小费是 0.01 欧元。想让一个成员少写一笔,给他两分钱就够了。
上周挂到 arXiv 的一篇论文把这件事从吐槽变成了算式,还顺手量了一下主网现在的实际情况:2025 年 9 月,平均每个区块有 8.3 笔交易本该进块而没进。
先说结论
- 抗审查不是是非题,是一个二元组。论文把它形式化成 :预算为 的对手最多能把一笔交易推迟 个 slot。以太坊现状是 ——一毛钱,零延迟。
- 四种现有方案的审查成本全都由小费决定,不由安全预算决定。FIL 0.11 €、FOCIL ≤1.54 €、MCP ≤1.60 €、AUCIL ≤3.30 €。委员会从 1 人加到 32 人,成本只涨了 30 倍,因为每个成员的价码仍然是「那笔交易的小费 + 一次转账手续费」。
- FairFIL 把价码换成了出块奖励。区块组装者必须公布自己排除掉的每一笔交易;委员会多数认定清单不完整,区块被拒、奖励全没。抑制单个 slot 要 0.10 €,但连续挡 10 个 slot 要 141 到 402 €,比现状贵两个数量级。
- 审查在主网上是日常,不是理论风险。作者重放 2025 年 9 月的 214 600 个区块:平均每块有 8.3 笔交易本该进块却没进,当月合计 178 万笔至少被推迟一个 slot。
- 代价是真实的但不大:38% 的区块会产生非空清单,中位数占用 63 209 gas(约区块 gas 预算的 0.1%),P95 是 13.3%。单线程构造清单最慢 0.388 s,在 4 s 的证明截止线内。
- 它没有解决所有问题,作者自己列了两条残余攻击:填充交易挤掉目标(suppression)和故意作废区块(invalidation)。两者都还能用,只是变贵了。
麻烦从哪来:谁替一笔没进块的交易说话
先把场景说清楚。以太坊每 12 秒出一个区块(一个 slot)。谁来出这个块,是提前排好的;出块的人(论文里叫区块组装者,block assembler)从内存池里挑交易装进去。挑哪些、不挑哪些,完全由他决定——这是设计上给他的自由,因为他要靠排序赚钱(MEV)。
问题就在这个自由上。他不挑你的交易,和他没看见你的交易,从链上看完全一样。区块里没有你,就是没有你,没有任何记录说明你曾经排在队里。
于是有了包含列表(inclusion list)这一类方案:让另一批人(一个验证者委员会)也看内存池,把他们看到的交易列出来,强制下一个区块必须包含。EIP-7547(FIL)、EIP-7805(FOCIL)都是这个思路。
听起来问题解决了。但论文指出这里有个空档:委员会负责”提名”,不负责”结果”。
一个成员把交易 写进自己的清单,能得到什么?如果 最终进了块,他分到的是 的小费的一部分。2025 年 9 到 12 月,1.94 亿笔交易的中位小费是 。
所以贿赂他不写这一笔,只要给他比 0.01 € 多一点就行。对手要买通 个成员的总价是
是每次行贿的固定开销(论文假定贿赂走链上智能合约,所以要付转账和验证的手续费)。这个式子里没有任何一项与安全预算有关——不管质押了多少 ETH、委员会有多少人有多诚实,价码只由那笔交易自己的小费决定。
一笔小费 0.01 € 的交易,天生就便宜到可以被审查。
朴素猜测:加人
既然一个人能被买通,那就多找几个人。这是从 FIL 到 FOCIL 到 AUCIL 的演进方向,而且方案都依赖一个看起来很稳的假设: 个人里只要有一个诚实(one-of--honest),交易就能进清单。
把论文 Table 2 的实测成本按委员会人数排开,这个方向的天花板就出来了。所有数字都是审查一笔”中位小费”交易、按 2500 €/ETH 折算:
| 方案 | 委员会人数 | 挡 1 slot | 挡 2 slot | 挡 10 slot |
|---|---|---|---|---|
| 以太坊现状 | — | ≈0.10 € | ≈0.20 € | ≈1 € |
| FIL (EIP-7547) | 1 | ≈0.11 € | ≈0.22 € | ≈1.10 € |
| FOCIL (EIP-7805) | 16 | ≤1.54 € | ≤3.08 € | ≤15.40 € |
| MCP | 16 | ≤1.60 € | ≤3.20 € | ≤16 € |
| AUCIL | 32 | ≤3.30 € | ≤6.60 € | ≤33 € |
委员会规模翻了 32 倍,挡 10 个 slot 的成本从 1.10 € 涨到 33 €。这个增长是线性的,而且起点低得离谱。原因就是上面那个式子:加人只是把 变大,每个人的价码没变。
这里有个更要命的数字。同期一个区块从公开交易里收到的小费总额是 。也就是说,在 AUCIL 之前的所有方案里,审查一笔交易都比让出块者放弃整个区块便宜。而放弃整个区块,本来应该是审查的价格底线。
机制:把”提名”换成”排除理由”
FairFIL 的改动听起来只是把方向反过来,但代价结构完全变了。
不再让委员会列出”该进的交易”,而是让区块组装者列出”我排除掉的交易”(论文称 fair inclusion list,公平包含列表)。
一个 slot 的流程:
- 组装者构造区块,同时构造一份清单,列出他在内存池里看见、但没有放进区块的每一笔交易,附上排除的理由(gas 装不下、nonce 不对、余额不足等)。
- 委员会验证。每个成员拿自己看到的内存池和这份清单比对:清单里声称”没看见”的交易,我看见了吗?声称”gas 装不下”的,真的装不下吗?
- 多数决定区块生死。委员会多数认定清单不完整,区块被拒,组装者拿不到任何奖励。
关键的一步在第 3 步:委员会不再是”提名者”,而是”审计者”,而被审计的对象有一整个区块的奖励押在上面。
对手现在要买的不是”别提名这笔”,而是”批准一份你知道是假的清单”。而委员会里只要有足够多成员拒绝,区块就废了。要让审查成功,对手得让多数成员都同意放水——论文的估算是这需要买通约 3 万名验证者组成的 slot 委员会的多数,所需预算远超出块奖励,因此被排除在模型之外。
于是价码从”一笔交易的小费”跳到了”一个区块的奖励”。这不是把 0.01 € 乘以更多人,是换了一个量纲。
为什么这样设计:可验证的必须是”我看见了什么”
有个显然的反对意见:委员会怎么知道组装者”看见过”某笔交易?内存池是 P2P 网络,每个节点看到的东西本来就不一样,时间也不同步。组装者完全可以说”这笔我没收到”。
论文的处理方式是把这件事变成实测问题,而不是假设。
它取一个观察窗口:只对在区块截止前 3 秒以上就已经在内存池里出现的交易问责。3 秒是以太坊 P2P 网络的传播时间上界的经验值——比这更晚到的交易,“没看见”是合理抗辩。
然后他们用四个地理上分散的监听节点实测这个假设站不站得住:在 96.12% 的区块里,四个节点全都观察到了每一笔”本该出现在无审查区块中”的交易。也就是说,绝大多数情况下”我没看见”这个抗辩是站不住的,因为四个独立节点都看见了。
这一步是整套设计能成立的支点。没有它,“清单不完整”就无法判定,问责也就无从谈起。
审查现在就在发生
这篇论文里最不该被忽略的部分不是新协议,是它顺手做的测量。
作者重放 2025 年 9 月的 214 600 个区块,按 FairFIL 的规则判定”哪些交易本该进块但没进”:
- 平均每个区块 8.3 笔;
- 当月合计约 178 万笔交易至少被推迟了一个 slot。
这不需要任何人在搞审查阴谋。理性的组装者按自己的收益排序,一部分交易就是会被挤掉或被跳过。但结果是一样的:有 178 万笔交易的用户,付了钱、排了队,然后等了更久。
代价
强制公布排除清单不是免费的。区块空间要花在清单上,验证要花时间,而以太坊的 slot 只有 12 秒。实测:
| 指标 | 数值 |
|---|---|
| 产生非空清单的区块 | 38% |
| 清单 gas 占用(中位数) | 63 209 gas(≈区块预算 0.1%) |
| 清单 gas 占用(P95) | 13.3% |
| 单线程构造清单耗时(最慢) | 0.388 s |
0.388 s 这个数要和以太坊的 4 秒证明截止线比——留了十倍余量。P95 的 13.3% 是这张表里最需要注意的一项:绝大多数区块几乎不受影响,但尾部区块要交出超过一成的空间。
边界:两条还能走的路
论文自己把残余攻击列了出来,这是它可信的地方。FairFIL 之后审查没有变成不可能,只是变贵了,而且贵法不一样:
抑制(suppression):对手不去动清单,而是发一堆自己的高价交易把区块塞满,让目标交易”因为 gas 装不下”被合法排除。这个理由是真的,清单完整,委员会没有异议。成本 ≈ 50.34 € 挡 2 个 slot、≈402 € 挡 10 个。
作废(invalidation):对手贿赂组装者故意交一份不完整的清单,区块被委员会拒掉——目标交易也就没进链。代价是那个 slot 空转。成本 ≈ 28.30 € 挡 2 个 slot、≈141 € 挡 10 个。
两条路都要求对手持续付钱:每个 slot 都要重新买一次,因为下一个 slot 是新的组装者、新的委员会。这是从”一次性 2 欧元”到”每 12 秒 14 到 40 欧元”的转变。
还有三条前提值得单独记住,越界引用这个结果会出错:
- 假设没有利他节点。论文用 BAR 模型,明确设定所有验证者和组装者都是纯理性的——有一点额外收益就会背离协议。这是最坏情况假设,现实中有人纯粹按协议本意行事,成本会更高。
- 假设对手不能富到无限。以太坊的抗审查本质上是经济性质:只要组装者可以选择不出块,足够有钱的对手总能通过补偿整个出块奖励来审查。论文把对手每 slot 预算上限设为出块奖励,超出这个范围的攻击不在模型内。
- 贿赂必须走链上。模型只算链上合约行贿的开销;银行转账之类的场外支付被明确排除。
拿得走的那一条
这篇论文的方法比它的协议更值得记住。
它做的事是:给一个大家都在定性讨论的性质(“抗审查”)配上一个可以填数字的定义,然后把所有现存方案的数字算出来摆在一张表上。表一摆出来,“加人”这条路的天花板就自己显形了——不是因为谁论证得更巧,是因为 0.11、1.54、1.60、3.30 这四个数排在一起,看得出它们在同一个量纲里。
真正的设计缺陷也随之定位到一句话:被要求做事的人和承担后果的人不是同一批。委员会提名,组装者受益,没人为”交易没进块”付代价。FairFIL 的修法就是把这两者接上——不是加更多监督者,而是让被监督的那一方把奖励押上。
来源
- FairFIL: Fair Inclusion Lists for Censorship Resistance in EthereumarXiv
- EIP-7805: Fork-choice enforced Inclusion Lists (FOCIL)Ethereum Improvement Proposals