此前我发过一篇文章比较 Arbitrum Rollup 和其他 rollup 处理计划。可是没有细说 Arbitrum Rollup 的作业原理,所以本文将具体介绍 Arbitrum。

Arbitrum Rollup 是一个由以太坊链上合约办理的链下协议。一个 dApp 开发者用 Solidity 写了一组合约,将这些合约编写进 Arbitrum 虚拟机 (Virtual Machine, VM) 中,然后就能够在 Arbitrum Rollup 中运转合约了。这样运转速度能够快些。

Rollup的根底原理

让咱们从根底说起。虚拟机的状况以默克尔树的方式组织,因而就能够核算出该虚拟机状况的加密哈希。在协议的任意时间点,都有一些虚拟机状况被完全供认和敲定。这些虚拟机状况的哈希是储存在链上的。

协议参加者能够提出一个“争议断语” (Disputable Assertion, DA)。该断语声称,虚拟机从某些状况哈希开端,依据一些技术前提能够执行特定数量的核算进程,然后生成新的状况哈希。并在核算期间完成特定的付出以及生成特定的日志工作。该“争议断语”或许有用,或许无效。提出“争议断语”的一方需求依据断语的有用性质押一笔保证金。(更多关于质押及其运作原理将在下文介绍)

Arbitrum Rollup的工作原理

图:一个争议断语在协议中产生了一个决议计划点

如上图左侧所示,一个争议断语产生了一个协议终究必须处理的逻辑决议计划点。假如该断语有用,体系会进入一个新状况 (右上角),依据特定的断语产生新的状况哈希和其他诸如付出和日志的顺便作用。否则就会进入另一个分支 (右下角),该断语就会被回绝,状况坚持不变。

旧版 Arbitrum 协议

最开端的 Arbitrum 协议每次处理一个“争议断语”。当某方提出一个断语时,应战期便开端,在此期间任何人都能够对该断语建议应战。假如没人建议应战,该断语就会被供认;否则争议协议就会运转以取消争议断语 (以防提议者和应战者勾结起来编造争议成果)。

这个规划很简单,但有两个缺点。首要,由于每次仅处理一个争议断语,导致虚拟机的处理速率有限。因而,每个应战期期间,处理进程基本上阻滞下来。第二,作恶者能够通过对某虚拟机一切的争议断语建议应战来冻住该虚拟机。进犯者会为此付出必定的代价 (质押金),可是假如他们不介意这些丢失,至少在一些场景下他们能够造成体系的处理进程延误很长一段时间。

改善版别

新版 Arbitrum Rollup 协议处理了上面两个问题。将多个争议断语按流水线式排布,这样规划下,虚拟机处理速度就能够和验证节点模仿虚拟机运算的速度相同快了。第二,正如下图所示,作恶者无法推迟进程,他们只能暂时延误对成果的链上供认,而关于诚笃节点来说,这些成果现已是“无需信赖地被敲定了”。

其作业原理是什么?我需求更进一步地介绍这个新的协议....

每个状况最多有一个争议断语跟在其后。假如某个状况后没有争议断语,那么任何人都能够在其后创立一个争议断语,作为一个新的分支点。然后产生一颗多种或许的未来之树。

图:一颗多种或许的未来之树

质押

Arbitrum 的另一个重要部分便是质押 (staking)。任何人都能够往那颗树中的方框里质押必定金额。通过质押,用户则押注了某个方框终究将被协议供认。换句话说,该用户以为其押注的方框是当前状况的正确分支。假如用户押错注了,其押金便会遭到罚没。

质押行为不能够吊销。用户能够将押金向右移动 (在每个分支点挑选向右上/右下移动),可是不能够向左移动,由于这相当于用户吊销其此前的质押操作。

提出争议断语的一方需求押注其提出的争议断语有用。通常状况下他们都能够满意这一要求 —— 将其现存的押金往右移动并押注在要求的方框上。(极少数状况下他们无法这样操作时,他们能够将额定的资金押注在要求的方框上。可是请注意,这样做很或许会在两个相冲突的分支上质押,这会导致丢失至少一个分支上的质押金。因而做出自相对立的操作是不明智的。)

关于质押还有一个细节:假如用户押注的方框被供认且被记录在协议上了,用户能够挑选取回押金。这意味着,用户假如押对注了,便能够挑选不再移动押金,留在原处直到被体系追上,然后就能够取回其押金了。

图:更加典型的状况树 — 由一系列正确的断语组成

在这一点上大家或许会担心那颗充满各种或许的树会变得十分庞大、枝繁叶茂。这在实践中不太或许产生,由于这需求多方对不一致的成果押注。其中仅有一方是正确的,其他人则会丢失押金。那么成果最有或许是这样的:这是一颗由“有用的争议断语”所组成的链,一个接一个,一切质押者都具有同样成果的分支上。

质押期限

咱们需求体系尽或许快地对每个争议断语做出决议。所以当新的争议断语被添加上链且呈现一个分支点时,就会产生一个与该争议断语相关联的期限。这个期限满足长以至于任何人都能够在期限内判断该争议断语是否有用,然后需求在期限之前挑选是否押注。(期限过后,质押买卖仍能在链上进行,但他们不能参加决议某争议断语是否正确。) 一旦期限满了,一切参加决议争议断语的押注都将可知。

争议

假如 Alice 和 Bob 在不同的方框上进行押注,会有两种状况产生:要么其中一位向右移动到另一个人的押注上 (即他们两个的押注成果相符合);要么找不到这样的途径。假如 Alice 和 Bob 之间没有一条能够衔接他们的向右的途径,则他们必定相对立。那么在他们之间必定能够找到一个仅有的分叉点—— 这一点将他们两个分叉,各押注了相对立的分支方框。

Arbitrum Rollup的工作原理

图:Alice 和 Bob 之间存在争议

当两方之间呈现争议时,体系会在他们之间启动一个交互式的争议处理协议。可惜在本文中我没有满足的篇幅来描述该争议处理协议 —— 这是一个二分法交互协议 (bisection-type interactive protocol),类似于我之前在其他 Arbitrum 文档中的描述。

该协议带来的成果是,其中一方会被证实过错的。其押金会被罚没,且押注会从方框中移除。而这些押注的部分会给争议的另一方,剩余的会被销毁。

多个争议能够同时存在,但每个质押者每次最多只能挑选一个争议。由于过错的押注会被删除,每一次争议的呈现都会削减体系中的分歧数量。丢失押金的质押者能够挑选再次押注,可是新的押注不能再影响期限已过的争议断语。如此带来的影响是,一个争议断语的质押期限过了之后,关于怎么处理该争议断语的争议都会被消除。

成果供认

当某个争议断语的质押期限到期之后,而且一切在期限内存入的押注在该断语的同一个分支上,体系就能够供认该争议断语的成果。它会被供认或回绝,当前状况会向右移动到正确的方框上。假如该断语被正式有用,其顺便作用 (如付出) 也会被记录上链。虚拟机状况便是这样向前移动的。

一般状况下,为了不丢失自己的押金,参加者都将诚笃押注。只需有用的争议断语会被提出,没人将在争议断语的无效分支上押注,然后形成一条单一的链。在这种状况下,每个争议断语都能在质押期限过后当即被供认。

为何说其无需信赖

Arbitrum Rollup 的一个重要性质便是无需信赖 —— 单个诚笃参加者就能够保证虚拟机状况正确推动。为什么?假设 Alice 总是对每个争议断语的正确分支进行押注,而且当树不再产生分支了,她就提议一个争议断语。

由于 Alice 在正确的分支上押注,所以每一次争议她都是成功方。假如任何人与 Alice 相对立,他们将 (a) 在一个不相关的争议中丢失他们的质押金,(b) 终究进入 Alice 所在的争议中,其押金将输给 Alice。不管哪个方式,任何对立 Alice 的一方终究都会被罚没。只需与 Alice 相符合的押注才会成功到最后,所以 Alice 所在的分支会成为仅有一个及时收到押注的途径 —— 该途径会被供认。

Arbitrum Rollup的工作原理

图:只需 Alice 是诚笃的,不管其他人怎么做,绿色方框终究都会被供认

由于在这种方式上体系是无需信赖的,假如 Alice 在一个方框上押注而且她知道该方框的途径是正确的,那么她能够供认其所在的方框大将终究被供认。关于 Alice 来说,该途径就像被敲定了相同。

即使用户没有在某条途径上押注,可是假如用户看到其他一些用户押注该途径,而且相信该途径上至少一个人是诚笃的,那么其就能够供认该途径将终究被供认 —— 对该用户来说,这条途径就像被敲定了相同。

终究确定性无需信赖的好处

成果终究确定性的无需信赖为什么如此重要?那篇关于其他 rollup 协议的评论中举出了一个经典的例子。假设一个虚拟机计划向 Alice 付出一笔买卖。该付出工作坐落正确的途径上,但这笔买卖还需等待一段时间,直到这笔交付买卖所在的方框在链上被供认。

终究确定性无需信赖让 Alice 能够即时收到汇款。假如 Bob 手上有闲钱,他能够当即给 Alice 钱,作为交换,Alice 把未来即将被供认的付出款项转给 Bob (额定给 Bob 一点手续费)。Bob 只需确定该付出买卖必定会产生才会愿意这么做。Bob 能够通过押注诚笃成果来保证这一点 —— 那么他就能够对这笔付出必定会产生抱有无需信赖的信心。不只 Bob 能够这样做,任何人都能够以这种方式把钱借给 Alice 或其他像她那样的人。这些人还能够通过提供更少的手续费以竞赛。

关键是,这种市场机制的可行性取决于无需信赖的终究确定性。假如“每个人”都现已知道该工作将终究被供认,那么链上供认的推迟就不会带来不便。

不只付出这个事例,关于虚拟机所做的其他工作也是如此。假如虚拟机计划生成一个日志项来播送产生了的工作,无需信赖的终究确定性意味着任何人都能够坚信该日志将被链上供认。

推迟进犯

由于体系是无需信赖的,作恶者无法强行生成一个过错的成果。他们能够做的只需推迟体系处理进程。但这样会献身他们的押金,假如质押数额很大的话成本将会十分高。

幻想一下假如有人想要建议推迟进犯,且愿意献身他们的押金。他们能够带来最大的损坏是什么?

首要,作恶者不能阻止诚笃验证者持续在树上构建他们的诚笃分支。他们也不能阻碍诚笃验证者相信诚笃分支的终究供认具有无需信赖性。

进犯者能够做的只需在过错分支上质押,以推迟对诚笃途径的链上供认。他们的每笔押注都会给诚笃质押者发明多一个争议,在这个进程中诚笃验证者都会分走一大半进犯者的押金。当进犯者的押金都被分走时,链上作业便持续进行。

那假如进犯者在多个过错成果上质押呢?那么,那些押金就会在一次次的争议里被分走。假如有多人在诚笃成果上质押,他们能够进入有进犯者的争议里,与进犯者并行作业,然后把质押者的押金分走。而当人们留意到这一点,大家都知道在产生什么事了,就会有很多人加入到在正确成果上做质押,这样他们就能分走制作争议的进犯者的押金。假如有 K 个人在诚笃成果上做质押,进犯者就要花费 K 份押金来一次争议期的推迟。假如进犯者花费更多的押金,这或许会吸引更多的诚笃质押者。对进犯者来说状况只会越来越坏。

优化

有很多优化计划能够施行,以削减运转协议必需的链上记账数据量、削减链上 gas 消耗、以及让推迟进犯所带来的分食狂欢更容易产生。笔者在这里就不对优化具体展开了,这篇文章现已够长了。

视野开拓

则包含了捕获想象力的具体模型-《经济思想史》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注