Arbitrum Rollup 是一个由以太坊链上合约管理的链下协议。DApp 开发者用 Solidity 写了一组合约,将这些合约编写进 Arbitrum 虚拟机 (VM) 中,以便在 Arbitrum Rollup 中运行合约了,这样工作速度能够快些。虚拟机的状态以默克尔树的形式组织,因此就可以计算出该虚拟机状态的加密哈希。在协议的任意时间点,有些虚拟机状态都在被完全确认和敲定,它们的状态哈希是储存在链上的。 协议参与者可以提出一个“争议断言” (Disputable Assertion, DA)。该断言声称,虚拟机从某些状态哈希开始,基于一些技术前提,虚拟机可执行特定数量的计算步骤,从而生成新的状态哈希,并在计算期间完成特定的支付,生成特定的日志事件。该“争议断言”可能有效,或可能无效。提出“争议断言”的一方需要基于断言的有效性质押一笔保证金。
图:一个争议断言在协议中产生了一个决策点旧版 Arbitrum 协议最开始的 Arbitrum 协议每次处理一个“争议断言”。当某方提出一个断言时,就会有个挑战期,在此期间,任何人都可以对该断言发起挑战。如果没人发起异议,该断言就会被确认;否则争议协议就会运行以取消争议断言。 这个设计很简单,但有两个缺点。首先,由于每次仅处理一个争议断言,导致虚拟机的处理速率有限。从本质上来讲,每个挑战期期间,处理进程基本上停滞下来。其次,作恶者可通过故意对某虚拟机所有的争议断言发起挑战来冻结该虚拟机。攻击者会为此付出一定的代价。但是如果他们愿意付出这些代价,至少在一些场景下他们能够造成系统的处理进程拖延很长一段时间。改进版本新版 Arbitrum Rollup 协议解决了上面两个问题。多个争议断言按流水线式排布,这样的话虚拟机处理速度就可以和验证节点模拟虚拟机运算的速度一样快速地运行。其次,正如下图所看到的,作恶者无法延缓进程,他们只能暂时延误对结果的链上确认,这些结果对于诚实节点来说已经是“无需信任的最终结果”。质押Arbitrum 的另一个重要部分就是质押 (staking)。任何人都可以往那颗树中的方框里质押一定金额。通过质押,用户押注了某个方框最终将被协议确认。换句话说,当用户在每个争议断言上认为其押注的方框是当前状态的正确分支。若用户押错注了,其押金便会受到罚没。 质押行为不可以撤销。用户都能够将押金向右移动 (在每个分支点选择向右上/右下移动),但是不可以向左移动,因为这相当于用户撤销其此前的质押操作的承诺。提出争议断言的一方需要押注其提出的争议断言有效。 关于质押还有一个细节:若用户押注的方框被确认且被记录在协议上,用户都能够选择取回押金。
质押的最后期限我们应该系统尽可能快地对每个争议断言做出决定。所以当新的争议断言被添加至链上,且出现一个分支点时,就会产生一个与该争议断言相关联的期限。这个期限足够长以至于任何人都可以在期限内判断该争议断言是否有效,然后需要在期限之前选择是否押注。一旦期限满了,所有参与决定争议断言的押注都将可知晓。争议如果 Alice 和 Bob 在不同的方框上进行押注,会有两种情况出现:要么其中一位向右倾向另一个人的押注,要么找不到这样的路径。如果 Alice 和 Bob 之间没有一条可以连接他们的向右的路径,则他们必定存在分歧。 当双方之间出现争议时,系统会在他们之间启动一个交互式的争议解决协议。该协议带来的结果是,其中一方会被证实错误的,其押金会被罚没,且押注会从方框中移除。而这些押注的部分会给争议的另一方,剩余的会被销毁。多个争议可以同时存在,但每个质押者每次最多只能选择一个争议。结果确认当某个争议断言的质押期限到期之后,并且所有在期限内存入的押注在该断言的同一个分支上,系统就可以确认该争议断言的结果。它会被确认或拒绝,当前状态会向右移动到正确的方框上。如果该断言被确认有效,其带来的副作用也会被记录上链。虚拟机状态就是这样向前移动的。为何说其无需信任Arbitrum Rollup 的一个重要性质就是无需信任 —— 单个诚实参与者就能保证虚拟机状态正确推进。为什么?假设 Alice 总是对每个争议断言的正确分支进行押注,并且当树不再产生分支了,她就提议一个争议断言。 因为 Alice 在正确的分支上押注,所以每一次争议她都是胜利方。如果其他人不用以Alice ,那么他们将在一个不相关的争议中损失他们的质押金,最终进入 Alice 所在的争议中,其押金将输给 Alice。
图:只要 Alice 是诚实的,无论其他人怎么做,绿色方框最终都会被确认 因为在这种情况下,系统是无需信任的。如果 Alice 在一个方框上押注且她知道该方框的路径是正确的,那么她可以确认其所在的方框上将最终被确认。对于 Alice 来说,该路径就像被敲定了一样。最终确定性无需信任的好处结果最终确定性的无需信任为什么如此重要?假设一个虚拟机打算向 Alice 支付一笔交易。该支付事件位于正确的路径上,但这一笔交易直到这笔交付交易所在的方框在链上被确认还需等待一段时间。 最终确定性无需信任让 Alice 能够即时收到汇款。如果 Bob 手上有闲钱,他能马上给 Alice 钱,作为交换,Alice 把未来即将被确认的支付款项转给 Bob (额外给 Bob 一点手续费)。Bob 只有确定该支付交易一定会发生才会这么做。Bob 能够最终靠押注诚实结果来确保这一点 —— 那么他就可以对这笔支付一定会发生抱有无需信任的信心。延迟攻击因为系统是无需信任的,作恶者无法强行生成一个错误的结果。他们能够做的只有延缓系统处理过程。但这样会牺牲他们的押金,如果质押数额很大的话成本将会非常昂贵的。优化能够最终靠各种优化方案来减少运行协议必需的链上记账数据量、减少链上 Gas成本、以及让延迟攻击所带来的分食狂欢更容易发生。 本文编译自Offchain Labs,作者Ed Felten。
作者:零识区块链官网;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章的主要内容问题,请发送至邮箱:返回搜狐,查看更加多