金色硬核 | V神:通往单槽最终确认的路径

本文为V神2022年1月25日在ethereum.org上发表的文章。金色财经编译如下:

特别感谢Justin Drake、Dankrad Feist、Alex Obadia、Hasu和其他hackmd anons提供反馈和对本文各种版本的审阅。

目前的以太坊(信标链)区块需要64-95个slot(约15分钟)才能最终确认(注:在以太坊2.0 中,每12秒有一个指定的slot。如果验证者被分配到一个slot中提议区块,该slot便有一个区块。然而,如果验证者错过该slot,那么便是个空slot)。这是合理的,因为它是在去中心化/最终确认时间/开销三者权衡曲线上选择的一个中等、不坏的权衡:15分钟不算太长,与现有交易所的确认时间相当,它允许用户在普通计算机上运行节点,甚至由32枚ETH的存款(而不是早期的1500枚ETH)而产生的大量验证者。但是,有很多很好的论据可以将最终确认时间减少到单个插槽(slot)。这是一篇研究现状的文章,研究了一些可能的策略。

目前的以太坊质押如何以及为何有效

目前以太坊信标链大约有285,000名验证者账户已存入32枚ETH,因此可以参与质押。验证者不会与用户一一对应:富有的质押者可能控制着数百个验证者。最低32枚ETH限制了验证者账户的可能数量,并确保链仍然具有处理它们的计算能力。

每个插槽(12秒)都会将一个新区块添加到链上。在每个插槽中,还有数千个证明(attestations)对链的头部进行投票。有一个名为LMD GHOST的分叉选择规则,它将这些证明作为输入,并确认链的头部。这种由数千个证明进行的并行投票使得以太坊比传统的最长链系统更加健壮:除非存在主动攻击或巨大的网络事故,否则即使是单个插槽也几乎永远不会被反转。

证明还有第二个目的:它们在称为Casper FFG的大规模共识算法中充当投票。每个epoch(32个slot,或6.4 分钟),所有活跃的验证者都有机会证明一次。这样经过两轮,如果一切顺利,一个epoch(以及其中的所有区块)将被最终确认。一旦一个区块被最终确认,反转该区块需要至少1/3的验证者烧掉他们的存款:攻击成本超过300万枚ETH

持续审查验证者或交易的成本同样高昂,尽管防御审查攻击需要额外的协议干预。如果51% 的验证者开始审查,受害者和用户可以在少数软分叉上进行协调,他们在彼此的区块上构建并忽略攻击者。在少数软分叉上,攻击者的存款将因“怠惰惩罚”(inactivity leak)而损失数百万枚ETH,几周后链恢复最终确认。

为什么要尝试实现单槽最终确认?

尝试摆脱现状并将最终确认时间缩短到一个slot有几个关键原因:

  • 用户体验。大多数用户不愿意等待15分钟才能最终确认。目前即使是交易所也经常认为存款在12-20次确认(约 3-5 分钟)后“最终确认”,但即使12-20个PoW确认提供的安全保证(与真正的PoS最终确认相比)也是低的安全保证。单槽最终确认将以用户越来越习惯期望的速度提供非常高的安全性。

  • MEV重组阻力单槽最终确认甚至将使为MEV提取目的而重组链不可行。合并中的LMD GHOST已经使这变得困难,但是单槽最终确认使这种保证更加强大,并产生了强大而压倒性的抑制作用,甚至可以阻止敌对的大多数人串通和攻击。有关该论点的更详细说明,请参阅这篇文章https://www.paradigm.xyz/2021/07/ethereum-reorgs-after-the-merge/

  • 减少协议复杂性和错误的机会。Casper FFG最终确认和LMD GHOST分叉选择之间的“接口”是一个非常复杂的来源,导致许多攻击需要相当复杂的补丁来修复,并且经常发现更多的弱点。单槽最终确认提供在单槽确认机制和分叉选择规则(仅在≥13≥13离线案例)间关系更清晰的机会。其他复杂性来源(例如,改组为固定规模的委员会)也可以减少。

想法 1:通过超级委员会进行单槽最终确认

不是所有验证者都参与每轮Casper FFG,而是只有几千名验证者的中型超级委员会参与,允许每轮共识在一个slot发生。该技术理念最初是在这篇ethresear.ch帖子中引入https://ethresear.ch/t/a-model-for-cumulative-committee-based-finality/10259。这篇文章更详细地描述了这个想法,但核心原则如下:

BFT共识不是在每个epoch运行,而是在每个slot运行。这意味着一旦交易被包含在一个区块中,在一个slot之后,将花费数千枚ETH来恢复该交易。

我们不依赖完整的活跃验证者集来最终确认每个slot。相反,我们依靠随机选择的数千名验证者组成的超级委员会。

分叉选择规则 (LMD GHOST) 仅用于委员会未确认的例外情况(这需要 >1/4 离线或恶意)。如果发生这种情况,分叉选择规则将决定哪个区块是链的头部,以及委员会将被“怠惰惩罚”(inactivity leak)直到再次确认。

3tyPEuH9fXfxnjiXQ3e6ipd4dtqFVwAZDFbYdv6t.png如果委员会未能确认,则链继续使用分叉选择来确定链头和被“怠惰惩罚”的离线验证者,直到他们的余额被稀释到,剩余在线验证者余额的2/3并且委员会可以确认的程度。

切换到超级委员会的次要好处

从全局验证者集切换到超级委员会有一些次要好处:

运行验证者节点的计算负载变得更加稳定。要求与验证者总数成正比,强制验证者拥有强大的机器以防验证者数量大幅增加,计算负载将是稳定的,因此验证者确切知道他们需要什么计算要求。

大多数情况下,验证者可以立即退出。目前不属于委员会的验证者将能够立即退出(除非有很多提款正在进行并且有一个队列)。即使是委员会中的验证者也可以很快退出(1-5 分钟),因为委员会可以在单槽最终确认性下快速轮换。只有在真正特殊的情况下(意外的大规模退出或积极的持续攻击),验证者才需要留下并继续保护链,直到一切恢复正常。

超级委员会有多大?

就验证者数量而言,答案是“大到足以成为一个安全委员会”(所以,几百个)。但就总ETH而言,委员会也必须足够大。“罚没(slashing) ”和“怠惰惩罚”(inactivity leak)的ETH数量需要大于可以从攻击中实际获得的收入,并且需要大到足以阻止或破坏具有大量外部激励来破坏链的强大攻击者。

这个需要多少ETH的问题不可避免地是一个直觉问题。以下是可以提出的一些问题来指导你的直觉:

  • 假设以太坊受到51%的攻击,社区需要花几天时间协调链下治理事件以恢复,但所有ETH的 X%被烧毁。X需要多大才能对以太坊生态系统产生净效益?

  • 假设一家大型交易所因数百万ETH被黑客入侵,攻击者将收益存入并获得超过51%的验证者。在他们所有的赃款被烧毁之前,他们应该能够进行多少次51%攻击?

  • 假设51%攻击者开始反复重组链,以在一段时间内捕获所有MEV。我们希望对攻击者施加的每秒成本是多少?

  • Justin Drake的估计表明,如今spawn-camp攻击比特币的成本(因此,在社区改变PoW算法之前反复进行51%攻击)约为100亿美元,或市值的1%。一次性51%攻击以太坊的成本应该是这个水平的多少倍?

    d1f7H0108geJBrTwhRiFaAfD0eF3JhkJbMWDwEVf.png

以太坊研究人员的内部调查

如果我们只关注不依赖延迟的51%攻击,100万ETH的攻击成本意味着超级委员会规模为200 万ETH(约65,536个验证者),如果再考虑涉及恶意验证者和网络操纵的复杂组合的34%的攻击,超级委员会规模为300万ETH(约97,152 个验证者)。但是,如果我们希望以太坊链负载保持与现在相同(每个slot约9,000或总计约288,000 ETH),这将对应于96,000到144,000 ETH的攻击成本。这两个数字之间仍然存在很大差异。

因此,除非以太坊社区可以确信攻击以太坊的较低成本是可以接受的(请记住:攻击者仍然需要控制超过50%的质押ETH,这只是他们将损失的数量),仅依靠这条路径似乎很难。

想法 2:努力让尽可能多的证明者发挥作用

假设我们确实希望有一个链,每个slot有大量验证者参与(例如,131,072个验证者以获得保守的约400万ETH)。那上面的性能数字会是什么样子?

事实证明,每个slot有大量验证者证明的链上成本并没有看起来那么令人望而却步:

  • 存储验证者记录所需的状态空间将与今天完全相同(每个验证者约150 字节)。

  • 验证签名需要将131,072个公钥的事实上的随机子集相加。每个椭圆曲线加法可以在 ~1微秒内完成,因此这可以在~130毫秒内完成。这将需要每个插槽执行两次(如果一个区块包含冗余证明,则可能需要更多次)。

  • 如果我们假设在slot N 中活跃的验证者通常在slot N+1中保持活跃,则可以进一步优化链上添加成本;这意味着对于每个插槽,我们只需要计算新旧聚合pubkey之间的增量,在良好的条件下,它可能包含几千个甚至几百个验证者公钥。即使在最坏的情况下,至少2倍优化(因此,约65毫秒)应该始终是可能的。剩下的最大问题是签名聚合。有131,072个验证者制作和发送签名,这些需要快速组合成一个大型聚合签名。

目前聚合是在p2p子网中完成的。每个大小为256的委员会都在其自己的子网中聚合了签名。有16个随机选择的优先聚合器可以进行聚合并将它们提交到主子网。然后,提议者从每个委员会中获取最佳聚合,并将它们聚合在一起,形成单一的总合并聚合。

PAHSWbo1dQ3p6tNMjooiwhdqHNflbojMaBOIMS2W.png

这给每个委员小组带来了负担,验证者需要单独验证签名(每个签名一对),特别是在攻击者用无效签名淹没网络的情况下,以及在全局子网中,如果有n个小组委员,提议者必须验证16 * n签名。

聚合很可能成为未来两年显著优化的目标。目前,最大的实际瓶颈是每个子网的负载,特别是对于需要在多个子网中的节点。

最有希望能够显著改进的两条简单途径是:

1、在不增加每个子网的负载的情况下,增加子网的数量以允许更多的总证明。主子网中的负载会增加,但这将通过dank-sharding得到补偿,它通过允许插槽中的所有验证者对相同数据进行签名来提高效率,从而更容易地对这些签名进行批量验证。

2、更改网络规则,以便即使具有许多验证者的节点也只需要参与一个子网,从而为增加每个子网的负载和子网数留出空间。如果验证者是其中的聚合器,则验证者仅需要严格订阅子网;仅仅发布到子网的验证者只需要找到订阅该子网的诚实对等方,而无需自己订阅它。

更专业的聚合器

支持更多验证者的一种可能更激进的策略是将签名聚合转变为更专业的角色(类似于PBS 中的区块构建者),我们期望专业参与者在每个子网(甚至所有子网)中持续存在并执行收集签名的好工作。这些参与者可以得到报酬,也可以是志愿者角色(因为对于已经质押许多验证者的用户而言,额外成本非常低)。

一个简单的协议是允许验证者签署一条ProposedAggregate消息,其中包含 (i) 聚合签名,(ii) 参与人的位域(假设有131,072 个验证者,消息大小只有16 kB)和 (iii)由聚合器对这两个对象签名。

提议者将侦听ProposedAggregate消息,并验证参与人数最多的签名。如果它是有效的,他们包含它。如果签名无效,提议者将失去最多约130毫秒的验证时间,他们将继续验证参与度第二高的聚合(如果需要,第三高等),以及所有ProposedAggregate消息都无效的聚合器将被“罚没(slashing) ”。

怎么做到?

转向单槽最终确认是一个多年的路线图。即使很快开始进行大量的开发工作,这也将是后来添加到以太坊的重大改进之一,远在完全推出权益证明、分片和Verkle树之后。一般来说,实现路径大致如下:

1、加紧优化证明聚合的工作。无论如何,这是一个重要的问题,因为预计验证者数量会增加。无论我们为其他任何步骤做什么,我们都需要对这个问题进行更专注的研究和开发工作。

2、同意一般参数:我们的目标是什么规模的超级委员会(或者超级委员会是所有活跃验证者的集合,我们实施一些不同的机制来控制可以有多少活跃验证者)?我们对什么水平的开销感到满意,我们将使用哪些技术来减少开销?

3、研究、达成一致并指定一个理想的共识和分叉选择机制以实现单槽最终确认性。这将结合 BFT共识机制(Casper FFG或更传统的东西)和分叉选择规则,其中分叉选择规则仅适用于≥1/3验证者离线的情况。

4、同意并按实施路径执行。这可能是多步骤的,其中一步引入超级委员会机制,然后下一步添加全新的共识和聚合机制。

最终的好处将非常显著,并且该技术可以随着时间的推移而改进,以实现此处未描述的其他好处(例如,使用增加的最大验证者数量来减少最小存款数额)。因此,值得尽快开始对本文中描述的技术挑战进行更深入、更专注的研究和开发。

责任编辑:谭红朝我要纠错
声明:本文系金色财经原创稿件,版权属金色财经所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:金色财经",违者将依法追究责任。
提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

金色财经 > 区块链 > 金色硬核 | V神:通往单槽最终确认的路径