词条 · 加密与分布式 · 核心
包含列表
让另一批人也看内存池,列出下一个区块必须包含的交易,用来对抗出块者把交易挡在链外。
也称:Inclusion List、FOCIL、FIL
先看一个麻烦
你发了一笔交易,手续费给得不低。它在内存池里躺了两分钟——十个区块过去了,每一个都还有剩余空间,你的交易一次都没被打包。
你去问出块的人,他说没看见。
这句话你没法反驳。内存池是一张 P2P 网络,交易靠节点之间互相转发扩散,每个节点在不同时刻看到不同的子集。“他没打包”和”他没收到”在链上留下的痕迹完全一样:都是”这笔交易不在区块里”。
这就是麻烦所在。链能证明发生过什么,但证明不了本该发生而没发生的事。区块里有什么是公开可验证的;内存池里当时有什么,不是。
几个朴素猜测
猜测一:加手续费。这是协议给的正常渠道,多数时候有效。但它对付不了刻意的审查——如果有人就是要挡你,他放弃的那点小费远小于他的动机(比如合规要求、或者他想让你的清算延后)。你加价,他继续不打包,你只是白付更多。而且MEV 让这个渠道更不可靠:你的小费要和整块的排序收益竞争。
猜测二:换一个出块者。下一个 slot 就是别人了,等等就好。这在随机抽签的情况下确实是主要防线。但它给不了时间保证——如果被挡的是清算交易,晚十个区块就已经损失了。而且如果一大批出块者用同一个区块构造服务(现实中就是这样),“换人”未必换到不同的决策。
猜测三:让协议规定顺序。“必须按到达时间排”——但分布式网络里不存在客观的到达时间,见 MEV 里对这条的讨论。
三次撞墙的位置连起来说明:问题不是激励不够、也不是运气不好,而是只有一个人的观察被记录下来了。区块反映的是出块者一个人看到(或声称看到)的世界。
机制
包含列表的做法是:再找一批人,把他们看到的内存池也记录到链上。
以 EIP-7805(FOCIL)为例,一个 slot 的流程:
- 协议为这个 slot 随机抽出一个委员会(FOCIL 是 16 名验证者)。
- 每个成员独立观察内存池,选出一批他认为该进块的交易,签名广播自己的局部清单。
- 出块者构造区块时,必须包含所有局部清单里的交易(除了无效的、或者确实塞不下的)。
- 其他验证者在决定是否认这个区块时会检查这一点:清单里的交易没进块,这个区块就不被接受。
这里有个容易忽略的细节:清单是”必须包含”,不是”必须按某个顺序包含”。出块者仍然可以自由排序被强制包含的交易,所以包含列表并不阻止 MEV 提取,它只保证交易能上链。这两件事经常被混为一谈——它解决的是”进不进得去”,不是”进去之后被怎么对待”。
另一个细节是它必须允许合法的排除理由。交易可能真的无效(nonce 错、余额不足),也可能真的塞不下(区块 gas 有上限)。所以规则不能是”清单里的必须全部进块”,而是”没进块的必须给出一个可验证的理由”。这个口子的存在是必要的,但它同时也是后续攻击的入口。
第 4 步是名字里”fork-choice enforced”(分叉选择强制)的意思:强制力不来自礼貌,来自”不遵守就拿不到区块奖励”。
安全性依赖的假设叫 one-of--honest:委员会 个人里只要有一个诚实地列出了你的交易,它就必须进块。听上去这个假设很弱、很稳——要挡住你,对手得让 16 个人全都不写你。
为什么值得知道
它是”用冗余观察者替代可信观察者”的一个干净样本。没有任何一个人被信任,但只要有一个人诚实,性质就成立。这个模式在分布式系统里到处都是( 份副本、多数投票、见证人),值得单独认出来。
但它的成本结构有个陷阱。加人只是把 变大,而每个成员的价码没变——一个成员把交易写进清单,能多赚的钱就是那笔交易的小费(以太坊 2025 年末的中位数约 0.01 欧元)。所以贿赂总价大致是
按 2026 年 FairFIL 那篇论文的实测:FIL()挡 10 个 slot 约 1.10 €,FOCIL()≤ 15.40 €,AUCIL()≤ 33 €。委员会大了 32 倍,成本只涨 30 倍——线性,而且起点是一位数欧元。同期一个区块从公开交易收到的小费总额约 9.09 €。
关键区分:这类方案让委员会负责”提名”,不负责”结果”。成员写了清单就完事,交易最终进没进块与他无关,他也不因此损失什么。权力(决定内容)和后果(交易被挡)依然分离,只是分给了更多人。认出这一点,你就能判断一个新方案是在加观察者,还是在真的改变问责结构。
这一族方案不止一个。它们的差别几乎只在委员会大小和清单怎么聚合:
| 方案 | 委员会规模 |
|---|---|
| FIL(EIP-7547) | 1 |
| FOCIL(EIP-7805) | 16 |
| MCP | 16 |
| AUCIL | 32 |
看到一个新提案时,先问它的 是多少、以及成员的价码是什么。前者决定它比前作强多少倍,后者决定它的绝对天花板在哪。这一族里前者一直在涨,后者一直没动。
还有个绕不开的取舍:清单要占区块空间。被强制包含的交易挤掉了出块者本来想放的交易,也就是挤掉了他的收入。这个冲突是设计上固有的,只能在”抗审查强度”和”出块者收益”之间选点。
收束
回到开头那句”我没看见”。
三个朴素猜测都栽在同一处:加价、等下一个人、让协议规定顺序,没有一个能改变只有一个人的观察被记录这个事实。包含列表的答案是把观察这件事做成冗余——多找几个人看,把他们看到的也写进链上,然后用区块的有效性去强制执行。
它换来的东西是真的:一个人诚实就够。但它换来的强度,取决于让一个人不诚实要花多少钱——而这个价码,在现有设计里就是一笔交易的小费。这是它的天花板,也是后续方案(比如反过来让出块者公布”我排除了什么”)想要突破的那一点。
来源
提到这个词条的文章
- 审查一笔以太坊交易只要 2 欧元:FairFIL 把代价换成整个区块奖励 2026-08-02
- OpenAI 的十个数学结果:Lean 证书查得通,谁审的那一栏写着 agent 2026-08-02