1. 首页
  2. 区块链资讯

一文读懂Arbitrum Rollup的工作原理

最近我揭晓了一篇博文对照 Arbitrum Rollup 和相互竞争的其他 rollup 系统(中文译本)。不外,那篇文章内里没有详细先容 Arbitrum Rollup 的事情原理,以是这一篇文章的义务就是填补这个空缺。

一句话,Arbitrum Rollup 是一个由以太坊链上合约治理的链下协议。为使自己的应用能够在 Arbitrum Rollup 上运行,dApp 的开发者需要用 Solidity 编写一组合约,然后将这些合约编译成可以在 Arbitrum 虚拟机上运行的可执行代码。运行速率会更快,你我期待的就是这个。

Rollup 基础知识

先从基础知识提及。我们使用默克尔树(Merkle Tree)来组织虚拟机的状态,因而可以算出虚拟机状态的密码学哈希值。我们把这个哈希值存储在链上,因此在协议的任何一个时间点,都市有一些虚拟机的状态(通过链上共识)被完全确认和最终敲定。这些已经获得终局性的状态的哈希值,就存在链上。

协议的介入者,通过提出一个争议断言(Disputable Assertion,DA)来推进该虚拟机的状态;该断言声明,从某些状态哈希最先,基于一些手艺条件,虚拟机将会执行特定数目的盘算步骤,天生新的状态哈希,并在执行时代完成相关的支付,天生相关的日志事宜。争议断言可能是有用的(即可信的),也可能是无效的。介入者在提出争议断言时需要为保证断言的有用性而赌上一笔押金。(更多关于押注及其事情原理的内容将在后面先容。)

一文读懂Arbitrum Rollup的工作原理

– 争议断言会使协议发生一个决议点 –

如上图所示,提出一个争议断言就会发生一个协议最终必须要解决的逻辑决议点。若是争议断言是有用的,则系统将进入图中右上角的新状态,包罗由争议断言天生的新状态哈希值,以及其他附带效果(发生响应的支付和日志)。若争议断言是无效的,则进入右下角的分支,争议断言被系统拒绝,原来的状态不会发生变化。

旧的 Arbitrum 协议

最最先的 Arbitrum 协议每次只处置一个争议断言。当某些介入者提出一个争议断言后,会有一个挑战期,在此时代任何人都可以挑战这个争议断言。若是没有被挑战,则该争议断言将被系统接受;否则就会执行纠纷解决协议,打消争议断言(这是为了防止提议者和挑战者同谋炮制争议效果)。

这样做很简单,然则有两个瑕玷。首先,由于每次只处置一个争议断言,以是虚拟机的处置速率很受限。在每个挑战期内,正常的处置流程基本上都将阻滞。第二,恶意介入者通过有意挑战所有的争议断言可以彻底冻结虚拟机。攻击者需要支出一些押金作为价值,然则只要他们愿意,他们至少可以在某些特定场景下通过这种攻击长时间延误系统(而赢利)。

新的改善版本

在我这篇文章中先容的新的 Arbitrum Rollup 协议解决了上述的两个瑕玷。通过 “流水线化” 处置多个争议断言,验证节点模拟虚拟机的运算速率有多快,虚拟机的处置速率就有多快。第二,我们后面将会注释,恶意介入者无法延阻系统,他们只能暂时延误对最终效果的链上确认,但这些效果对老实节点来说早已 “无需信托地被敲定了”。

以是,到底怎么做到呢?那就要讲得再深一点了……

每个状态后面最多可以接一个争议断言。若是一个状态后面没有争议断言,那么任何人都可以天生一个争议断言接在后面,作为一个新的分叉点。效果就是发生了一棵平行未来之树。

一文读懂Arbitrum Rollup的工作原理

– 平行未来之树 –

押注

协议的另外一个主要的部门是押注。任何人都可以在树上的某个方框(状态)后面下注。对某个方框押注,意味着你在断言该方框最终将被协议确认。换句话说,你在断言从当前状态到你押注的方框所在的这条分支是准确的分支。若是你错了,可以想见你的押金将被罚没。

押注行为不能被打消。你可以将你的押注向右移动——可以在分叉点后向上或向下选择分支——但你不能向左移动押注,由于这相当于打消你之前作出的押注答应。

提出争议断言的介入者要在 “认可其断言有用” 的继任方框上押注。通常他们可以向右移动已存在的押注到知足条件的方框上。(在极少数情形下(译者注:好比他们的断言是无效的,被乐成挑战)他们不能这样做,他们可以分外再押一注到需要的方框上。然则注重,他们将在相冲突的两条路径上押注,因此最终他们会损失至少一笔押金——通常自相矛盾不是明智的移动选择)。

关于押注另有一个细节:若是你押注的方框被确认成为被接受的历史的一部门,你可以选择收回押金。这意味着,若是你是准确的,你可以住手移动你的押注,直到系统 “追上” 你,然后你就可以收回你的押金。

一文读懂Arbitrum Rollup的工作原理

– 一棵更尺度的状态树 —— 由一连串的有用断言组成 –

在这一点上,你可能会忧郁,平行未来之树会变得非常大,而且枝繁叶茂。这在现实中是不可能发生的,由于这需要多方押注不一致的效果。只要他们中有一个是老实的,其他所有人都市损失他们的押金。更有可能的是,这棵树实际上是一个由有用 DA 串成的链,一个接一个,所有的押注都在统一条分支上。 

押注限期

我们需要系统在尽可能短的时间内对每个争议断言做出决议。以是当一个争议断言被添加上链、发生一个分叉点的时刻,会有一个限期与之关联。这个限期足够长,任何人若是愿意,都有足够的时间检查这个争议断言是否有用,以及发生一笔押注买卖上链。任何要押注的人都必须在限期竣事之前完成操作(过时的押注仍然可以上链,但它们不能决议谁人争议断言的有用性)。一旦期满,所有可以决议争议断言的押注都将可知。

纠纷

若是 Alice 和 Bob 押注差别的方框,那么以下两件事宜中,必有一件为真。要么其中一个押注可以向右移动到另一个 —— 意味着他们的断言是一致的 —— 要么找不到这样的路径。若是没有一条向右移动的路径可以毗邻 Alice 和 Bob 的方框,则他们一定有分歧。他们之间一定可以找到一个唯一的分叉点 —— 一个唯一的争议断言,某小我私家押注这个断言是有用的,而另一个押注其无效。

如何用DappNode或Avado在家运行ETH2质押挖矿节点

​DAppNode是一个免费的开源软件包,该软件包可将计算机设置为运行以太坊完整节点,从而通过简单的Web界面进行全部管理,Avado是运行DAppNode的预配置硬件盒。

一文读懂Arbitrum Rollup的工作原理

– Alice 和 Bob 之间存在争议 –

当两个介入者之间泛起纠纷时,系统可以启动一个交互式纠纷解决协议。我在这里没有足够的篇幅来形貌这个纠纷解决协议 —— 我只想说,这是一个类似我们在其他 Arbitrum 文档中形貌过的二分法交互协议。

纠纷解决协议的效果是一个介入者将被发现是错误的。这个介入者的押金会被罚没。押注会从所在的方框上删除。部门押金会给到纠纷的另一方,剩下的被烧掉。

多个纠纷可以同时解决,然则每个押注者一次最多只能介入一个纠纷。由于输家的押注将被删除,每解决一个纠纷都市削减整个系统的分歧数目。损失押金的介入者可以继续押注,然则新的押注无法影响押注限期已过的争议断言。这样做的效果是,一个争议断言的押注窗口竣事后,一切有关若何处置该断言的分歧都将被消除。

效果确认

某个争议断言的押注限期到期后,若是所有实时提交(且尚未被删除)的押注,都存在于从该断言发生的统一条分支上,那么系统就可以一定该断言的效果为真。争议断言要么被接受要么被拒绝,当前状态会移动到争议断言右边准确的方框上。若是争议断言被确认有用,则其附带效果,如支付等,也会在链上生效。虚拟机的状态就是这样向前移动的。

一样平常情形下,介入者都市老实守矩,谁也不想由于押注错误而损失押金。只有有用的争议断言会被(其他介入者)断言,组成一条链,没有人会在任何争议断言的无效分支上押注。在这种情形下,所有的争议断言都市在押注限期一事后立刻被确认。

何以无需信托(Trustless)

Arbitrum Rollup 的一个主要性子就是无需信托 —— 只要有一个老实介入者就可以确保虚拟机状态准确向前推进。为什么呢,想象一下 Alice 总是在准确的分支上押注,若是没有争议断言,她就自己断言。

由于 Alice 总是在准确的分支上押注,以是她会赢下每一次纠纷。若是有任何人差别意 Alice,他们要么 (a) 与一个无关的第三方发生纠纷并损失押金,或者 (b) 最终和 Alice 发生纠纷并输给 Alice 押金。无论哪种情形,所有与 Alice 不一致的人都将失去押金。只有赞成 Alice 的押注才气存活下去,以是 Alice 在树上的路径最终会成为唯一一个有实时押注的分支 —— 而且 Alice 的路径会被确认。

一文读懂Arbitrum Rollup的工作原理

– 只要 Alice 是老实的,无论别人怎么做,绿色方框都市获得确认 –

由于按这种方式系统是无需信托的,若是 Alice 押注某个方框,她一定知道到这个方框的路径是可信的,Alice 可以确定这个方框最终一定会被确认。对于 Alice 来说,这条路径就跟被敲定了一样。

纵然你没有押注某条路径,若是你看到有好几小我私家对它押注,只要你信赖其中至少有一个老实的人,你就可以一定这条路径最终一定会被确认——对你来说,这条路径就跟被敲定了一样。 

无需信托的终局性(Finality)的利益

为什么说无需信托的终局性有价值?经典的例子来自于之前对其他 rollup 协议的讨论。假设一个虚拟秘密向 Alice 举行支付。支付事宜发生在老实的路径上,然则包罗这笔支付的方框还需要守候一些时间被链上确认。

无需信托的终局性让 Alice 可以立刻拿到钱。若是 Bob 有余钱,可以立刻付给 Alice,以交流 Alice 尚未被确定的收款(加上支付给 Bob 一点小费)。Bob 只有在他能确定 Alice 的这笔收款一定会发生,才会想和 Alice 买卖。Bob 可以通过押注老实的效果来确保这一点——这样他对这笔支付最终一定会发生抱有无需信托的信心。不仅仅是 Bob 可以这样做。任何有点钱的人,都可以用这样的方式乞贷给 Alice 或者有她这样需求的人,这些人通过提供更低的用度相互竞争,使 Alice 立刻拿到钱的成本大大降低。

关键是,这种市场机制的可行性取决于无需信托的终局性。若是 “每小我私家” 都知道这件事最终会被确认,那么链上确认的延迟就不会带来那么多的未便。

不仅对于支付,虚拟性能做的其他事情也是云云。若是虚拟秘密天生一个日志事宜纪录发生了什么事情,无需信托的终局性意味着任何人都可以一定地接纳行动,由于这个日志事宜最终一定会被链上认可。

延迟攻击

由于这个系统是无需信托的,坏人无法强行制造错误的效果。他们能做的只能是延缓系统。这样做需要他们支出押金,若是押金数额伟大,则价值高昂。

想象一下,若是有人宁愿支出押金也要发动延迟攻击,他们能造成的最坏的情形是怎样的?

首先要注重的是,坏人无法阻止好人继续修建老实的分支。而且他们也无法阻止好人获得对 “老实的分支终将被确认” 的无需信托的信心。

攻击者能做的只是在错误的分支上押注,以延迟老实路径的链上确认。他们每次的押注都市发生一起和老实介入者的纠纷,而老实的介入者会从纠纷中拿走攻击者的一大部门押金。等到攻击者的所有押金被拿走了,链上确认还会继续向前推进。

若是攻击者多笔押注错误的效果会怎样?那么这些押金会在一个接一个的纠纷中被拿走。若是有多人押注老实的效果,这些人都可以进入纠纷解决,并行拿走攻击者的押金。而且需要注重,所有人都很清晰发生了什么,许多人都想加入进来分一杯羹,押注准确的效果从攻击者手上抢夺押金。若是老实方有 K 小我私家押注,则在一次纠纷延迟期内,就要消耗攻击者 K 份押金。若是攻击者下更多的押注,那很可能会吸引更多的老实押注者。这对攻击者来说是个灾难。

优化

还可以做许多优化来降低操作协议所需的链上记账数据量,降低链上的 gas 消耗,让攻击者延迟攻击引发的喂养怒潮更容易上演。我不会再这里详述这些优化 —— 这篇文章已经足够长了。

前进的门路 

我们 Offchain 实验室正在开发这个协议。预计这个 Arbitrum Rollup 协议很快就会被推送到我们的开源代码库中。我们很愿意回覆你的任何问题。哦,顺便说一句,若是你想辅助我们一起构建这样的器械,我们正在招聘。

原创文章,作者:链大大,如若转载,请注明出处:http://www.chaindada.com/chain/25574.html