开发者必读:如何落实区块链的抗审查特质?
原文标题:《Censorship... wat do?》
原文作者:Jon Charbonneau
原文编译:RR
本文来自微信公众号老雅痞。
介绍
审查与以太坊的价值观是不兼容的。
在过去的一个多月里,我们花了足够多的时间来思考我们是如何走到这一步的。我将讨论未来的道路——我们如何解决这个问题?
开发者们该怎么办?
与审查制度作正面斗争应该是第一要务。撤资很可能也需要尽快解决。
不过,规模扩张之类的问题确实可以退居其次。以太坊可以在收费稍高的情况下生存,但它不能在审查制度下生存。EIP-4844、Danksharding 和其他升级都很复杂,可能会分散大量的时间和注意力。如果真的需要的话,EIP-4488 可以非常快速地实现,并且非常有效。
优先考虑抵制审查是展示社区价值观最明确的方式。如果不这样做的话,将是一个可能会损害可信度的非常糟糕的信号——如果核心协议开发都不会这样做,为什么验证者、Flashbots 或任何其他中继者 / 建设者要优先考虑抗审查呢?
此外,现在是熊市,每个人都很穷,或者正在逃亡。收费是可接受的。
MEV-Boost
先简要概述一下架构。
捕获 MEV 需要复杂的技术。如果验证者被赋予这一任务,它们将变得中心化——只有能够提取 MEV 的成熟验证者才能获得有竞争力的回报。提议者 - 建设者分离 (PBS) 解决了这个问题——创建一个新的专门的「建设者」角色来构建最佳区块。然后,建设者向提议者 ( 验证者 ) 出价以接受他们的区块。成为提议者仍然很容易,他们获得有竞争力的回报=保持去中心化。
PBS 最终将被内置到协议中,但它还没有准备好。不过 PBS 已经在这里了——MEV-Boost 目前是协议外的垫脚石 ( 尽管有额外的信任假设 )。它是一个附加的边车软件,验证者可以运行它来查询外包的区块构建。验证者仍然保留使用他们自己的执行客户端并在本地构建区块的选项。
许多 MEV 搜索者运行特定的策略,并为建设者出价,以包括他们的bundle。建设者可以聚合这些 bundle+ 任何其他私有订单流 + 公共 mempool 交易→构建最优的完整区块。一些建设者也可以将搜索内部化,并自己扮演这个角色。
中继者概述
中继者是提议者和建设者都信任的中介。他们接收建设者的区块,并在将其发送给提议者之前将其托管。对于一个特定的中继者,这个过程可以是这样的:
设计目标
MEV-Boost 解决了 MEV-Geth 的两个主要不足之处:
1. Solo-staker 参与
PoW 矿工会收到 bundle,然后他们将创建一个完整的区块,将这些 bundle 放在顶部。他们从未被发送过完整的区块。Flashbots 从未将被 OFAC 列入黑名单的交易纳入其 bundle 中,但这并不重要,因为矿工可以将它们包含在区块的其他任何地方。
这一方案意味着信任矿池运营商——他们可以清楚地看到这些 bundle,所以如果他们愿意,他们可以直接为自己窃取这些机会。这种信任无法扩展到一个庞大的以太坊验证者集合。这就是为什么 MEV-Boost 要为提议者提供完整区块的原因。提议者在区块主体被透露给他们之前签署并提交区块标题。如果他们在看到区块主体后试图 MEV 偷窃,他们将需要提出另一个区块。他们的原始签名会被呈现出来→提议者因重复签名而被砍掉。
这种全区块方案能够实现验证者的去中心化,但它在中继者 / 建设者层面增加了显著的审查风险。如果验证者接受来自审查中继者的区块,他们将成为事实上的审查者。
如果审查建设者是最有利可图的建设者,那么提议者就被迫在以下两者之间做出选择。:
-
经济理性——接受价值最高的区块,即使被审查
-
利他主义——接受价值较低的区块,不进行审查
理想情况下,利他主义假设应该被完全删除或尽可能最小化。
2. 客户多样性
大多数矿工都在运行 Go Ethereum(Geth) 客户端,所以 Flashbots 简单地将其分叉,创建了 MEV-Geth。运行它是参与 Flashbots Auction 的唯一途径。PoS 是一个提高客户多样性的机会。MEV-Boost 边车可与所有共识和执行客户端互操作。
MEV-Boost 是中立的基础设施:
-
中继者——可以在任何限制或策略下自由运行 ( 例如,审查 / 不审查,「公平」订购 / 最大利润等 )。中继者可以按照自己的意愿接受建设者的区块。
-
建设者——可以自由地运行任何他们喜欢的策略,并部署到任何他们信任的、愿意接受他们的区块的中继者。
-
验证者——可以自由运行 MEV-Boost 或不运行。他们可以自由地使用任何他们想要的客户端。可以根据自己的意愿自由地连接到更多或更少的中继者。MEV-Boost 是一个有效的中继者聚合器,它从提议者选择的中继者中选择最有利可图的出价。
MEV-Boost 不审查 OFAC 交易或三明治交易。它只是允许提议者将构建外包,从与他们匹配的中继者中进行选择。
审查
以下是我对审查的讨论框架:
-
薄弱的审查=延迟但最终被纳入。如果 50% 的验证者不包含 OFAC 交易,那么平均而言,它们将在 2 个区块 (24 秒 ) 后被纳入。如果是 90% 审查,它们将在 10 个区块 (120 秒 ) 后被纳入,以此类推。
-
严格的审查=被审查的交易不被包括在链上。在 Gasper 中,这需要 51% 的验证者不仅要审查他们自己区块的 OFAC 交易,而且还要主动忽略所有包括它们的新区块。
验证者似乎没有迫在眉睫的审查威胁。他们似乎采取了这样的立场:他们没有义务审查 OFAC 交易。如果需要,这可以通过用户激活的软分叉或削减来解决,但这不是我在这里的主要焦点。
迫在眉睫的审查威胁处于中继者 / 构建者层面。这主要来自运行最大型中继者和建设者的 Flashbots。然而,其他中继者也会进行审查——它们只是市场份额较低,其中包括:
-
bloxRoute「受监管的」中继者
-
Blocknative
-
Eden Network
Non-censoring 中继者:
-
bloxRoute「利润最大化」中继者
-
bloxRoute 的「伦理」中继者
-
Manifold Finance
我将重点讨论如何在这个层面上减轻威胁。
验证者该怎么做?
前段时间我写了这个帖子,但最近我又在思考这个问题。我仍然有类似的感觉——我认为最好是运行 MEV-Boost,但只使用非审查的中继者。
说实话,如果我是一个验证者,我宁愿根本不运行 MEV-Boost。Flashbots 是最可靠的实时中继者 / 建设者运营商,所以我在使用它们中的一些时会感到不舒服。但积极促成更多的审查制度是有害的。
所以运行个人客户端听起来不错,也很容易,但我认为最好还是和那些其他非审查中继者一起运行 MEV-Boost。否则,低采用率又会带来负面的外部因素 (pga 等 )。此外,运行它的验证者将比不运行它的利他验证者赚得更多——他们将在足够长的时间内系统地增加市场份额,挤掉利他的验证者。
忽视 MEV 并不会让它消失,我们以前就见过这种情况。
更低的 Flashbots 中继者采用率可能意味着更少的审查。在撰写本文时 - MEV-Boost 的采用占验证者的 42%,而 Flashbots 正在构建~60% 的 MEV-Boost 区块= ~25% 的以太坊区块在那里被审查。MEV-Boost 的采用率也在稳步上升。目前,来自其他中继者的审查非常少 ( 它们只是没有有意义的市场份额 )。
实际上,我不认为「更少的审查」有什么区别。如果你的审查率是 20% vs. 40% vs. 60%,那么这些 OFAC 的地址就会被审查,他们必须等待。如果审查率上升,他们就会多等一会儿。
然而,我确实认为,从信号的角度来看,这是非常重要的。以太坊应该向世界传达,这种行为不符合我们的价值观,而且不会被容忍的。
协议怎么做?
不幸的是,上述「只要不要使用 Flashbots 中继者」的解决方案,依赖的是提议者的利他主义。如果 Flashbots 曾经构建过最有价值的区块 ( 他们通常会这样做 ),验证者就会主动选择不使用它们来赚更少的钱。愿意接受被审查区块的验证者将再次按比例获得市场份额,而有意义的利他主义根本不是一个可持续的长期战略。我们需要更好的协议设计。
Enshrined PBS 和 crList
当 PBS 被内置到协议中时,中继者就会消失。建设者将通过协议内拍卖直接与提议者进行交互。建设者承诺无条件支付,消除了信任的需要。一旦提议者签署了建设者发送的区块头,他们就可以得到相关的出价 ( 即使建设者随后披露了一个无效的区块体或完全扣留它 )。
crLists 对这种能力进行了检查。确切的实现是一个开放的设计空间,但这里有一个「混合 PBS」的简化概述。提议者指定一个清单,列出他们在 mempool 中看到的所有符合条件的交易,建设者将被迫将它们包括在内 ( 除非区块已满 ):
-
提议者发布一个 crList 和 crList 摘要,其中包括所有符合条件的交易。
-
建设者创建一个提议的区块,然后提交一个包含 crList 摘要的哈希值的出价,以证明他们已经看到了它
-
提议者接受中标者的出价和区块头 ( 他们还没有看到区块体 )
-
建设者发布他们的区块,并包含一个证据,证明他们已经包含了来自 crList 的所有交易,或者区块已满。否则,这个区块将不会被分叉选择规则所接受。
-
认证者会检查发布的主体的有效性
请注意,你实际上也可以在 enshrined PBS 之前实现 crList 的某些版本,尽管它看起来会有所不同。这里有一个来自 Flashbots 的 Quintus 提出的建议。在 enshrined PBS 之前,替代 crList 提案也在进行中。应该优先考虑某些形式的纳入清单,甚至可能是一些最小形式的 enshrined PBS。期待这里会有更多的建议。
Barnabé提供了另一个类似的想法。本质上,提议者可以为区块创建一个前缀,以包含顶部的其他审查交易,,然后建设者可以构建剩下的部分 ( 或者如果没有审查的交易要包括的话,可以构建整个区块 )。
使用 EigenLayer 通过 MEV-Boost 保留区块提议者代理
另一种方法返回提议者的代理以附加交易。该方案利用 EigenLayer 来增强 MEV-Boost,从而增加其审查阻力。
EigenLayer 是一个「重塑」的集合,预计将在明年晚些时候上线。选择加入 EigenLayer 的以太坊验证者通过将验证者提取地址设置为 EigenLayer 智能合约,使自己受到额外的大幅削减条件的约束。
协议可以无许可地部署在 EigenLayer 之上,并试图激励这些验证者选择使用相同的质押来保护自己的解决方案 ( 除了以太坊 )。验证者选择加入他们所选择的任何 EigenLayer 应用程序。它们可以因为违反应用程序的规则而被砍掉。这使得其他协议 ( 无论是新的跨链桥、数据可用性层,还是其他任何东西 ) 可以直接利用以太坊的经济安全子集。
那么,这如何适用于 MEV-Boost 呢?选择这个结构的参与者执行了以下操作:
-
提议者用 EigenLayer 重新质押他们的 ETH
-
建设者将他们的区块 (builder_part) 连同所含交易的 Merkle_root 和他们的出价一起发送给中继者
-
中继者通过存储交易来提供数据可用性 (DA)。Relay 将 merkle_root 和出价发送给提议者,以获得最有利可图的有效区块
-
提议者从所有连接的中继者中选择最高的出价
-
提议者在本地建立他们自己的备份替代区块 B_alt
-
提议者向中标者的 merkle_root 发送一个认证,并将其与承诺的 commit_B_alt( 不是区块头,可能是交易根 ) 相连接,发送到自己的区块 B_alt 上
-
中继者显示包含基础交易的 builder_part,并将其发送给提议者
-
提议者构建一个包含 builder_part 的新区块,并附加一个额外的 proposer_part( 如果他们看到想要包含的其他交易,并且区块中还有空间 )。如果中继者未能释放基础交易,区块提议者将提议他们构建的区块 B_alt。
如果提议者提出了 B_alt 以外的区块,提议者必须包含 builder_part,否则它们将通过 EigenLayer 被砍。这是他们必须遵守的附加条件。这消除了信任提议者的必要性——如果他们在看到基础交易后试图窃取 MEV,他们将不得不提议一个 B_alt 以外的区块,并将被砍掉。
这使得提议者可以将区块构建外包出去,以实现利润最大化,同时仍然附加审查过的交易。提议者不再需要在利他主义和经济理性之间做出选择。
如果最有利可图的建设者正在审查,而提议者没有义务审查——主要策略是选择加入这个 EigenLayer 结构 ( 假设他们能接受额外的责任和 EigenLayer 智能合约风险 )。这样一来,他们能够接受最高价值的区块,并可能通过附加额外的交易使其更有利可图。
注意,builder_part 最终可能只是区块的一部分或整个区块。如果全部的 3000 万 gas 都被用掉,当然就永远不能保证可以被包含在内。不过 EIP-1559 确保了大多数时候都有多余的空间可用。
你知道的魔鬼 vs.你不知道的魔鬼
假设 Flashbots 关闭。你所了解的魔鬼已经被挫败——大多数审查可能会消失。听起来不错吧?
但现在你不知道的魔鬼可能会出现。有一个权力真空需要被填补,而其他的建设者会去填补它。我们面临的风险是,另一个建设者简单地夺取了王位,并巩固了自己作为主导建设者的地位,这可能会造成更多的伤害。
在我看来,这种情况发生的最大风险来自于排他订单流 (EOF):
建设者可以确保特定的订单只发送给他们 ( 例如,承诺不给前面的用户,并对后面的利润给予回扣 )。我们可以看到这方面的一些早期例子。然后他们可以出价更高,赢得更多区块,并证明更多的排他性协议。
一个集中的区块建设者可以造成严重的破坏:
抽租
竞争性市场确保了最低的抽租。用户因其所提供的价值而得到公平的补偿,建设者将剩余的 MEV 出价给提议者。目前看起来不错——建设者争夺市场份额,几乎把所有捕获的 MEV 都出价给验证者。即使是处于相对主导地位的 Flashbots 也将所有利润都转给了验证者。
EOF 则相反。一个占主导地位的建设者会受到激励去抽租——他们只需要出价高于其他建设者所能获得的数额。更多的 EOF 扩大了与其他建设者的这一差距。
在这个 EOF 周期的开始阶段,建设者可能提取的很少——合理补偿用户是确保 EOF 最简单的方法之一。然而,一旦建立了垄断地位,建设者就会被激励去抽租。他们也被授权这么做——当他们建造的区块比例越高时,转换成本就会增加。
例如,钱包向一个建设者发送 EOF,因为他们得到了公平的补偿。但现在,建设者的规模越来越大,他们几乎建造了所有的以太坊区块。然后他们减少了他们的费用回扣。钱包想撤回它的 EOF,去其他地方。然而,向其他建设者发送意味着区块纳入的等待时间长得令人难以置信,或者他们无法完全赢得区块。钱包被卡住了,而建设者继续提取。
审查
首先,crList 这类花哨的东西并不是实时的。如今,网络尤其容易受到审查制度的影响。
在下面的例子中,我假设这个市场只包括两个建设者:
-
B₁=抗审查的建设者
-
B₂=有审查权的建设者
如果 B₂在今天获得了很大的市场份额,他们就可以执行有意义的弱审查——我们已经看到了这一点。然而请记住,这并不是强审查。
一个拥有理性验证者的完全竞争市场在任何情况下都能防止哪怕是微弱的审查。在其他条件相同的最佳网络条件下,出价 B₁≥出价 B₂。两者都可以包括公共 mempool 交易,但只有 B₁还可以包括 OFAC 交易。因此,竞争性 PBS 对审查制度的抵抗力只有 1/N 的建设者假设。
当然,这不是现实——建设者有不同的订单流和算法,从而导致不同的投标。然而,这清楚地说明了为什么我们应该争取一个竞争性的市场。如果 B₂因 EOF 或其他原因控制了过多的市场份额,他们可以进行有意义的审查。
如果他们持续建造最有价值的区块,你就会依赖于有效的验证者利他主义来避免审查。希望他们会忽略审查中继者,只连接到提供来自非审查建设者区块的中继者。但从长远来看,这可能是不可持续的——作为一个诚实的验证者的成本应该降低到~0( 或者理想情况下,非审查更有利可图 )。
请注意,crList 并没有完全消除这种可能性。如果 B₂持续产出价值最高的区块,那么广播含有 OFAC 交易的 crList 的提议者知道他们将无法接受最有利可图的区块。经济上的理性决定是广播一个空的 crList。然而,如果由于市场竞争,出价 B₁和出价 B₂之间的差异可以忽略不计 ( 甚至有利于 B₁),那么验证者将发布 crlist 是一个合理的假设。
EOF 对审查阻力构成了重大威胁——它可以迫使验证者在诚实和经济上的理性行为之间做出选择。这抑制了诚实的行为,并允许审查参与者通过增加市场份额获得更高的奖励。这应该被避免。
减少建设者创新
PBS 是建设者提供创新新功能 ( 例如帐户抽象、预确认 ) 的机会。
有竞争力的建设者被鼓励在功能上进行创新,以吸引用户的 OF。而根基稳固的建设者则不然。即使另一个建设者开始提供更好的功能,转换成本可能太高或完全不可实现 ( 对其他建设者来说,包含交易的时间非常长、永远无法赢得区块、PFOF 交易等等 )。
请注意,由于优越功能而获得 OF≠PFOF:
-
由于优越的功能而获得 OF——进入的障碍是提供新的功能。
-
PFOF——进入障碍是明确的支付,用户需要长时间等待,甚至可能违反合同
简单地说,PFOF 在这里意味着排他性,但其功能却不是。如果某些建设者只提供理想的功能以换取 EOF,这将和 PFOF 一样不可取。
EOF 怎么做?
我在这里就不太深入了,但一种可能的途径是运行订单流拍卖。实际上,一些拍卖是为了执行用户订单的权利而进行的。他们因创造 MEV 和良好的执行保证而获得公平价值。你可以进行公开拍卖,也可以以费用升级的形式进行隐性拍卖。
去中心化的建设者
这里基本的想法是让获胜的建设者本身成为一个去中心化的协议。这是一个非常有趣的设计空间,可以对抗建设者集中化的威胁。
关于去中心化的建设者市场如何安全地共享订单流,还有一个更广阔的设计空间。
以下是 Flashbots 主页上声明的目标:
我们正在构建一个去中心化的区块构建网络,以赋予用户权力,并最大限度地去中心化公共区块链。
Flashbots 怎么做?
我理解 Flashbots 目前犹豫要不要把钥匙交给其他建设者,我也确实相信那里的人都是出于好意。正如前面所描述的,其他一些建设者可能会试图用更可疑的动机来巩固自己的地位,并对网络造成更大的伤害。这显然是不可取的。它可能更容易推动去中心化的建设者从一个优势地位运作。
但 Flashbots 会审查。且适用的法规仍然有点不清楚,但这不是重点。如果 Flashbots 的持续运营 ( 包括审查 ) 带来的结果明显比其他方式更好,那么它们将符合以太坊的长期最佳利益。这种审查可能只是雷达上的一个光点,在未来一年左右的时间里,随着上述想法的充实和实现,它就会消失。
话虽如此,我个人认为现在很难在希望它能阻止别人在未来进行审查的情况下,明确证明审查是正当的。
开源其建设者并引导市场
如果 Flashbots 不愿意或无法退回中继者审查,我相信他们有责任进一步引导和支持其他不审查的中继者 / 建设者社区。他们已经在这方面采取了一些重要的步骤,比如在合并之前开放了他们的中继者。这是在 AGPL 下完成的——一种激进的 copy-left 复制许可,要求衍生品在公开环境下开发。
合乎逻辑的下一步应该是尽快开源他们的建设者 ( 再次在 AGPL 下 )。这将是降低建设者市场准入门槛的重要一步,并将在很大程度上表明他们的意图。这将直接把生态系统的健康置于他们的短期竞争优势之上。
研究
Flashbots 的研究应该继续专注于解决审查问题——去中心化的建设者、包含列表、共享订单流等。这些都是 Flashbots 的既定目标。
然而,很难从外界的角度来看待这一点。目前,只有少数人在有效地决定整个以太坊网络是否正在被大规模审查。支持任何开展这项活动的公司,无论他们的业绩记录或既定目标如何,都很难被合理化。
近期需要围绕这项研究取得重大进展并保持开放。
中继者运营
老实说,我在中继者方面反复考虑过——他们是否应该运行它?我询问了 Vitalik、Justin Drake、Phil Daian、Zaki Manian 和 Francesco D'Amato。
Vitalik 重申了一个选项——Flashbots 可以将中立的研究实体与企业运营实体分开。这消除了研究中的利益冲突,我们也不再需要质疑运营商的动机。我们只会简单地理解,他们和该领域的其他大部分人一样在为自己工作。这样做的缺点可能是,研究和产品部门一起创造了一个积极的反馈循环,产生了有意义的进展,而你可能会失去其中的一些东西。我们看到 MEV-Boost 一开始是作为一项研究运行,后来由产品方实施。
如果他们只是简单地停止运行他们的中继者,问题不会完全消失。审查率可能会下降,但其他审查中继者可能会填补这一空缺。随着时间的推移,不可预见的新审查威胁也可能会出现。Flashbots 作为中继者 / 建设者的参与对 MEV-Boost 的总体采用有两个影响:
-
增加采用——作为可靠的服务提供商,Flashbots 的存在增加了边际采用率。但随着时间的推移,这种好处可能会逐渐减少,因为其他中继者和建设者会解决他们的问题。重要的是,Flashbots 可以而且应该积极努力使之成为现实,以各种可能的方式提供支持。
-
采用减少——Flashbots 的存在降低了对该系统的总体信任,这至少阻止了一些进一步的采用。我认为可以合理地推测,如果没有中继者或建设者的审查,采用率会更高。
如果他们要继续运行他们的中继者,最终在某种程度上对验证者的百分比施加一个上限应该是合理的。再次强调,实际上无论哪种方式,审查制度都很薄弱。但我仍然看到 1% 和 99% 审查之间的信号有很大的区别。如果被审查的以太坊区块的百分比继续攀升,并且没有实现新的变化来缓解这一点 ( 无论是 crLists, EigenLayer 提议等 ),这将是最为需要的。
最后的思考
我在这里提到 Flashbots 主要是出于以下几个原因。它们当然是审查的主要来源,但它们也为以太坊生态系统带来了数量惊人的积极工作。此外,我相信如果他们要在中立的社区建设者和传统的企业运营商之间站稳脚跟,他们对生态系统负有重大责任。最后,因为他们很聪明,所以他们可能会创建一些很酷的东西。
需要明确的是,我在这里不是要进行更多的指责,也不是要谈论过去的行为。我们的情况就是这样。我只是想看到这个问题得到解决。这需要围绕最重要的参与者的最佳行动方案进行富有成效和开放的讨论。Flashbots 就是其中之一。
不过,我也强烈恳请其他中继者和建设者以诚信的态度运营,并通过类似的行动尽可能多地支持生态系统。以太坊和加密货币作为一个整体,可能有一个有限的窗口来实现这一点。