转发原文标题《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
一个良好的区块链用户体验的重要特性之一是快速的交易确认时间。如今,以太坊在过去五年中已经有了很大改善。由于EIP-1559的实施和合并后稳定的区块时间,用户在L1上发送的交易可以可靠地在5-20秒内确认。这大致与使用信用卡支付的体验相竞争。然而,进一步改善用户体验是有价值的,有些应用甚至要求毫秒级或更短的延迟。本文将探讨一些以太坊目前可行的实际选项。
今天,以太坊的Gasper共识采用插槽和纪元架构。每12秒一个插槽,部分验证者会在链的头部发布投票,在32个插槽(6.4分钟)内,所有验证者都有一次投票机会。这些投票被重新解释为类似于PBFT共识算法的消息,经过两个纪元(12.8分钟)后,提供一种非常强的经济保证,称为终结性。
在过去的几年里,我们对当前的方法越来越不满意。主要原因是:(一)它复杂且插槽投票机制与纪元终结机制之间存在许多交互错误;(二)12.8分钟时间太长,没有人愿意等那么久。
单插槽终结性取代了这种架构,采用类似于Tendermint共识的机制,其中区块N在区块N+1生成之前被终结。与Tendermint的主要区别在于我们保留了“非活跃泄漏”机制,这使得链在超过1/3的验证者离线时仍能继续运行并恢复。
单插槽终结性设计的主要提议示意图
单插槽终结性的主要挑战在于,按照直觉,每个以太坊质押者似乎需要每12秒发布两条消息,这对链的负载来说是很大的压力。为了缓解这一问题,有一些巧妙的想法,包括最近提出的Orbit SSF提案。但即便如此,虽然通过加快“终结性”提高了用户体验,但用户仍然需要等待5-20秒。
在过去的几年里,以太坊一直遵循以rollup为中心的路线图,设计以太坊基础层(即“L1”)以支持数据可用性和其他功能,这些功能可以被第2层协议(如rollup,以及validiums和plasmas)使用,提供与以太坊相同级别的安全性,但具有更高的扩展性。
这在以太坊生态系统内创建了职责分离:以太坊L1可以专注于抗审查、可靠、稳定,并维持和改进一定的基础核心功能,而L2可以通过不同的文化和技术权衡,更直接地与用户互动。但如果走这条路,不可避免地会出现一个问题:L2希望为那些希望更快确认的用户服务,而不是等待5-20秒。
到目前为止,至少在理论上,L2有责任创建自己的“去中心化排序”网络。一小组验证者会每隔几百毫秒签署区块,并在这些区块背后投入他们的“质押”。最终,这些L2区块的头信息会发布到L1。
L2验证者组可能会作弊:他们可能先签署区块B1,然后再签署一个冲突的区块B2并在B1之前将其提交到链上。但如果他们这样做,他们会被发现并失去他们的质押。实际上,我们已经看到了一些集中化的版本,但rollup在开发去中心化排序网络方面进展缓慢。可以认为,要求所有L2进行去中心化排序是不公平的:我们基本上是在要求rollup做与创建一个全新的L1几乎相同的工作。出于这个原因以及其他原因,Justin Drake一直在提倡一种方法,给所有L2(以及L1)访问一个共享的以太坊范围内的预确认机制:基于预确认。
基于预确认的方法假设以太坊提案者会因为MEV相关的原因而变得高度复杂(有关MEV的解释请参见此处,也请参见执行票据提案)。基于预确认的方法利用了这种复杂性,通过激励这些复杂的提案者接受提供预确认服务的责任。
基本思路是创建一个标准化协议,用户可以通过支付额外费用来换取立即保证其交易将被包含在下一个区块中,并可能附带执行该交易结果的声明。如果提案者违反了对任何用户的任何承诺,他们将会受到惩罚。
如前所述,基于预确认为L1交易提供了保证。如果rollup是“基于”的,那么所有L2区块都是L1交易,因此可以使用相同的机制为任何L2提供预确认。
假设我们实施了单插槽终结性。我们使用类似于Orbit的技术来减少每个插槽签名的验证者数量,但不会减少太多,这样我们也可以在降低32 ETH最低质押门槛的关键目标上取得进展。结果可能是插槽时间逐渐增加到16秒。然后,我们使用rollup预确认或基于预确认,为用户提供更快的保证。这样我们现在得到什么?一个纪元和插槽架构。
“他们是同一张图”的梗现在已经被用得很多了,所以我就用几年前画的一个旧示意图来描述Gasper的插槽和纪元架构,并把它和L2预确认的示意图放在一起,希望能传达出我的意思。
有一个深刻的哲学原因解释为什么纪元和插槽架构似乎很难避免:达成对某件事情的近似共识比达成最强“经济终结性”共识所需的时间本质上要短。
一个简单的原因是节点数量。尽管由于高度优化的BLS聚合以及在不久的将来使用的ZK-STARKs,旧的线性@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">去中心化/终结时间/开销权衡现在看起来较为温和,但仍然从根本上说:
在今天的以太坊中,一个12秒的插槽被划分为三个子插槽,用于(i)区块发布和分发,(ii)见证,和(iii)见证聚合。如果见证者数量较少,我们可以减少到两个子插槽,并将插槽时间缩短到8秒。另一个现实中更大的因素是节点的“质量”。如果我们能够依赖专业化的节点子集进行近似共识(并仍然使用完整的验证者集合进行终结性确认),我们可能可以将插槽时间缩短到约2秒左右。
因此,我觉得(i) 插槽和纪元架构显然是正确的,但同时也(ii) 并非所有的插槽和纪元架构都是一样的,更全面地探索设计空间是有价值的。特别是,值得探索那些不像Gasper那样紧密交织在一起的选项,而是在两种机制之间有更强的职责分离。
在我看来,目前有三种合理的L2策略可以采取:
对于某些应用程序(例如ENS、密钥存储、某些支付),12秒的区块时间已经足够。对于那些不够的应用程序,唯一的解决方案是插槽和纪元架构。在这三种情况下,“纪元”都是以太坊的单插槽终结性(也许我们可以重新解释这个首字母缩略词,不再意味着“单插槽”,例如可以是“安全快速终结性”)。但是在上述三种情况下,“插槽”是不同的:
一个关键问题是,我们能把类别(1)中的东西做得有多好?特别是,如果它变得非常好,那么类别(3)似乎就不那么重要了。类别(2)将始终存在,至少因为任何“基于”解决方案对于像plasma和validium这样的离链数据L2不起作用。但是,如果以太坊本地的插槽和纪元架构可以达到1秒的“插槽”(即预确认)时间,那么类别(3)的空间就会变得相对较小。
今天,我们对这些问题还没有最终答案。一个关键问题是,区块提议者会变得多么复杂,这仍然是一个存在很多不确定性的领域。像Orbit SSF这样的设计是非常新近的,这表明像Orbit SSF作为纪元的插槽和纪元设计空间仍然相当未被充分探索。我们拥有的选项越多,我们就能为L1和L2的用户做得越好,同时也能简化L2开发者的工作。
Partilhar
转发原文标题《Epochs and slots all the way down: ways to give Ethereum users faster transaction confirmation times》
一个良好的区块链用户体验的重要特性之一是快速的交易确认时间。如今,以太坊在过去五年中已经有了很大改善。由于EIP-1559的实施和合并后稳定的区块时间,用户在L1上发送的交易可以可靠地在5-20秒内确认。这大致与使用信用卡支付的体验相竞争。然而,进一步改善用户体验是有价值的,有些应用甚至要求毫秒级或更短的延迟。本文将探讨一些以太坊目前可行的实际选项。
今天,以太坊的Gasper共识采用插槽和纪元架构。每12秒一个插槽,部分验证者会在链的头部发布投票,在32个插槽(6.4分钟)内,所有验证者都有一次投票机会。这些投票被重新解释为类似于PBFT共识算法的消息,经过两个纪元(12.8分钟)后,提供一种非常强的经济保证,称为终结性。
在过去的几年里,我们对当前的方法越来越不满意。主要原因是:(一)它复杂且插槽投票机制与纪元终结机制之间存在许多交互错误;(二)12.8分钟时间太长,没有人愿意等那么久。
单插槽终结性取代了这种架构,采用类似于Tendermint共识的机制,其中区块N在区块N+1生成之前被终结。与Tendermint的主要区别在于我们保留了“非活跃泄漏”机制,这使得链在超过1/3的验证者离线时仍能继续运行并恢复。
单插槽终结性设计的主要提议示意图
单插槽终结性的主要挑战在于,按照直觉,每个以太坊质押者似乎需要每12秒发布两条消息,这对链的负载来说是很大的压力。为了缓解这一问题,有一些巧妙的想法,包括最近提出的Orbit SSF提案。但即便如此,虽然通过加快“终结性”提高了用户体验,但用户仍然需要等待5-20秒。
在过去的几年里,以太坊一直遵循以rollup为中心的路线图,设计以太坊基础层(即“L1”)以支持数据可用性和其他功能,这些功能可以被第2层协议(如rollup,以及validiums和plasmas)使用,提供与以太坊相同级别的安全性,但具有更高的扩展性。
这在以太坊生态系统内创建了职责分离:以太坊L1可以专注于抗审查、可靠、稳定,并维持和改进一定的基础核心功能,而L2可以通过不同的文化和技术权衡,更直接地与用户互动。但如果走这条路,不可避免地会出现一个问题:L2希望为那些希望更快确认的用户服务,而不是等待5-20秒。
到目前为止,至少在理论上,L2有责任创建自己的“去中心化排序”网络。一小组验证者会每隔几百毫秒签署区块,并在这些区块背后投入他们的“质押”。最终,这些L2区块的头信息会发布到L1。
L2验证者组可能会作弊:他们可能先签署区块B1,然后再签署一个冲突的区块B2并在B1之前将其提交到链上。但如果他们这样做,他们会被发现并失去他们的质押。实际上,我们已经看到了一些集中化的版本,但rollup在开发去中心化排序网络方面进展缓慢。可以认为,要求所有L2进行去中心化排序是不公平的:我们基本上是在要求rollup做与创建一个全新的L1几乎相同的工作。出于这个原因以及其他原因,Justin Drake一直在提倡一种方法,给所有L2(以及L1)访问一个共享的以太坊范围内的预确认机制:基于预确认。
基于预确认的方法假设以太坊提案者会因为MEV相关的原因而变得高度复杂(有关MEV的解释请参见此处,也请参见执行票据提案)。基于预确认的方法利用了这种复杂性,通过激励这些复杂的提案者接受提供预确认服务的责任。
基本思路是创建一个标准化协议,用户可以通过支付额外费用来换取立即保证其交易将被包含在下一个区块中,并可能附带执行该交易结果的声明。如果提案者违反了对任何用户的任何承诺,他们将会受到惩罚。
如前所述,基于预确认为L1交易提供了保证。如果rollup是“基于”的,那么所有L2区块都是L1交易,因此可以使用相同的机制为任何L2提供预确认。
假设我们实施了单插槽终结性。我们使用类似于Orbit的技术来减少每个插槽签名的验证者数量,但不会减少太多,这样我们也可以在降低32 ETH最低质押门槛的关键目标上取得进展。结果可能是插槽时间逐渐增加到16秒。然后,我们使用rollup预确认或基于预确认,为用户提供更快的保证。这样我们现在得到什么?一个纪元和插槽架构。
“他们是同一张图”的梗现在已经被用得很多了,所以我就用几年前画的一个旧示意图来描述Gasper的插槽和纪元架构,并把它和L2预确认的示意图放在一起,希望能传达出我的意思。
有一个深刻的哲学原因解释为什么纪元和插槽架构似乎很难避免:达成对某件事情的近似共识比达成最强“经济终结性”共识所需的时间本质上要短。
一个简单的原因是节点数量。尽管由于高度优化的BLS聚合以及在不久的将来使用的ZK-STARKs,旧的线性@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735">去中心化/终结时间/开销权衡现在看起来较为温和,但仍然从根本上说:
在今天的以太坊中,一个12秒的插槽被划分为三个子插槽,用于(i)区块发布和分发,(ii)见证,和(iii)见证聚合。如果见证者数量较少,我们可以减少到两个子插槽,并将插槽时间缩短到8秒。另一个现实中更大的因素是节点的“质量”。如果我们能够依赖专业化的节点子集进行近似共识(并仍然使用完整的验证者集合进行终结性确认),我们可能可以将插槽时间缩短到约2秒左右。
因此,我觉得(i) 插槽和纪元架构显然是正确的,但同时也(ii) 并非所有的插槽和纪元架构都是一样的,更全面地探索设计空间是有价值的。特别是,值得探索那些不像Gasper那样紧密交织在一起的选项,而是在两种机制之间有更强的职责分离。
在我看来,目前有三种合理的L2策略可以采取:
对于某些应用程序(例如ENS、密钥存储、某些支付),12秒的区块时间已经足够。对于那些不够的应用程序,唯一的解决方案是插槽和纪元架构。在这三种情况下,“纪元”都是以太坊的单插槽终结性(也许我们可以重新解释这个首字母缩略词,不再意味着“单插槽”,例如可以是“安全快速终结性”)。但是在上述三种情况下,“插槽”是不同的:
一个关键问题是,我们能把类别(1)中的东西做得有多好?特别是,如果它变得非常好,那么类别(3)似乎就不那么重要了。类别(2)将始终存在,至少因为任何“基于”解决方案对于像plasma和validium这样的离链数据L2不起作用。但是,如果以太坊本地的插槽和纪元架构可以达到1秒的“插槽”(即预确认)时间,那么类别(3)的空间就会变得相对较小。
今天,我们对这些问题还没有最终答案。一个关键问题是,区块提议者会变得多么复杂,这仍然是一个存在很多不确定性的领域。像Orbit SSF这样的设计是非常新近的,这表明像Orbit SSF作为纪元的插槽和纪元设计空间仍然相当未被充分探索。我们拥有的选项越多,我们就能为L1和L2的用户做得越好,同时也能简化L2开发者的工作。