Arbitrum Virtual Machine (AVM) AVM 的状态被组织成一个 Merkle 树,因此可以计算出其状态的加密哈希。在协议中的任何一点上,AVM 的某个状态都是完全确认的和最终的,它的哈希值存储在链上。任何参与者都可以在 AVM 状态树中放置可争议的断言(Disputable Assertion,DA), 用来声明从某个状态哈希开始,在一些技术前提条件下,AVM 可以执行指定数量的计算步骤,从而产生指定的新的状态哈希。如下图所示 当然,这个 DA 可能为真也可能为假,如果 DA 为真则系统进入到新状态并产生一个对应的新的状态哈希;如果 DA 为假,AVM 会拒绝状态迁移,返回先前状态使得整个虚拟机的状态树保持不变。 在实际情况下,AVM 内的 DA 状况要比上图复杂得多,Arbitrum 协议支持多个流水线的 DA, 每个 AVM 内的状态最多只能有一个 DA 跟随它。如果一个 DA 没有后续状态,那么任何人都可以创建一个新的分支点。这样新生成的状态树,代表了将来可能的状态,如下图所示。 另外,任何人都可以在树上的一个未来状态(上图中的方格)上进行质押。通过在一个未来状态上质押,可以断言这个状态最终会被协议确认。换句话说,是在断言从当前状态到所质押的状态的路径上的每个 DA 上采取了正确的分支。如果断言失败,那么也将失去质押。质押行为不能撤销但可以将它向右移动(状态树的增长方向),并且可以在每个分支点选择上行或下行,但不能向左移动,因为这相当于撤销之前的质押,并重新质押到已经完成的状态。 争议解决的过程Arbitrum 的争议解决协议通过两个阶段进行。首先,参与者使用链上二分协议缩小他们的分歧,直到他们对虚拟机计算的一个特定步骤有不同意见。然后,断言者向 EthBridge (连通 Layger1 和 Layer2 的基础设)发送一个微小的一步证明,这个证明的内容只是执行一条虚拟机指令的正确性证明,并由 EthBridge 来进行检查。 争议解决的过程中,用来缩小分歧范围直至单个计算步骤的二分协议至关重要。它使得状态树中的任意不同分支都可以有效地进行验证。这个二分协议的过程如下图所示: 二分协议开始时,断言者宣称从状态哈希值 X 开始的虚拟机可以执行 N 条指令得到状态哈希值 Y,而挑战者回应说这是错误的。断言者需要将自己的断言分成 M 个断言,每个断言都涉及到 N/M 条指令的执行,这些指令合在一起就得到了初始断言。然后,挑战者从这 M 个较小的断言中选择一个进行挑战。如果任何一方未能在以区块数衡量的指定时限内采取行动,他们就输了。经过一轮 M 路分割后,争议的大小已被缩小为 N/M 步。 (责任编辑:admin) |