来源:Offchain Labs 作者:Ed Felten 此前我发过一篇文章比较 Arbitrum Rollup 和其他 rollup 解决方案。但是没有细说 Arbitrum Rollup 的工作原理,所以本文将详细介绍 Arbitrum。 Arbitrum Rollup 是一个由以太坊链上合约管理的链下协议。一个 dApp 开发者用 Solidity 写了一组合约,将这些合约编写进 Arbitrum 虚拟机 (Virtual Machine, VM) 中,然后就可以在 Arbitrum Rollup 中运行合约了。这样运行速度能够快些。 Rollup的基础原理 让我们从基础说起。虚拟机的状态以默克尔树的形式组织,因此就可以计算出该虚拟机状态的加密哈希。在协议的任意时间点,都有一些虚拟机状态被完全确认和敲定。这些虚拟机状态的哈希是储存在链上的。 协议参与者可以提出一个“争议断言” (Disputable Assertion, DA)。该断言声称,虚拟机从某些状态哈希开始,基于一些技术前提可以执行特定数量的计算步骤,从而生成新的状态哈希。并在计算期间完成特定的支付以及生成特定的日志事件。该“争议断言”可能有效,可能无效。提出“争议断言”的一方需要基于断言的有效性质押一笔保证金。(更多关于质押及其运作原理将在下文介绍) 图:一个争议断言在协议中产生了一个决策点 如上图左侧所示,一个争议断言产生了一个协议最终必须解决的逻辑决策点。如果该断言有效,系统会进入一个新状态 (右上角),根据特定的断言产生新的状态哈希和其他诸如支付和日志的附带效果。否则就会进入另一个分支 (右下角),该断言就会被拒绝,状态保持不变。 旧版 Arbitrum 协议 最开始的 Arbitrum 协议每次处理一个“争议断言”。当某方提出一个断言时,挑战期便开始,在此期间任何人都可以对该断言发起挑战。如果没人发起挑战,该断言就会被确认;否则争议协议就会运行以取消争议断言 (以防提议者和挑战者串通起来炮制争议结果)。 这个设计很简单,但有两个缺点。首先,由于每次仅处理一个争议断言,导致虚拟机的处理速率有限。因此,每个挑战期期间,处理进程基本上停滞下来。第二,作恶者可以通过对某虚拟机所有的争议断言发起挑战来冻结该虚拟机。攻击者会为此付出一定的代价 (质押金),但是如果他们不介意这些损失,至少在一些场景下他们可以造成系统的处理进程延误很长一段时间。 改进版本 新版 Arbitrum Rollup 协议解决了上面两个问题。将多个争议断言按流水线式排布,这样设计下,虚拟机处理速度就可以和验证节点模拟虚拟机运算的速度一样快了。第二,正如下图所示,作恶者无法延缓进程,他们只能暂时延误对结果的链上确认,而对于诚实节点来说,这些结果已经是“无需信任地被敲定了”。 (责任编辑:admin) |