作者:Vitalik,以太坊创始人;翻译:0xjs@区块链网络
良好的区块链用户体验的一个重要特性是快速的交易确认时间。如今,以太坊与五年前相比已经有了很大的进步。得益于 EIP-1559和Merge之后稳定的区块时间,用户在L1上发送的交易可以在 5-20 秒内得到可靠确认。这与使用信用卡支付的体验大致相当。然而,进一步改善用户体验是有价值的,有些应用程序确实需要数百毫秒甚至更短的延迟。本文将介绍以太坊的一些实用选项。
现有想法和技术概述
单槽最终确定性
如今,以太坊的Gasper共识采用slot和epoch架构。每隔 12 秒 slot,验证者子集会在链区块头上发布投票,在 32 个 slot(6.4 分钟)内,所有验证者都有机会投票一次。然后,这些投票被重新解释为类似于PBFT 的共识算法中的消息,该算法在两个 epoch(12.8 分钟)后提供非常严格的经济保证,称为最终确定性。
过去几年,我们对当前的方法越来越不满意。主要原因是:(i)它很复杂,逐个slot投票机制和逐个epoch最终确定性机制之间存在许多交互错误;(ii)12.8 分钟太长了,没人愿意等那么久。
单槽最终确定性用一种与Tendermint 共识更相似的机制取代了这种架构,在该机制中,区块 N 在区块 N+1 生成之前完成。与 Tendermint 的主要不同之处在于我们保留了“不活动泄漏(inactivitly leak)”机制,该机制允许链继续运行并在超过 1/3 的验证者离线时恢复。
单槽最终性设计图
SSF 的主要挑战在于,它似乎天真地暗示每个以太坊质押者都需要每 12 秒发布两条消息,这对区块链来说是一个很大的负担。有一些巧妙的想法可以缓解这种情况,包括最近的Orbit SSF提案。但即便如此,虽然这通过加快“最终确定性”来显著改善用户体验,但它并没有改变用户需要等待 5-20 秒的事实。
Rollup预确认
在过去的几年中,以太坊一直在遵循以rollup 为中心的路线图,围绕支持数据可用性和其他功能设计以太坊基础层(“L1” ),然后这些功能可被rollup(还有validiums和plasmas)等2 层协议使用,这些协议可以为用户提供与以太坊相同级别的安全性,但规模要大得多。
这在以太坊生态系统中创建了一种关注点分离:以太坊 L1 可以专注于抗审查、可靠、稳定以及维护和改进某些基础功能核心,而 L2 可以专注于更直接地接触用户——通过不同的文化和技术权衡。但如果你沿着这条路走下去,就会出现一个不可避免的问题:L2 希望为那些希望在 5-20 秒内获得更快确认的用户提供服务。
到目前为止,至少在口头上,L2 有责任创建自己的“去中心化排序”网络。一小部分验证者会签署区块,可能每隔几百毫秒一次,他们会将自己的“质押”放在这些区块后面。最终,这些 L2 区块的区块头会发布到 L1。
L2 验证者集可以作弊:他们可以先签署区块 B1,然后再签署有冲突的区块 B2,并在 B1 之前将其提交到链上。但如果他们这样做,他们会被抓住并失去他们的质押。在实践中,我们已经看到了这种做法的中心化版本,但是 rollups 在开发去中心化排序网络方面进展缓慢。你可以说要求 L2 都进行去中心化排序是一项不公平的交易:我们要求 rollups 基本上做与创建全新 L1 相同的工作。出于这个原因和其他原因,Justin Drake 一直在推广一种让所有 L2(以及 L1)访问共享的以太坊范围的预确认机制的方法:based预确认。
Based预确认
Based预确认的方法假设以太坊提议者将因 MEV 相关原因而成为高度复杂的参与者。Based预确认的方法利用这种复杂性,通过激励这些成熟的提议者接受提供预确认即服务的责任。
基本思想是创建一个标准化协议,通过该协议,用户可以提供额外的费用,以换取立即保证该交易将被纳入下一个区块,并可能获得有关执行该交易结果的声明。如果提议者违反了对任何用户做出的任何承诺,他们就会受到惩罚。
如上所述,Based预确认的机制为 L1 交易提供了保障。如果 rollup 是“based”的,那么所有 L2 区块都是L1 交易,因此可以使用相同的机制为任何 L2 提供预确认。
我们在这里实际上看到的是什么?
假设我们实现单slot最终性。我们使用类似Orbit的技术来减少每个slot签名的验证者数量,但不要太多,这样我们也可以在减少 32 ETH 最低质押量这一关键目标上取得进展。结果,slot时间可能会逐渐增加到 16 秒。然后我们使用Rollup预确认或Based预确认来为用户提供更快的保证。我们现在有什么?一个 epoch-and-slot 架构。
此时,“它们是同一张图”这个模因已经被过度使用了,所以我只会将我几年前绘制的一张旧图表与 L2 预确认图表放在一起,以描述 Gasper 的slot和epoch架构,并希望这能够让人们明白这一点。
有一个深刻的哲学原因使得人们似乎很难避免使用epoch-and-slot架构:就某件事达成近似一致本质上比就某件事达成最大程度强化的“经济最终性”一致需要更少的时间。
一个简单的原因是节点数量。虽然由于超优化的 BLS 聚合和不久的将来的 ZK-STARK,旧的线性去中心化/最终时间/开销权衡现在看起来更加温和,但从根本上来说,以下观点仍然是正确的:
1、“近似一致”仅需要少数节点,而经济最终确定性则需要所有节点的相当一部分。
2、一旦节点数量超过一定规模,你就需要花费更多时间来收集签名。
在当今的以太坊中,12 秒的slot被划分为三个子slot,用于 (i) 区块发布和分发、(ii) 证明和 (iii) 证明聚合。如果证明者数量少得多,我们可以将其减少到两个子slot,并将slot时间缩短至 8 秒。另一个实际上更重要的因素是节点的“质量”。如果我们还可以依靠专业化的节点子集来达成近似协议(并且仍然使用完整的验证器集来实现最终性),我们可以将其缩短到约 2 秒。
因此,我认为(i) slot-and-epoch 架构显然是正确的,但 (ii) 并非所有 slot-and-epoch 架构都是平等的,更充分地探索设计空间是有价值的。特别是,值得探索那些不像 Gasper 那样紧密交织的选项,而是在两种机制之间有更强的关注点分离。
L2应该做什么?
在我看来,目前 L2 可以采取三种合理的策略:
1、无论是技术层面还是精神层面,都要“based”。也就是说,它们优化为以太坊基础层技术属性及其价值(高度去中心化、抗审查等)的传递渠道。在最简单的形式中,你可以将这些rollup视为“品牌分片”,但它们也可以比这更雄心勃勃,并且对新的虚拟机设计和其他技术改进进行了大量实验。
2、自豪地成为“具有区块链脚手架的服务器”,并充分利用它。如果你从服务器开始,然后添加(i)STARK 有效性证明以确保服务器遵守规则,(ii)保证用户退出或强制交易的权利,以及可能的(iii)集体选择的自由,无论是通过协调的大规模退出还是通过投票更改排序器的能力,那么你已经获得了很多链上的好处,同时保留了服务器的大部分效率。
3、折衷方案:一条拥有 100 个节点的快速链,以太坊提供额外的互操作性和安全性。这是许多 L2 项目事实上的当前路线图。
对于某些应用程序(例如ENS、keystores、某些付款),12 秒的区块时间就足够了。对于那些不够的应用程序,唯一的解决方案是 slot-and-epoch 架构。在这三种情况下,“epoch”都是以太坊的 SSF(也许我们可以将该首字母缩略词重新定义为“单个 slot”以外的其他含义,例如,它可以是“Secure Speedy Finality安全快速终结性”)。但在上述三种情况下,“slot”是不同的:
1、以太坊原生的 slot-and-epoch 架构
2、服务器预确认
3、委员会预确认
一个关键问题是,我们能把第 (1) 类中的某样东西做得有多好?特别是,如果它变得非常好,那么第 (3) 类似乎就不再具有那么多意义了。第 (2) 类将永远存在,至少因为任何“based”的东西都不适用于链下数据 L2,例如 Plasma 和 validium。但如果以太坊原生的 slot-and-epoch 架构可以缩短到 1 秒的“slot”(即预确认)时间,那么第 (3) 类的空间就会变得小得多。
今天,我们远未得到这些问题的最终答案。一个关键问题——区块提议者将变得多么复杂——仍然是一个存在相当多不确定性的领域。像Orbit SSF这样的设计非常新,这表明像 Orbit SSF 这样的设计是时代的 slot-and-epoch 设计的设计空间仍然未被充分探索。我们拥有的选项越多,我们就能为 L1 和 L2 上的用户做得更好,我们也能简化 L2 开发人员的工作。
查看更多