本文提出了一种通过增加每个以太坊区块槽位的提议者数量来提高审查抗性的方案。文章分析了双提议者模型下的各种情况,包括提议者boost机制的调整和链分裂的影响,并将其推广到更多提议者的场景,同时探讨了该方案在经济模型和工程实现上的可行性以及可能存在的风险。
\
upload_9cfebe6c788a99112f6efb3a851deac01565×1555 300 KB
\^\^看嘛,我们正在努力结束提议者的垄断
\cdot⋅
作者:mike & max – 星期五;2024年2月23日。
\cdot⋅
摘要: 以太坊协议选出一个单独的提议者,在每个12秒的Slot内生成一个区块。该提议者对包含的交易集合拥有单方面的权力。因此,时间敏感的交易可能被单个方审查。我们提出了一个初步的分析,关于增加单个Slot内的提议者数量。第一节概述了审查抵抗的经济模型和概率模型之间的区别,并为并发提议者提供了理论动机。第二节讨论了“双提议者构造”的最简单版本,其中每个Slot选择两个验证者作为提议区块的合格人选。我们探讨了不同的 payload 结果、提议者激励所需的修改,以及在双提议者制度下分割是如何变化的。第三节将这些结果推广到两个以上的提议者,并概述了进一步研究的开放性问题。
\cdot⋅
相关工作
文章 | 描述 |
---|---|
链上拍卖中的审查抵抗 | Elijah、Max、Mallesh 的论文 |
引入多重性 | Duality 博客 |
ROP-9:用于审查抵抗的多重性工具 | RIG 开放问题定义 |
\cdot⋅
围绕审查的大部分讨论都集中在对手是国家行为者的情况下,例如,美国对 tornado cash 交易的审查。虽然这很重要,但经济利益是审查的另一个潜在动机。2015年,在国家行为者知道以太坊存在之前,Vitalik 讨论了需要充分的审查抵抗,以使金融系统能够在链上运作:
“去中心化密码经济系统中的审查抵抗不仅仅是确保 Wikileaks 捐款或 Silk Road 5.0 不会被关闭的问题;实际上,它是确保许多不同金融协议有效运作的必要属性。” – 审查问题,Vitalik Buterin,2015
我们从一个简单的例子开始。考虑一个必须通过以太坊交易执行的欧式看涨期权。假设该看涨期权是价内的;任何持有该期权的人都可以在到期时执行该期权赚取10美元。相反,任何出售看涨期权的人如果该期权被执行,将损失10美元。因此,期权卖方是一个有动机的对手,他们希望审查该交易以避免损失10美元。如果该交易只能在一个区块中处理,则买方和卖方都愿意向提议者支付费用,以分别包含或审查该交易,导致提议者收到10美元,并使买方和卖方的收益均为0美元。
即使该期权可以在到期前的任何 KK 个区块中执行(称为“美式期权”),买方尝试提前包含交易会降低其预期利润。这激发了审查抵抗的经济定义,如下所述。以下一些定义和示例直接取自 “链上拍卖中的审查抵抗”。
从历史上看,我们一直通过概率视角来考虑审查。例如,censorship.pics 显示了交易供应链各个层面上审查参与者的百分比。通过这些数据,我们可以计算出交易在随机抽样的区块中的包含概率。这种简化忽略了提示对包含的影响;概率模型为 MaxPriorityFee = 1 Gwei
的交易分配与 MaxPriorityFee = 100 Gwei
的交易相同的平均包含等待时间(因为它假设包含是一个恒定的概率)。
为了说明这可能是如何简化的,请考虑提议者是利润最大化的,并且签署来自 mev-boost
的最高价值出价,而不管该出价是否包含受审查的交易。此外,允许一些构建者进行审查,而至少有一个构建者不进行审查。如果非审查构建者赢得 1% 的区块,但潜在的受审查交易具有很高的提示,则包括该交易的不具竞争力的非审查构建者可能会赢得 mev-boost
拍卖,因为提示很高。换句话说,受审查的交易可以弥补非审查构建者的出价与审查构建者的出价之间的差额。
有了这个例子作为动机,我们转向审查抵抗的经济定义,从公共布告栏开始。
定义 1(公共布告栏)。 公共布告栏具有两个公共函数:
write(m,t)
接收消息 m
和包含提示 t
作为输入,如果消息被写入布告栏,则返回 1
,否则返回 0
。read()
返回在一段时间内写入布告栏的所有消息的列表。因为 write
操作成功或失败,所以这个定义捕获了在特定时间窗口内写入区块链的操作(例如,在接下来的 KK 个区块中包含交易):
示例 1(单区块,K=1K=1)。 对于单区块,write(m,t)
操作包括提交一个带有相关提示 t
的交易 m
。如果交易被包含在规范链的下一个区块中,则 write(m,t)
成功。
示例 2(多区块,K=n>1K=n>1)。 在多区块的情况下,write(m,t)
操作包括提交一个带有相关提示 t
的交易 m
。如果交易被包含在规范链的接下来的 nn 个区块中的任何一个中,则 write(m,t)
成功。
我们可以正式定义经济审查抵抗。
定义 2(公共布告栏的审查抵抗)。 公共布告栏 \mathcal{D}D 的审查抵抗是一个映射 \phi: \mathbb{R}_+ \mapsto \mathbb{R}_+ϕ:R+↦R+,它接收与写入操作 write(⋅,t)
中的提示对应的提示 t
作为输入,并输出一个有动机的对手必须支付的最低成本,以使 write
失败。
换句话说,公共布告栏的审查抵抗是一个描述对手审查交易成本的函数。该映射模拟了优先级费用和审查抵抗之间的关系,并且通常是一个单调递增函数(更高的提示 \implies⟹ 更高的审查成本)。
以太坊,一个单提议者链,具有以下经济审查抵抗:
示例 1(续)。 在非拥堵情况下,审查交易的成本为 t
;对手必须至少贿赂提议者 t
,以补偿提议者有机会包含的交易的放弃提示:\phi(t)=tϕ(t)=t.
从上面的 K=n>1K=n>1 示例扩展,我们展示了连续 KK 个区块审查交易的成本。
示例 2(续)。 在具有轮换提议者的 KK 个区块的情况下,审查的成本为 Kt
,因为对手必须至少贿赂每个提议者 t
,以补偿每个提议者有机会包含的交易的放弃提示:\phi(t)=Ktϕ(t)=Kt.
审查的成本随着提示和区块数量线性增加。
到目前为止,我们只考虑了每个Slot一个提议者。有了这个基础,我们强调,审查的成本随着有权包含交易的验证者数量线性增加;更多的包含机会需要对手更多的贿赂才能排除交易。具有多个提议者的机制将此属性强加于单个Slot的情况。
具有 KK 个提议者的单个Slot实现了审查成本,该成本需要在单个提议者链上花费 KK 个Slot才能达到。此属性适用于简单的概率模型(其中提议者要么审查要么不审查)和上述经济模型。
从最小的多提议者结构开始,考虑双提议者。我们不选择每个Slot一个提议者(领导者),而是选出两个并发的提议者。他们都并发地生成一个区块,通过连接组成区块来协作构建最终的 payload。一些简化的抽象:
ExecutionPayload
(交易列表)部分。ExecutionPayload
都可以包含相同的交易。我们假设 spec 和客户端确定性地消除第二个 payload 的重复项,并为每个重复包含的交易在两个提议者之间分配交易优先级费用。下图捕获了单提议者和双提议者的情况。
\
upload_e851018af71e600bfe92e192d287c11a1590×1012 67.9 KB
slot n
的证明者一起投票给这对区块,将分叉选择权重赋予该区块对,使其成为链的规范头。
对于两个提议者,当证明委员会需要投票给链的头部时,他们可能会看到四种情况。下图描述了每种情况。
\
upload_ceecc381a232a741293f9b22c78a5b1b1480×1312 84.4 KB
正如 ‘单提议者 vs. 双提议者’ 图中所示,如果两个提议者在 slot n
期间正确地共享一个区块,则证明者可以投票给该区块对,这将成为规范链。这个“Happy Path”体现了协议完全按预期运行。
如果两个提议者中的一个未能及时生成一个区块,我们就处于“中性路径”上。我们称之为中性路径,因为至少一个区块最终会被规范化,这意味着某些交易会被包含,但由于一个提议者不活跃,提议者只能部分地履行其协议职责。设情况 2 为 提议者 1
生成了他们的区块,但 提议者 2
没有生成;设情况 3 为 提议者 1
没有生成他们的区块,但 提议者 2
生成了。
在最坏的情况下,两个提议者都没有生成区块,这相当于今天的“错过Slot”,没有发生交易包含 – 出于显而易见的原因,这代表了“悲伤路径”。
以上情况突出了多个提议者观察到的一个现象 – 在每个Slot,存在四个潜在的链头部。 对于单个提议者,Payload 要么存在要么丢失(只有 2 种情况)。由于网络延迟或恶意行为,诚实的证明者可能对链的头部有不同的看法,或者可能在他们的本地视图中看到多个分叉,当考虑诚实的证明者应该投票给什么时,会导致问题。
在当前规范中,这种潜在的视角差异(一个诚实的证明者及时看到了 Payload,而另一个诚实的证明者没有看到)使用“提议者激励”来解决(有关更多详细信息,请参见 [ 1, 2, 3])。提议者激励在他们的Slot期间为提议者提供额外的分叉选择权重(占整个证明委员会的 40\%40%),这种机制使提议者能够“强制他们的看法”,从而减轻诚实的证明者视角差异的持续时间。下图显示了一个使用提议者激励来解决链分裂的示例。
\
upload_001bcdaf2e579e37acfd4ee6d4e269662214×1428 294 KB
描述:
slot n
的提议者发布了一个区块,但只有 60\%60% 的 slot n
证明委员会及时看到了它,而剩余的 40\%40% 投票给了缺失的Slot。slot n+1
的提议者发布了一个区块,该区块使用缺失的Slot作为父区块,而不是 slot n
的区块。在 slot n+1
期间,该区块具有提议者激励 +40\%+40%。slot n+1
证明委员会将看到 slot n+1
区块(底部分叉)的总权重 80\%80% 高于 slot n
区块的权重 60\%60%,导致他们投票给底部分叉。因为每个Slot只有一个提议者,所以很明显应该将提议者激励授予哪个分叉。对于多个提议者,情况变得更加复杂。
回到对两个提议者的讨论,考虑将提议者激励分配给潜在的分裂视图。我们建议以下简单规则:
两个提议者的提议者激励 – 在考虑分裂视图时,诚实的验证者基于总顺序将提议者激励授予分叉:
\text{情况} \;1 > \text{情况} \;2 > \text{情况} \;3 > \text{情况} \;4.Case1>Case2>Case3>Case4.
换句话说,如果在情况 1 和情况 2 之间进行选择,则情况 1 的分叉会收到提议者激励。这种确定性的排名会授予单个分叉提议者激励,从而解决分裂。下图将单个提议者激励示例扩展到两个提议者。
\
upload_e683aa5b17e19a9f9ea418c87943b360-11580×1018 121 KB
描述:
slot n
的提议者都发布了一个区块,但只有 40\%40% 的 slot n
证明委员会及时看到了它们,导致剩余的 60\%60% 投票给两个 payload 都丢失了(这是 W.L.O.G.,底部分叉也可以是情况 2 或 3,而不会改变分析)。slot n+1
的提议者发布了具有不同父级的区块。提议者 1
使用 slot n
的 payload 作为父级,而 提议者 2
使用缺失的Slot。在 slot n+1
期间,具有 提议者 1
区块的分叉具有提议者激励 +40\%+40%,因为 \text{情况} \;1 > \text{情况} \;2Case1>Case2。slot n+1
证明委员会将看到顶部分叉(80\%80%)的总权重高于底部分叉(60\%60%),投票给它作为链的头部。考虑一个可能控制一个Slot的两个提议者的恶意参与者,如何尝试分裂链。我们使用“分裂”来描述故意导致诚实的大多数验证者投票给不同的区块,从而暂时削弱协议的共识保证的过程。
一个验证偏差的验证者可能会将证明委员会分裂成任意多个分叉,而不管单提议者还是双提议者结构如何。他们通过签名和分发相同高度的冲突区块来创建分裂。通过这个简单的推理,很明显,双提议者结构不会削弱协议的“验证偏差导致的分裂”。
时间导致的分裂定义了一个使用网络延迟来故意分裂诚实验证者对链头部的看法,而~不~签名冲突区块的对手。对于今天的单提议者,对手可能会故意传递一个 payload,使得只有一半的诚实证明者在 t=4
(证明截止日期)之前看到它。因此,今天的恶意验证者可以在他们是提议者的每个Slot中将诚实的证明委员会分成两半。随后的诚实提议者通过提议者激励来强制他们的看法(见上文)。在双提议者的情况下,如果恶意方控制两个提议者,则对手可以将诚实验证者的看法分成四种方式。恶意方只是[1] 定时他们的 payload 发布,使得 1/4 的诚实验证者看到情况 1-4 中的每一种情况。下图演示了这一点。
\
upload_864fe00b84567c1cc2b8b03433c070861480×1072 123 KB
描述:
slot n
的两个提议者。虽然这种分裂看起来有问题,但它只有在概率为 p^2p2 的情况下才有可能,其中 pp 是恶意实体控制的股份数量(因为他们必须是该Slot的两个提议者)。为了与单提议者设置进行公平比较,我们应该探讨一个恶意方连续控制两个Slot的事件,这种情况也以概率 p^2p2 发生。下图显示了在这种前提下可能发生的“时间导致的分裂”。
\
upload_6955b1d705cac63f42dd3072868b1152-11774×1258 254 KB
描述:
slot n
区块,使得证明委员会在 payload 的及时性上分成两半。slot n+1
区块,使得该Slot的诚实证明委员会分成三种方式。在这种情况下,恶意方只能实现三分裂,因为他们无法在 slot n
中基于缺失的Slot构建一个区块,而不会发生验证偏差,这导致我们得出本练习的主要观点:以概率 p^2p2,对手可以使用两个提议者造成四分裂,并使用一个提议者造成三分裂。 我们在这里停止分析,因为我们不清楚这种区别的含义;无论哪种方式,下一个诚实提议者都会通过提议者激励来解决分叉。
虽然双提议者的情况最简单,但我们可以将上述大部分分析扩展到更多提议者。对于 KK 个提议者:
进一步的质疑(例如,“攻击者可以使用一个Slot的 \ellℓ 个 KK 个提议者创建多少个时间导致的分叉?”)推迟到未来的工作中(解决方案将是一个二项式混乱™)。为了简洁起见,我们在此处以开放性问题结束。
- 原文链接: ethresear.ch/t/concurren...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!