玩币族移动版

玩币族首页 > 币圈百科 >

Solana 联创新文:Solana 的并发领导者机制,解决 MEV 并构建全球价格发现引擎

Solana 的更大愿景是建立一个全球无许可的价格发现引擎,能够与任何中心化交易所(CEX)的最佳表现竞争。

作者:Anatoly Yakovenko

编译:深潮TechFlow

概述

MEV 是无许可区块链中的一个基本问题。与大多数无许可区块链一样,Solana 的目标是尽量减少链运营者从用户那里提取的 MEV。

Solana 采取的方法是通过最大化领导者(即区块生产者)之间的竞争来减少 MEV。这意味着要缩短插槽时间,减少单个领导者连续安排的插槽数量,并增加每个插槽的并发领导者数量。

一般来说,每秒更多的领导者意味着用户在等待 T 秒后有更多选择,可以从即将上任的领导者中选择最优惠的报价。更多的领导者还意味着优秀领导者提供区块空间的成本更低,用户更容易只与优秀领导者进行交易,并排除不良领导者的交易。市场应该决定什么是好的,什么是坏的。

Solana 的更大愿景是建立一个全球无许可的价格发现引擎,能够与任何中心化交易所(CEX)的最佳表现竞争。

如果新加坡发生了对市场有影响的事件,消息仍然需要通过光纤以光速传输到纽约的 CEX。在消息到达纽约之前,Solana 网络中的领导者应该已经在区块中广播了这条消息。除非同时发生物理互联网分区,否则在消息到达纽约时,Solana 的状态已经反映了该消息。因此,不应该在纽约的 CEX 和 Solana 之间存在套利机会。

要全面实现这一目标,Solana 需要许多并发领导者,并且具有高度乐观的确认保证。

配置多个领导者

就像当前的领导者时间表一样,系统将每个插槽配置为 2 个领导者,而不是 1 个领导者。为了区分这两个领导者,一个通道标记为 A,一个通道标记为 B。A 和 B 可以独立轮换。实现这一计划需要回答的问题是:

如果区块 A 和 B 到达不同的时间或失败怎么办?

如何合并区块 A 和 B 中的交易顺序?

如何在 A 和 B 之间分配区块容量?

传输并发区块

要了解具体的过程,我们需要快速了解 Turbine。

领导者在构建区块时将其拆分为碎片。32 个碎片的批次是 32 个码碎片的纠删码。64 个碎片批次被默克化并签署根,这些与前一个批次链接在一起。

每个碎片通过独立的确定性随机路径发送。每个最后一个批次的重传者签署根。

从接收者的角度来看,每个接收者需要从经过验证的重传者那里接收 32 个碎片。任何缺失的碎片都会随机修复。

这个数字可以增加或减少,对延迟的影响很小。

假设重传者的碎片路径采样足够随机且按股份加权,协同分区网络所需的股份将远远超过 ε 股份,无论是到达时间还是数据。如果接收者检测到每个批次的 32/64(可配置)碎片在 T 时间内到达,那么很可能每个节点也是如此。这是因为 32 个随机节点足够大,不太可能随机全部在同一个分区中。

如果发生分区,共识需要解决它。这不影响安全性,但速度相对较慢。

多区块生产

如果传输单个区块,每个接收者(包括下一个领导者)将看到每个区块的碎片批次到达。如果区块在 T 毫秒内不完整,当前领导者将跳过该区块并构建一个没有它的分叉。如果领导者错误,所有其他节点将对区块进行投票,领导者的区块将被跳过。非故障领导者将立即切换到由投票指示的最重分叉。

在多区块传输的情况下,每个节点将需要等待最多 T 毫秒,然后对观察到的区块分区进行投票。对于两个并发领导者,可能的情况是:A、B 或 A 和 B。只有在区块延迟的情况下才会增加额外的延迟。在正常操作下,所有区块应该同时到达,每个验证者可以在两者都到达后立即投票。因此,T 在实践中可能接近于零。

这个攻击需要重点防御的是,一个质押了极少量代币的领导者能否在时隙边界上稍晚传输一个区块,从而可靠地导致网络分裂,并迫使网络花费大量时间通过共识机制来解决问题。网络的一部分会投票给 A,一部分会投票给 B,还有一部分会同时投票给 A 和 B。这三种分裂情况都需要通过共识机制来解决。

具体来说,零邻域的目标应该是确保节点同时恢复区块。如果攻击者在零邻域有一个协同节点,他们可以正常传输 31/64 碎片,并让攻击者选择性地传输最后一个碎片,试图创建分区。诚实的节点可以检测到哪些重传者延迟,并在任何单个诚实节点恢复区块后立即将缺失的碎片推送给他们。重传者可以继续,如果他们从任何地方接收到碎片或恢复它。因此,区块应该在一个诚实节点恢复后不久由所有节点恢复。需要通过测试来确定等待的时间,以及它是绝对的,还是按每个碎片的到达时间加权,是否应该使用股份节点声誉。

每个区块中协同领导者和重传者的概率大约是 P 领导者股份 (64P 重传者股份)。1% 的股份可以在攻击者作为领导者安排的 ½ 碎片批次中尝试攻击。因此,检测和缓解需要足够强大。

这种攻击对下一个领导者的影响很小,因为异步执行允许未使用的容量结转。因此,如果当前领导者迫使下一个领导者跳过一个插槽,而下一个领导者有 4 个连续插槽,跳过插槽的未使用容量可以结转,允许领导者重新包含跳过插槽的交易。

合并并发区块

如果用户为了增加被包含的机会或在区块中排在第一位,而将相同的交易同时发送给领导者 A 和 B,这将导致资源浪费。如果出现这种情况,增加并发领导者的数量对性能提升的效果将非常有限,因为他们只是在处理两倍的垃圾交易。

为了避免重复交易,费用支付者的前 N 位将决定交易在哪个领导者通道中有效。在这个例子中,最高位将选择 A 或 B。费用支付者必须被分配到一个独占的通道,这样领导者才能确定费用支付者是有效的,并且没有在其他领导者那里花光所有的 lamports(Solana 区块链中的最小货币单位)。

这将迫使垃圾邮件发送者至少为逻辑上相同的交易支付两次费用,但为了增加成为首个交易的概率,垃圾邮件发送者可能仍然会发送逻辑上相同的交易。

为了阻止这种行为,用户可以选择在领导者的优先费用之外,额外包含一个 100% 销毁订单费用。最高的订单费用首先执行。否则,使用先进先出 (FIFO) 排序。在平局的情况下,使用确定性的随机排列来解决顺序。因此,对于垃圾邮件发送者来说,提高他们的订单费用并首先执行,比支付两次包含费用更具成本效益。

为了处理捆绑和重新排序的交易序列,系统需要支持捆绑交易,这些交易可以添加一个订单费用来覆盖整个交易序列的排序成本。手续费支付者只在其预定的通道中有效,因此捆绑只能在其自己的通道中操纵序列。

或者,订单费用可能不是必要的。如果使用 FIFO 排序,并且垃圾邮件发送者在所有通道中始终被收取优先费用,可能只需允许市场决定支付给 N 个领导者以提高包含机会的成本与支付给最有可能首先包含交易的最近领导者的成本。

管理区块资源

在区块链网络中,当有两个并发的领导者时,每个系统范围内的区块容量限制需要被平均分配。具体来说,不仅是总容量,还包括每个具体限制,比如写锁限制——任何账户都不能写入超过 600 万计算单元 (CUs),而每个领导者最多只能安排 2400 万 CUs 的交易。这样,即使在最坏情况下,合并后的区块也不会超过系统的总容量限制。

这种机制可能会导致费用的波动和资源未充分利用,因为调度优先级的费用将由每个领导者的容量决定,而每个领导者对其他并发领导者的调度状态知之甚少。

为了缓解资源利用不足和由此导致的费用飙升,任何未使用的区块容量应滚动到未来的区块。也就是说,如果当前合并区块在写锁、总字节数或总计算单元 (CUs) 上使用不足 X,则应将 K*X 添加到下一个区块,其中 0 < K < 1,直到某个最大值。异步执行可以滞后于链顶端多达一个 epoch,因此容量滚动可以相当激进。

根据最近的区块数据,大多数区块通常填充了 80%,而写锁限制远低于 50%。一般来说,未来的区块应该总是有一些备用容量。由于区块可能暂时超过容量限制,执行必须与共识过程异步进行。有关异步执行提案的详细信息,请参阅 APE 文章。

知识: