转发原文标题《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
良好的区块链用户体验的重要特性之一是快速的交易确认时间。如今,以太坊与五年前相比已经有了很大的进步。得益于 EIP-1559 和 PoS 合并后稳定的出块时间,用户在L1上发送的交易在5-20秒内就能得到可靠确认。这与信用卡支付的体验大致相当。然而,以太坊的用户体验仍需要进一步的改善,因为有些应用程序确实需要数百毫秒甚至更短的交易延迟。这篇文章将介绍加快以太坊交易确认时间的一些实用方案。
现在以太坊的 Gasper 共识采用时隙(Slot)和纪元(epoch)架构。每隔 12 秒(单个 slot 的时长),验证者子集会在区块链的最新区块上发布投票,在 32 个 slot(6.4 分钟,一个 epoch 包含 32 个 slot)内,所有验证者都有机会投票一次。然后,这些投票被重新解释为类似于 PBFT 的共识算法中的消息,该算法在两个 epoch(12.8 分钟)后提供非常严格的经济保证,这就是最终性。
在过去的几年里,我们对当前的方法越来越不满意。主要原因是(i)它很复杂,并且逐个时隙投票机制和逐个纪元最终确定机制之间存在很多交互错误,以及(ii)12.8分钟太长,没有人愿意等那么久。
单时隙最终性(SSF)用一种与Tendermint 共识类似的机制取代了这种架构 ,其中块 N 在块 N+1 之前完成。与 Tendermint 的主要区别是我们保留了“不活跃泄漏(inactive leak)”机制,这种机制允许区块链在超过 1/3 的验证者离线时继续运行并恢复。
主要提议 single-slot finality design图
SSF 的主要挑战在于,它似乎暗示者每个以太坊质押者都需要每 12 秒发布两条消息,这对区块链来说是一个很大的负担。有一些巧妙的想法可以缓解这种情况,包括最近的 Orbit SSF 提案。即便如此,这种方案通过加快「最终确定性」能显著改善用户体验,但它并没有缩短用户需要等待 5-20 秒的这个时间。
在过去的几年中,以太坊一直遵循着以 Rollup 为中心的路线图,围绕支持数据可用性和其他功能设计以太坊基础层(L1)。这些功能被 Rollup(还有 Validiums 和 Plasmas )等 L2 协议使用,L2 协议可以为用户提供与以太坊相同级别的安全性,但它们的交易规模比 L1 要大得多。
这使得以太坊生态系统中产生了一种关注点分离:以太坊 L1 可以专注于抗审查、可靠、稳定以及维护和改进某些核心基础功能,而 L2 可以通过不同的文化和技术权衡专注于用户体验。但如果你沿着这条路走下去,就会出现一个不可避免的问题:L2 专注于为那些希望在 5-20 秒内获得更快确认的用户提供服务。
到目前为止,创建自己的「去中心化排序」网络已经成为 L2 不可推卸的责任。可能每隔几百毫秒,一小部分验证者会签署区块,他们会将自己的代币质押在这些区块中。最终,这些 L2 区块的区块头会发布到 L1 上。
L2 验证者集可以作弊:他们可以先签署区块 B1,然后再签署与 B1 有冲突的区块 B2,并在 B1 之前将其提交到链上。但如果他们这样做,就会面临惩罚而失去他们的押金。在实践中,我们已经看到了这种做法的中心化版本,但是 Rollup 在开发去中心化排序网络方面进展缓慢。你可以说要求 L2 都进行去中心化排序是一项不公平的交易:这相当于要求 Rollup 做与创建一个全新的 L1 相同的工作。出于一些原因,以太坊基金会研究员 Justin Drake 一直在推广一种让所有 L2(以及 L1)访问共享的以太坊预确认机制的方法:基于预确认(based preconfirmations)。
基于预确认的方法,假设以太坊提议者将因 MEV 相关原因而成为高度复杂的参与者(请参阅此处了解我对 MEV 的解释,另请参阅执行系列提议)。基于预确认的方法利用这种复杂性,激励这些成熟的提议者提供预确认服务。
基本想法是创建一个标准化协议,通过该协议,用户可以提供额外的费用,以换即时取保证自身交易被纳入下一个区块,并获得有关执行该交易结果的声明。如果提议者违反了对任何用户做出的承诺,他们就会受到惩罚。
如上所述,基于预确认为 L1 交易提供保证。如果汇总是 “基于”汇总,那么所有 L2 区块都是 L1 交易,因此可以使用相同的机制为任何 L2 提供预确认。
假设我们实现单时隙最终性。我们使用类似 Orbit 的技术来减少每个时隙签名的验证者数量,这样我们也可以在减少 32 ETH 最低质押数量,可谓是一举两得。结果,slot 时间可能会逐渐增加到 16 秒。然后我们使用 Rollup 预确认或基于预确认来为用户提供更快的保证。我们现在得到了什么?一个时隙与纪元(epoch-and-slot)架构。
“它们是同一张图”的模因已经被过度使用了,所以我将把我几年前画的一个旧图表来描述 Gasper 的时隙和纪元架构和 L2 预确认的图表放在一起,希望这能让大家明白这一点。
为什么纪元和时隙架构似乎如此难以避免,有一个深刻的哲学原因:它本质上比达成最严格的“经济最终性”协议所需的时间更少。
一个简单的原因是节点数量。虽然由于超优化的 BLS 聚合和不久的将来的 ZK-STARK,旧的@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">渐进式去中心化 / 最终确定时间 / 开销权衡现在看起来更加温和,但从根本上来说,以下观点仍然是正确的:
在当前的以太坊中,12 秒的 slot 被划分为三个 sub-slots,用于 (i) 区块发布和分发、(ii) 证明 (iii) 证明聚合。如果证明者数量少得多,我们可以将其减少到两个 sub-slots,并拥有 8 秒的 slot 时间。另一个实际上更重要的因素是节点的「质量」。如果我们还可以依靠专业化的节点子集来达成近似协议(并且仍然使用完整的验证器集来实现最终性),我们可以合理地将其缩短到约 2 秒。
因此,我认为 (i) 时隙和纪元架构显然是正确的,但 (ii) 并非所有时隙和纪元架构都是一样的,我们需要更充分地探索设计空间。特别是,那些不像 Gasper 那样紧密交织的方案值得探索。
我认为,目前 L2 可以采取三种合理的策略:
对于某些应用程序(例如 ENS、keystores 以及一些支付场景),12 秒的区块时间就足够了。对于需要更短确认时间的应用程序,唯一的解决方案是时隙和纪元架构。在这三种情况下,「纪元」都是以太坊的 SSF(也许我们可以将该首字母缩略词重新定义为「单个时隙」以外的其他含义,例如,它可以是「Secure Speedy Finality」)。但在上述三种情况下,「时隙」是不同的:
一个关键问题是,我们能把第 (1) 类中的某样东西做得有多好?特别是,如果它变得非常好,那么第 (3) 类似乎就意义不大了。第 (2) 类将永远存在,因为任何「Based」的东西都不适用于链下数据 L2,例如 Plasma 和 Validium。但如果以太坊原生的时隙和纪元架构可以缩短到 1 秒的「时隙」(即预确认)时间,那么第 (3) 类的空间就会变得小得多。
今天,我们距离得到这些问题的最终答案还很遥远。区块提议者将变得多么复杂?这个关键问题的答案仍然存在相当多不确定性。像 Orbit SSF 这样的设计非常新颖,因此类似 Orbit SSF 的时隙和纪元方案的设计空间还需要更多的探索。我们拥有的选择越多,我们就能为 L1 和 L2 上的用户做得更好,我们也能简化 L2 开发人员的工作。
转发原文标题《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
良好的区块链用户体验的重要特性之一是快速的交易确认时间。如今,以太坊与五年前相比已经有了很大的进步。得益于 EIP-1559 和 PoS 合并后稳定的出块时间,用户在L1上发送的交易在5-20秒内就能得到可靠确认。这与信用卡支付的体验大致相当。然而,以太坊的用户体验仍需要进一步的改善,因为有些应用程序确实需要数百毫秒甚至更短的交易延迟。这篇文章将介绍加快以太坊交易确认时间的一些实用方案。
现在以太坊的 Gasper 共识采用时隙(Slot)和纪元(epoch)架构。每隔 12 秒(单个 slot 的时长),验证者子集会在区块链的最新区块上发布投票,在 32 个 slot(6.4 分钟,一个 epoch 包含 32 个 slot)内,所有验证者都有机会投票一次。然后,这些投票被重新解释为类似于 PBFT 的共识算法中的消息,该算法在两个 epoch(12.8 分钟)后提供非常严格的经济保证,这就是最终性。
在过去的几年里,我们对当前的方法越来越不满意。主要原因是(i)它很复杂,并且逐个时隙投票机制和逐个纪元最终确定机制之间存在很多交互错误,以及(ii)12.8分钟太长,没有人愿意等那么久。
单时隙最终性(SSF)用一种与Tendermint 共识类似的机制取代了这种架构 ,其中块 N 在块 N+1 之前完成。与 Tendermint 的主要区别是我们保留了“不活跃泄漏(inactive leak)”机制,这种机制允许区块链在超过 1/3 的验证者离线时继续运行并恢复。
主要提议 single-slot finality design图
SSF 的主要挑战在于,它似乎暗示者每个以太坊质押者都需要每 12 秒发布两条消息,这对区块链来说是一个很大的负担。有一些巧妙的想法可以缓解这种情况,包括最近的 Orbit SSF 提案。即便如此,这种方案通过加快「最终确定性」能显著改善用户体验,但它并没有缩短用户需要等待 5-20 秒的这个时间。
在过去的几年中,以太坊一直遵循着以 Rollup 为中心的路线图,围绕支持数据可用性和其他功能设计以太坊基础层(L1)。这些功能被 Rollup(还有 Validiums 和 Plasmas )等 L2 协议使用,L2 协议可以为用户提供与以太坊相同级别的安全性,但它们的交易规模比 L1 要大得多。
这使得以太坊生态系统中产生了一种关注点分离:以太坊 L1 可以专注于抗审查、可靠、稳定以及维护和改进某些核心基础功能,而 L2 可以通过不同的文化和技术权衡专注于用户体验。但如果你沿着这条路走下去,就会出现一个不可避免的问题:L2 专注于为那些希望在 5-20 秒内获得更快确认的用户提供服务。
到目前为止,创建自己的「去中心化排序」网络已经成为 L2 不可推卸的责任。可能每隔几百毫秒,一小部分验证者会签署区块,他们会将自己的代币质押在这些区块中。最终,这些 L2 区块的区块头会发布到 L1 上。
L2 验证者集可以作弊:他们可以先签署区块 B1,然后再签署与 B1 有冲突的区块 B2,并在 B1 之前将其提交到链上。但如果他们这样做,就会面临惩罚而失去他们的押金。在实践中,我们已经看到了这种做法的中心化版本,但是 Rollup 在开发去中心化排序网络方面进展缓慢。你可以说要求 L2 都进行去中心化排序是一项不公平的交易:这相当于要求 Rollup 做与创建一个全新的 L1 相同的工作。出于一些原因,以太坊基金会研究员 Justin Drake 一直在推广一种让所有 L2(以及 L1)访问共享的以太坊预确认机制的方法:基于预确认(based preconfirmations)。
基于预确认的方法,假设以太坊提议者将因 MEV 相关原因而成为高度复杂的参与者(请参阅此处了解我对 MEV 的解释,另请参阅执行系列提议)。基于预确认的方法利用这种复杂性,激励这些成熟的提议者提供预确认服务。
基本想法是创建一个标准化协议,通过该协议,用户可以提供额外的费用,以换即时取保证自身交易被纳入下一个区块,并获得有关执行该交易结果的声明。如果提议者违反了对任何用户做出的承诺,他们就会受到惩罚。
如上所述,基于预确认为 L1 交易提供保证。如果汇总是 “基于”汇总,那么所有 L2 区块都是 L1 交易,因此可以使用相同的机制为任何 L2 提供预确认。
假设我们实现单时隙最终性。我们使用类似 Orbit 的技术来减少每个时隙签名的验证者数量,这样我们也可以在减少 32 ETH 最低质押数量,可谓是一举两得。结果,slot 时间可能会逐渐增加到 16 秒。然后我们使用 Rollup 预确认或基于预确认来为用户提供更快的保证。我们现在得到了什么?一个时隙与纪元(epoch-and-slot)架构。
“它们是同一张图”的模因已经被过度使用了,所以我将把我几年前画的一个旧图表来描述 Gasper 的时隙和纪元架构和 L2 预确认的图表放在一起,希望这能让大家明白这一点。
为什么纪元和时隙架构似乎如此难以避免,有一个深刻的哲学原因:它本质上比达成最严格的“经济最终性”协议所需的时间更少。
一个简单的原因是节点数量。虽然由于超优化的 BLS 聚合和不久的将来的 ZK-STARK,旧的@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">渐进式去中心化 / 最终确定时间 / 开销权衡现在看起来更加温和,但从根本上来说,以下观点仍然是正确的:
在当前的以太坊中,12 秒的 slot 被划分为三个 sub-slots,用于 (i) 区块发布和分发、(ii) 证明 (iii) 证明聚合。如果证明者数量少得多,我们可以将其减少到两个 sub-slots,并拥有 8 秒的 slot 时间。另一个实际上更重要的因素是节点的「质量」。如果我们还可以依靠专业化的节点子集来达成近似协议(并且仍然使用完整的验证器集来实现最终性),我们可以合理地将其缩短到约 2 秒。
因此,我认为 (i) 时隙和纪元架构显然是正确的,但 (ii) 并非所有时隙和纪元架构都是一样的,我们需要更充分地探索设计空间。特别是,那些不像 Gasper 那样紧密交织的方案值得探索。
我认为,目前 L2 可以采取三种合理的策略:
对于某些应用程序(例如 ENS、keystores 以及一些支付场景),12 秒的区块时间就足够了。对于需要更短确认时间的应用程序,唯一的解决方案是时隙和纪元架构。在这三种情况下,「纪元」都是以太坊的 SSF(也许我们可以将该首字母缩略词重新定义为「单个时隙」以外的其他含义,例如,它可以是「Secure Speedy Finality」)。但在上述三种情况下,「时隙」是不同的:
一个关键问题是,我们能把第 (1) 类中的某样东西做得有多好?特别是,如果它变得非常好,那么第 (3) 类似乎就意义不大了。第 (2) 类将永远存在,因为任何「Based」的东西都不适用于链下数据 L2,例如 Plasma 和 Validium。但如果以太坊原生的时隙和纪元架构可以缩短到 1 秒的「时隙」(即预确认)时间,那么第 (3) 类的空间就会变得小得多。
今天,我们距离得到这些问题的最终答案还很遥远。区块提议者将变得多么复杂?这个关键问题的答案仍然存在相当多不确定性。像 Orbit SSF 这样的设计非常新颖,因此类似 Orbit SSF 的时隙和纪元方案的设计空间还需要更多的探索。我们拥有的选择越多,我们就能为 L1 和 L2 上的用户做得更好,我们也能简化 L2 开发人员的工作。