LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > (几乎)您需要了解的有Optimistic Rollup的所有信息

(几乎)您需要了解的有Optimistic Rollup的所有信息

2021-02-23 灰狼 来源:区块链网络

(几乎)您需要了解的有Optimistic Rollup的所有信息


说明:本文是上次咕噜微文建议的翻译的,时间过去好几天了,不清楚是否有其他人翻译过了,灰狼看蓝狐笔记、律动BLOCK等人都未曾发表过,因此翻译出来给大家共享。灰狼翻译并阅读后对于OR的基本原理是基本上了解了,但是其实还有比较多的疑虑,包括关于L2层自身的性能、关于安全性等(正常交互的层次越多,数据一致性、效率、集成复杂度等都会受到影响),需要后续增加其他阅读。


关于文中的几个词语翻译说明:

verifierverifier有些地方翻译成验证者或者验证程序等,但是在灰狼的相关文章翻译中均翻译为验证器。

transaction该词可以翻译成事务或者交易,一般在数据库的操作中均翻译为事务,包括事务的开始、执行一系列的操作(包括交易)、事务的提交、异常回滚等,一个事务中可以包含N笔交易。但是在transaction fee上灰狼习惯翻译成交易手续费。实际上在很多文章的翻译中,灰狼对于Transaction翻译成事务和交易都有,有些是出于读起来更通顺的目的。

fidelity bond此词有忠诚保险或者忠诚债券等几种方式,bond在很多应用场景中翻译成债券,比如在稳定币中,但是在此处的应用场景,灰狼觉得作为保险更加合适。

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:\"\"; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:\"Times New Roman\",\"serif\"; mso-font-kerning:1.0pt;}

sequencer这个词灰狼没有想到更合适的翻译,结合上下文,sequencer有点像我们在进行异步集成的时候进行的定时分发程序,因此灰狼将其翻译成定时器,与验证器的翻译相对应。


以太坊生态系统的最大挑战之一是在严格的资源约束(例如CPU、带宽、内存、磁盘空间)下具有低延迟和高吞吐量。

系统的去中心化取决于网络中最弱节点验证系统规则的能力。可以在低资源硬件上运行的高性能协议称为“可扩展”。

在本文中,我们将深入探讨现代“第2层解决方案”的原理,其相应的安全模型以及它们如何解决以太坊的可扩展性问题。

本篇博文的目标读者是那些对加密货币感兴趣的人,他们有兴趣了解更多有关先进的以太坊扩展技术,以及开发如何构建和架构此类系统的动机。

在整个帖子中,重要的关键字或概念都以粗体突出显示,因为它们是您在加密货币旅程中会遇到的单词/专业术语。这个话题很复杂。如果您感到困惑,请继续阅读,最终都会有变得有意义。

区块链资源需求

三个因素影响在去中心化网络中运行节点的资源需求,例如比特币和以太坊[1]:

?带宽:下载和广播任何与区块链相关的数据的成本

?计算:在脚本或智能合约中运行计算的成本

?存储:存储交易数据以建立索引的成本,以及存储“状态”以继续处理新的交易块的成本[2]。

性能通过两种方式衡量:

?吞吐量:系统每秒可以处理的事务数。

?延迟:处理事务所需的时间。

像比特币和以太坊等新兴加密货币网络的理想特性是去中心化。但是,是什么使网络去中心化?

?低信任度:这一属性允许任何个人验证比特币的数量永远不会超过2100万,或者他们的比特币不是伪造的。运行节点软件的个人独立计算最新状态,并验证过程中是否遵循了所有规则

?低成本:如果节点软件的操作成本很高,则个人将依赖可信的第三方来验证状态。高成本意味着高信任度要求,这是我们首先要避免的。

另一个需要的特性是可扩展性:能够将吞吐量和延迟超线性地扩展到运行系统的成本。这个定义很好,但没有包含“信任”。因此,我们定义“去中心化可扩展性”:在不显著增加系统信任假设的情况下实现可扩展性。

放大来看,以太坊的运行时环境是以太坊虚拟机(EVM)。通过EVM运行的事务以不同的成本执行各种操作(例如,存储操作的成本高于添加操作的成本)。 事务中的计算单位称为“gas”,系统参数化为每个区块最多处理1250万gas,其中平均每12.5秒产生一个事务区块。因此,以太坊的延迟为12.5秒,吞吐量为每秒100万gas。

您可能会问的一个问题是:每秒100万gas能给您带来什么?

?每秒约47个“简单转账”事务。这些事务花费21000gas,是最简单的事务类型,将ETH从A转移到B。

?每秒约16 ERC20代币传输。这些操作比ETH传输涉及更多的存储操作,因此每个操作要花费约6万gas。

?每秒约10个Uniswap资产交易。代币交易的平均成本约为10.2万gas。

?…选择您喜欢的交易的gas成本,并除以1m(12.5m/12.5/gas)

请注意,随着事务执行复杂度的增加,系统的吞吐量如何降低到非常低的值。有改进的空间!

解决方案1:使用中介

我们可以使用可信的第三方来促进我们的所有事务。这样,我们将获得很高的吞吐量,并且可能会有不到一秒的延迟,这太棒了! 这不会更改任何系统范围的参数,但是我们将选择由第三方单方面设置的信任模型。他们可能选择审查我们,甚至没收我们的资产,这是不期望的。

解决方案2:使块更大,频率更高

我们可以通过减少2个区块之间的时间来减少等待时间,并且可以通过增加区块gas限制来提高吞吐量。此更改将使操作节点的成本更高,从而阻止个人运行节点(例如,发生在EOS、Solana、Ripple等情况下)。

在解决方案1中,信任度增加。在解决方案2中,成本增加。这就消除了它们作为可扩展性的选择。

从第一原则重新发现Optimistic Rollup

在以下部分中,我们假定读者熟悉哈希和merkle

到目前为止,我们已经学习了很多东西,让我们模拟一个通俗易懂的对话,以期发现一种协议,该协议可以增加以太坊的有效吞吐量,而不会增加用户和节点运营商的负担。

问:因此……我们想扩展以太坊,而又不改变信任和成本假设。我们该如何处理?

答:我们希望降低现有操作对系统成本的要求(请参阅上文的三种资源类型)。 为了理解为什么这样做不容易,我们需要首先了解以太坊的架构:

以太坊中的每个节点当前都存储并执行用户提交给它的每个事务。在执行期间,事务会通过EVM运行,并且与EVM的状态(例如存储、余额等)进行交互-这非常昂贵。常见的智能合约优化技术的重点是最大程度地减少与状态的交互次数,但是它们仅提供了较小的常数因子改进。

问:您是说有一种可以不影响状态的事务方式,从而降低资源成本吗?

答:在极限情况下,我们可以将所有执行移到链下,并在链上保留一些数据吗? _我们可以通过引入第三方,称为定时器(sequencer来做到这一点。他们负责在本地存储和执行用户提交的事务。为了保持系统的生命力,期望定时器定期提交其接收到的事务的merkle根,并在以太坊上生成最终的状态根。这是朝正确方向迈出的一步,因为我们仅在以太坊状态上存储进行链上(下)事务的链上(1)数据。

问:那么,通过让定时器在链下计算所有内容并仅发布merkle根,我们就可以实现扩展?

答:是的。

问:好的,那么一旦你进入,定时器就可以保证你的传输便宜。存币和提币的工作原理?

答:用户将通过在以太坊上存币进入系统,然后定时器会将相应的金额记入用户账户。用户将通过执行“我想提取3 ETH,我的账户当前有> 3 ETH,就是证明”的交易来提取以太坊。即使L1没有实际的用户状态,用户也可以通过显示引用定时器发布的状态根的merkle证明来证明自己在当前状态下有足够的资金。

问:我们确定用户需要merkle证明才能提取资金。用户如何获取数据来构建merkle证明?

答:他们可以要求定时器为其提供数据!

问:但是,如果定时器暂时或永久不可用怎么办?

答:由于技术问题,定时器可能是恶意的,也可能只是处于脱机状态,这可能会导致性能下降(或更严重的是盗窃!)。因此,我们还必须要求定时器在链上提交完整的事务数据,仅存储但不执行。这里的目的是获得数据可用性。假设所有数据都永久存储在以太坊上,即使定时器消失了,新的定时器也可以从以太坊中检索所有与L2相关的数据,重建最新的L2状态,并从其前任中断的地方继续。

问:因此,如果定时器在线但拒绝向我提供merkle证明数据,我可以从以太坊下载吗?

答:是的,您可以自己同步一个以太坊节点,也可以连接到许多托管节点服务之一

问:所以我还是不明白……您如何不执行就将它们存储在以太坊上? 不是每笔交易都通过EVM吗?

答:假设你提交了10条将ETH从A转移到B的事务。执行每笔事务将执行以下操作:增加A的nonce,减少A的余额,并增加B的余额。这是从世界状态的大量读写。 相反,你可以将所有事务的编码发送到智能合约的publish(bytes _transactions)public {}函数。 请注意,函数的主体为空!这意味着不会解释、执行已发布的事务数据,也不会在任何地方进行状态访问;它只是存储在区块链的历史日志中(写入成本很低)。

问:我们可以相信定时器吗?如果他们发布了无效的状态转换怎么办?

答:每当定时器发布一批状态转换时,都会有一个“争议期”,在此期间任何一方都可以发布“欺诈证明”,这表明状态转换中的一个无效。通过重播导致链上状态转换的事务,并将结果状态根与定时器发布的状态根进行比较,可以证明这一点。如果状态根不匹配,则欺诈证明成功,并且状态转换被取消。如果在无效状态之后还有更多状态转换,它们也将被取消。超过争议期限的事务将不再受到争议,并被视为最终裁决。

问:等一下!您之前说过,如果a)增加了成本,或b)引入了新的信任假设,它就不会扩展。在您在此描述的方案中,我们不是另外假设总有人在举报欺诈吗?

答:正确。我们假设存在称为“验证器”的实体,负责监视欺诈行为,如果第1层和第2层状态不匹配,则它们会发布欺诈证明。我们还假设验证器能够在争议期限可靠地获得以太坊中包含的欺诈证据。我们认为验证器的存在是“弱”的假设。想象一下,如果一个有成千上万个用户的应用,则只需要一个人即可运行验证器。这不会听起来不太现实!另一方面,更改以太坊的信任模型或增加操作以太坊节点的成本是我们不想做的“强大”假设更改。当我们定义去中心化的可扩展性时,这就是“有意义地改变底层系统的假设”的意思。

问:我同意有人来运行验证器,因为许多参与者对这种新解决方案的成功拥有既得利益。但是可以肯定的是,这还取决于实际花费的成本。那么运行验证器和定时器的资源需求是什么?

答:定时器和验证器必须运行以太坊全节点(而不是存档节点),全L2节点才能产生L2状态。验证器运行负责创建欺诈证据的软件,定时器运行的软件负责捆绑用户事务并发布它们。

问:就这些吗?

A:是的! 恭喜你! 您已经重新发现了Optimistic Rollup [3],这是2019-2021年最令人期待的扩展解决方案。这是有充分的理由的,因为这是你在以太坊社区中进行了多年的长期研究过程的最终产物,你在简短的对话中就经历了这一过程。

Optimistic Rollup的激励措施

第2层扩展基于以下事实:我们试图最小化已执行的链上事务的数量。我们使用欺诈证明来取消可能发生的任何无效状态转换。由于欺诈证明是链上事务,因此我们也希望尽量减少在以太坊上发布的欺诈证明的数量。在理想的情况下,欺诈永远不会发生,因此欺诈证据也不会发布。

我们通过引入忠诚保险(fidelity bond)来消除欺诈行为。为了使用户成为定时器,他们必须首先在以太坊上发布保证金,如果证明欺诈,它们将被没收。为了激励个人寻找欺诈行为,将定时器的保证金大幅削减并分发给验证器。

忠诚保险和争议期限

设计欺诈证明动机时,有两个参数需要调整:

?忠诚保险大小:定时器必须发布的数量,该数量将被分发给验证者。这越大,成为验证者的动机就越大,而使欺诈者成为定序者的动机就越小。

?争议期持续时间:可以发布欺诈证明的时间窗口,在此之后,L2交易在L1上被认为是安全的。漫长的争议期为抵御审查攻击提供了更好的安全保证。较短的争议期为用户从L2提币到L1的创建了良好的用户体验,因为他们无需等待很长时间即可重新使用L1上的资金。

在我们看来,这两个参数都没有确切的静态值。也许10个ETH保险和1天的争议期就足够了。也许1 ETH和7天就足够了。真正的答案是,这取决于成为验证器的动机(取决于运行验证器的成本)以及发布欺诈证明的难易程度(取决于L1拥塞)。这两个都应该是手动或自动可调的。值得一提的是,EIP1559在以太坊中引入了新的BASEFEE操作码,可用于估计链上拥塞,并由此以编程方式调整争议期的持续时间。

正确实现这种惩罚机制很重要,否则可以在实践中加以利用。这是一个无法正常执行的示例:

1.爱丽丝提交1 ETH保险,从而允许她成为系统中的定时器

2.爱丽丝发布欺诈状态更新

3.鲍勃注意到这一点并发布了争议。如果成功,则应将爱丽丝保险中的1 ETH授予鲍勃,并取消欺诈性状态更新

4.爱丽丝注意到争议并发布了争议(争辩自己!)

5.爱丽丝收到她的1 ETH,即使她试图进行欺诈也没有缴纳任何罚款。

爱丽丝可以通过“抢先”来可靠地发动攻击,即广播与鲍勃相同的事务,但GAS价格更高,从而导致爱丽丝的事务在鲍勃之前执行。这意味着爱丽丝可以一直尝试以最小的成本(以太坊交易费用)作弊。

解决方法很简单:与其将全部保证金授予争议者,不如将其X%销毁。在上面的示例中,如果我们销毁50%,则爱丽丝会取回0.5ETH,这足以抑制不尝试在步骤2中作弊的行为。当然,这种保险销毁减少了运行验证器的动机(因为支出变小了),因此对验证器来说,保险提交销毁应该足够大。

常见的Optimistic Rollup批评和我们的回应

既然我们已经完成了Optimistic Rollup的构建块,那么让我们探索并解决针对该机制的最常见的批评。

较长的提币/争议期限对于采用和组合具有致命性

我们在上面提到,长的争议期对于安全性非常重要。这里似乎有一个固有的折衷方案:较长的争议期不利于OR的采用,因为任何想要从OR提取资金的用户都需要等待7天,直到他们的资金被提取。较小的争议期对于确保流畅的用户体验非常有用,但是您冒着发生欺诈且没有及时解决争议的风险。

我们认为这不是问题。由于提币的延迟可能很大,我们预计做市商会介入并提供更快的提现服务。这是可能的,因为验证L2状态的人可以正确地判断提币是否是欺诈性的,从而以小折扣购买他们的服务。例子:

角色:

?爱丽丝:在L2上有5 ETH。

?鲍勃:在“做市商”智能合约中的L1上具有4.95 ETH,并且正在L2上运行验证器

步骤:

1.爱丽丝让鲍勃知道她要“快速”提款,给他0.05 ETH的手续费

2.爱丽丝向鲍勃的“做市商”智能合约发起取回命令

3.可能会发生2件事情:

1.鲍勃检查他的L2验证器上的提款是否有效,并批准快速提款。这会立即将4.95 ETH转移到爱丽丝的L1地址。提款期结束后,鲍勃将能够索取5 ETH,从而获得可观的利润。

2.鲍勃的验证器警告他该交易无效。鲍勃对该交易引起的状态转换提出异议,取消了交易,并赢得了允许恶意交易发生的时序器保证金。

此功能最重要的含义是,它可以与L1合约实现组合,而不必等待整个争议期。

请注意,此技术首次在“简单快速取款”中进行了介绍。

矿工可能被贿赂以审查提币,破坏OR的安全性

在“Optimistic Rollup的近零成本攻击场景”中,认为矿工的激励对于定时器与以太坊矿工合谋审查任何争议交易都是微不足道的。考虑到对安全性的依赖,这对任何optimistic系统来说都是致命的。

我们不同意此文的论点。我们假设诚实的一方总是愿意贿赂矿工,与恶意的一方一样多甚至更多。此外,矿工每次通过帮助恶意一方获胜而背离“诚实”行为,都会产生额外的成本。这种行为会损害以太坊的价值,这可能会增加矿工参与以太坊的额外成本。

实际上,学术文献中已经研究过这种情况,证明“这种反击的威胁导致了子博弈的完美平衡,在这个子博弈中,首先没有攻击发生”。

我们要感谢Hasu让我们注意到这篇论文的证据。

验证器困境会阻碍运行验证器,破坏OR的安全性

Ed Felten为验证器困境撰写了出色的分析解决方法,我们将其总结如下:

1.如果系统的激励措施按预期工作,则没有人会作弊

2.如果没有人作弊,那么运行验证器是没有意义的,因为您不会从中赚钱

3.由于没有人运行验证器,因此定时器最终有机会作弊

4.定时器作弊,系统不再按预期运行听起来这很重要,而且几乎是自相矛盾的! 假设奖励的大小是固定的,那么更多验证器会减少单个验证器的预期支出。此外,由于欺诈行为的发生率越来越低,更多的验证器似乎减少了蛋糕的大小,从而进一步加剧了这一问题。在后续分析中,Felten还提供了一种解决验证器困境的方法。

我想站在相反的立场说,验证器困境并不像批评家所说的那么重要。在实践中,有成为验证者的非金钱动机。例如,如果你是一个基于rollup的大型应用,或者您是代币持有者,则如果系统发生故障,您的应用将无法再使用或代币价值将减少。除此之外,对快速提币的需求为做市商验证器的存在创造了动力(如上一节所述),而与欺诈行为无关。为了更具体地说明这一点,比特币没有提供存储整个区块链历史记录或向同行提供本地数据的激励,但是人们还是会无私地这样做。

即使在真空中运行验证器与激励措施不兼容,也可以确保系统安全,这对于投资于系统成功的实体来说,最重要的是。因此,我们认为没有必要设计机制来解决Optimistic第二层系统中验证器困境。

结论

与该帖子的标题一致,我们分析了对2021年以太坊至关重要的技术之一:Optimistic Rollup.。

总结其好处:OR是对以太坊的扩展,继承了以太坊的安全性、可组合性和开发人员的护城河,同时提高了性能,并没有对以太坊用户的成本或信任要求产生实质性影响。我们探索使Optimistic Rollup起作用的激励结构,并提供对常见批评的回应。

我们想强调的是,最大或性能是由您可以发布在L1上的数据决定的。因此,其优点在于:1)尽可能压缩发布的数据(例如通过BLS签名聚合),2)具有庞大而廉价的数据层(例如ETH2

作为补充阅读,我们建议布特林撰写的Rollup的不完整指南信任模型。我们还建议调查由我们StarkWare的朋友建造的OR的近亲ZK Rollup。最后,还有其他方法可以实现去中心化的可扩展性,即分片状态通道各有其自身的优势和劣势。

在后续文章中,我们将发布对发明第一个EVM兼容optimistic rollup的公司的深入机制和代码库分析:Optimism

我们要感谢Hasu、Patrick McCorry、Liam Horne、Ben Jones、Kobi Gurkan和Dave White在撰写本文时提供了宝贵的反馈意见。

与我们交流

问题? 想法? @gakonst

注释

[1]:我们还推荐读者参考布特林的出色论文:“区块链资源定价”。

[2]:值得注意的是,存储“状态”(账户余额、合约字节码、随机数)比存储原始交易数据的成本更高

[3]:背景:Optimistic rollup是“Optimistic合约”和“链上数据可用性”(也称为“rolling up数据”)的组合。

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:\"\"; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:\"Times New Roman\",\"serif\"; mso-font-kerning:1.0pt;}

原文链接:https://research.paradigm.xyz/rollups

—-

编译者/作者:灰狼

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...