注册
关闭
Hanada

Hanada

发布于 2021-06-27 阅读数 2491

10分钟读懂 Arbitrum 的工作原理

Arbitrum 架构的概要

  • 由于 Arbitrum (L2) 作为以太坊 (L1) 的扩容解决方案存在,因而 Arbitrum 的架构自然部分存在于 L1 上,部分存在于 L2 上。

  • 存在于 L1 的 Arbitrum 组件是 EthBridge,这是一组以太坊合约。

  • EthBridge 负责对 Arbitrum Rollup 协议进行仲裁,以及维护链的收件箱和发件箱。

  • 位于 L1 上的收件箱和发件箱允许用户、L1 合约和全节点发送它们的交易到 Arbitrum 链上,并且观察这些交易的结果。

  • Arbitrum 虚拟机 (AVM) 是 L1 和 L2 之间的网关,其功能由 EthBridge 提供。

  • AVM 能够读取输入,并对这些输入执行计算以产生输出。

  • ArbOS 在 AVM 上运行,并负责确保 Arbitrum 链上智能合约的执行。

  • ArbOS 完全存在于 L2 上,并像在以太坊上一样运行 EVM 合约。

10分钟读懂 Arbitrum 的工作原理

Arbitrum 架构视图

Rollup 协议

  • 收件箱中消息的顺序决定了交易的结果。

    • 随后,任何正在查看收件箱的人都可以知道交易的结果,只需自行执行即可。

  • Rollup 协议负责确认已经有效发生的交易的结果。

  • 参与协议的用户称为验证者;验证者质押 ETH 进存款合约之后,即成为质押者并且能够对 Rollup 链上的区块进行质押。

    • 验证者和质押者的权限都是无需许可的。

  • 在安全性方面,只要求有一个单独的诚实验证者来强制链的有效执行。

    • 这使得 rollup 链与以太坊主链具有相同程度的去信任。

  • Arbitrum 假设至少存在一名诚实验证者。

  • Rollup 协议作用于 Rollup 链,这是一条独立于以太坊区块链存在的 rollup 区块链。

  • 验证者的作用是提议新区块,这些新区块随后被添加至链上。

  • 每一个被提议的区块最终都会由协议确认或者拒绝。

  • 每个区块由多个字段组成,除了区块编号字段之外,每个字段中给出的数据都是由区块提议者做出的断言,这些断言可能正确,也可能不正确。

    • 如果任意断言字段无效,协议最终将拒绝该区块。

  • 一旦提出一个区块,这个区块就会收到确认的最后期限。

  • 如果有验证者不同意该区块,他们应该提出自己的有效区块;当这些诚实验证者对无效的区块提出欺诈证明时,他们将获得一些奖励。

质押

  • 如果质押者想要添加一个 rollup 区块至链上,ta 必须将其质押金放置在 ta 正添加的区块上。

  • Staking (质押) 是无需许可的,任何人都能够在任何提供质押的区块上进行质押。

  • 一旦你对某个区块进行质押,在该区块被确认之前你无法提出自己的质押金。

  • 当你对某个区块进行质押时,你将确认该区块是有效的,并且链中最新确认的区块和你已质押的区块之间的每个区块都是有效的。

  • 如果你所质押的区块无效,或者链中最近确认的区块和你所质押的区块之间存在无效区块,那么你的质押金将被没收

  • 如果你没有对某个区块进行质押,那么可以对最新确认的区块质押。

  • 如果你对某个 rollup 区块进行质押,那么你可以将你的质押金扩展到你所质押的区块的任意后续区块中。

  • 质押所需的金额是动态的。

    • 在 Arbitrum 链中,有指定为参数的基础质押金额,大部分时间都会使用这个参数。

    • 一些攻击者哪怕质押金被罚没也要对网络进行攻击以延迟网络,那么网络的安全措施就是,过了第一个未确定区块的截止日期之后,质押数量将乘以一个因素 (这个因素随着时间呈指数增长)。

    • 这是为了在攻击期间增加此类攻击的成本。

    • 这种质押金额的增加是暂时的,仅在 Arbitrum 链的区块确认进展缓慢时才会发生。

挑战协议

  • 当两个质押者分别对两个不同的区块进行质押时 (其中一个区块不是接在另一个区块后面),那么将会有一个大家不同意的区块,因而挑战就会产生。

  • 大多数挑战发生在 Arbitrum 链上,并由 L1 合约进行裁决。

  • 挑战包括发生在 L2 上的交互式、多轮分解游戏,以及在 L1 上执行的一站式证明。

  • 提议争议区块的质押者将为他们的主张辩护,反对持有不同意见的质押者。

  • 争议区块的提议者声称,以上一个区块为起点,在虚拟机执行了 N 个指令之后,上一个区块的状态将被推进到他们所提议的区块的状态中。

  • 在这场分解游戏中,争议区块的提议者 (Alice) 首先将 N 指令分解成 N/K 大小的 K 个部分。

    • 请注意,子部分的大小与步数的大小不相等,而是与 Arbgas 消耗的数量相等。

    • 还要注意,每个部分自然会有一个起始点和端点 (这看起来微不足道,但可以使下一个点更容易理解)。

  • 而 Alice 的对立方 (Bob) 也将把指令集分解成 K 个大小为 N/K 的部分,但是 Bob 其中一个 K 部分的端点与 Alice 相应部分的端点不同。

    • 这实际上是 Bob 确定其不同意的部分。

  • 然后,Bob 将执行与 Alice 初始步骤相同的操作,将其中一个部分分解成大小为 N/K 的 K 个子部分,并将该部分连同已确定的子部分返回发送给 Alice。

  • 接着,Alice 执行与 Bob 初始步骤相同的操作,并确定与其端点不一致的子部分。

  • 这个分解过程将继续进行,直到 Alice 和 Bob 确定了一个他们不同意的指令。

  • 这个指令被发送至 L1 的合约中,这个合约负责执行该指令并决定争议的获胜者。

  • 争议的输方将被没收质押金,其中一部分将被销毁 (以免攻击者对冲他们的质押金),其余的部分将作为奖励提供给诚实质押者。

  • 在整个分解过程中,L1 合约作为这场游戏的裁判并不知道任何关于指令的信息,它只是检查每个玩家是否遵守了这场分解游戏的规则。

  • 在争议发生期间,所有其他验证者都可以在争议最终确定之前自行确定争议的结果;这意味着软分叉已产生,验证者可以继续在有效链上提交 rollup 区块。

  • 挑战期有时间限制,每个质押者大约有一周的时间。

  • 每个质押者在这一周之内必须有所动作,否则将会输掉争议。

    • 想象一下国际象棋时钟。

10分钟读懂 Arbitrum 的工作原理

在挑战协议期间由两位质押者参与的多轮、交互式分解游戏。实际上,有争议的断言将会有更多的指令 (如图中的波浪线),因此这场游戏将会有更多轮,但原理是相同的。

验证者

  • 验证者是 Arbitrum 链上的一个节点,它选择监测 Rollup 协议上的活动并推进链的状态进行。

  • 并非所有节点都充当验证者。

  • Offchain Labs 希望验证者在“主动、防御或者瞭望塔”三种策略中选择一样;但是,这并不是协议强制执行的。

    • “主动验证者” (active validator) 通过提议新区块不断努力推进链的进行。每条链只需要一个诚实的主动验证者;增加主动验证者的数量并不会提高链的效率。

    • “防御验证者” (defensive validator) 监测 Rollup 协议,并且仅当他们目击到作恶行为时才会采取行动。要么提议一个有效的区块;要么在其他验证者提议的有效区块上进行质押。

    • “瞭望塔验证者"(watch tower validator) 像防御验证者一样监测着 Rollup 协议。但当他们目击到作恶行为时,他们不会亲自提议有效区块或者对有效区块质押,而是提醒其他验证者这样做。

  • Offchain labs 将在他们的 Arbitrum 链上运行一个主动验证者。

  • 大多数时间,防御验证者和瞭望塔验证者不需要做任何事情,因此攻击者永远不会知道链上有多少个防御验证者。

  • 尽管任何人都可以成为验证者,但是估计主要参与者还是在链上投资了大量资产的各方,或者被投资者聘为验证者的各方。

全节点

  • Arbitrum 上的全节点与以太坊上的全节点具有相同的作用;他们都跟踪链的状态并且允许其他人与链交互。

  • 由于有一个内置的 AVM 模拟器,全节点不需要对实际的 Rollup 协议有任何理解,就能够对链上的输入进行计算输出。

  • 一个全节点可以作为链上的聚合器,进一步提高用户的成本效率。

  • Arbitrum 具有向用户收取费用的功能,以补偿全节点在充当聚合器时所产生的开销。

  • 全节点还可以压缩交易,以进一步降低 L1 调用数据的成本。

    • 全节点将压缩后的交易提交到链的收件箱 (inbox),arbOS 在那里接收并解压交易。

  • 一个全节点通常会同时包含压缩和聚合功能,也就是说,它会向链的收件箱提交一批已压缩的交易。

序列器模式

  • Arbitrum 链发布时,可以选择和序列器一起发布。

  • 序列器是一个全节点,它拥有额外的特权,可以对链的收件箱中的交易进行排序。

  • 这样的特权允许序列器立即保证交易的结果。

  • 当 Arbitrum 链与序列器一起发布时,链的收件箱被有效地分为两个:

    • 没有序列器的收件箱将正常运行,节点可以发送信息至收件箱,这些信息会被标记上一个区块高度和时间戳。

    • 第二个收件箱将由序列器管理,并且只有序列器可以发送信息至收件箱。

  • 序列器发送信息到其收件箱之后,他们可以指定这些信息的区块高度和时间戳。

    • 这包括到指定增量区块 (即过去的区块) 以及增量秒数 (即过去的秒数) 为止的区块高度和时间戳。

    • 这些增量值通常相当于 10 分钟左右。

  • 当 arbOS 检查收件箱时,它将收到区块高度最低的信息,这个区块高度是常规收件箱或者是序列器收件箱的头部。

  • 序列器可以回溯多少个区块数取决于在以太坊上敲定 Arbitrum 区块所需的确认区块的数量。

    • 如果在以太坊上完成敲定需要 x 个区块,那么序列器就要回溯 x 个区块,以便其确切地知道哪些交易将优先于当前的交易。

  • 当 Arbitrum 链上激活序列器模式时,提交至序列器收件箱的交易会比那些提交至普通收件箱的交易提前 x 个区块被敲定。

    • 因为对即时敲定、5 分钟敲定、10 分钟敲定进行比较后,三者都有很大的实际差异,所以这被认为是正向的权衡。

  • 然而,某种程度上,一名作恶的序列器能够利用这些特权获得好处。

    • 一名作恶的序列器能够通过不将用户的交易放进序列器收件箱来审查用户的交易,迫使用户在发现其被审查之后,发送相同的交易至普通收件箱中。

    • 序列器也有能力抢跑用户的交易。

  • 最初的 Arbitrum 链上的序列器将有 Offchain Labs 运行。

  • Cornell Tech 团队已经在研发去中心化序列器算法上取得一定的成果,这项研究还差一些工作需要完成,完成之后便可以应用到 Arbitrum 的长期解决方案中。

序列器模式开启与关闭时,链中收件箱的异同。

ArbGas / 费用

  • ArbGas 的操作原理与以太坊 gas 类似,用于衡量 Arbitrum 链上的计算成本。

  • 然而,Arbitrum 链没有一个硬性的 ArbGas limit 要求,并且 ArbGas 消耗得比以太坊 gas 要快得多。

  • ArbGas 的一个关键作用是为验证计算结果所需的时间提供一个可预测的度量。

  • 每一个 rollup 区块内都包含一个关于链上 ArbGas 消耗总量的声明,这意味着当前区块的声明与前一个区块的声明之间的差异应该是当前区块消耗了多少 ArbGas 的有效指标。

  • 通过这种方式,检查区块有效性时,验证者可以将他们的 gas limit 设置为这个值,如果这些 ArbGas 在区块完成执行前就耗尽了,那么就可以确定这是一个无效区块,并成功挑战了该无效区块。

  • 用户在向链提交交易时,会被收取费用。

  • 如果用户将他们的交易发送给一个聚合器,那么一部分费用将自动支付给这个聚合器。

  • 剩余的费用将被发送到网络费用池,用于支付确保整条链安全运行的服务费。

  • 费用还包含 L2 交易、L1 数据调用、计算以及存储成本。

  • 费用以 ETH 的形式支付。

总结

  • Arbitrum 是由 Offchain Labs 团队开发的 L2 扩容解决方案:一个使用多轮交互挑战协议的 optimistic rollup。

  • Arbitrum 的旗舰链已于 5 月 28 日面向开发者发布,一旦项目达到一定数量,就会向用户开放。

  • 从用户的角度来看,与 Arbitrum 链交互和与以太坊交互几乎无差别。

  • 0
Hanada
Hanada

0 条评论