下个月,Tracer 将在 Arbitrum 上部署其永续掉期产品。本文将帮助你深入理解 Arbitrum 背后的机制,以便你在 L2 环境中通过 Tracer 交易时获得更好的体验。
架构摘要
由于 Arbitrum 是针对以太坊 L1 的 L2 可扩展性方案,Arbitrum 的架构有部分在 L1 上,有部分在 L2 上。
Arbitrum 在 L1 上的组件是 EthBridge,由一组以太坊合约构成。
EthBridge 负责对 Arbitrum Rollup 协议进行仲裁,以及维护 Arbitrum rollup 在以太坊链上的收件箱和发件箱。
用户、L1 合约和全节点可以通过以太坊链上的收件箱和发件箱将其交易发送至 Arbitrum 链,并观察这些交易的结果。
Arbitrum 虚拟机(AVM)是 EthBridge 提供的功能,是 L1 和 L2 之间的网关。
AVM 能够读取输入,并基于这些输入执行计算,从而产生输出。
ArbOS 运行在 AVM 上,确保智能合约在 Arbitrum 链上执行。
ArbOS 完全存在于 L2 上,并像在以太坊上一样运行 EVM 合约。
- Arbitrum 架构图 -
Arbitrum Rollup 协议
收件箱内消息的顺序决定了交易的结果。
因此,任何查看收件箱的人都能知道交易的结果,只要亲自执行这些交易即可。
Arbitrum Rollup 协议负责确认已经发生的交易的结果。
参与协议的用户被称为验证者;如果验证者在质押合约中存入 ETH,就会变成质押者,可以给 Arbitrum 链上的区块押注。
成为验证者和质押者都无需经过许可。
在安全性方面,只需要一个诚实的验证者来确保 Arbitrum 链正确执行。
这使得 Arbitrum 链具备与以太坊链相同程度的免信任性。
Arbitrum 假设至少有一位验证者是诚实的。
Arbitrum Rollup 协议作用于 Arbitrum Rollup 链。后者是一条由 Rollup 区块组成的链,独立于以太坊链。
验证者的职责是提议新的区块并将其添加到 Arbitrum 链上。
每个被提议的区块最终都会被协议确认或拒绝。
每个区块都包含多个字段。除了区块号字段之外,每个字段的数据都是区块提议者的断言,但不一定是正确的。
如果有任何断言字段不正确,协议最终会拒绝该区块。
凡是被提议的区块都有确认期限。
反对某个区块的验证者应提议正确的区块。成功提交欺诈证明的诚实验证者会获得奖励。
质押
要想将某个 Rollup 区块添加到链上,质押者必须押注该区块。
质押是无需许可的,任何人都可以押注任意区块。
一旦你押注某个区块,在该区块被确认之前无法取回押金。
一旦你押注某个区块,即表明你认定这个区块是正确的,且认定最新确认区块到你所押注的区块这段链上的每个区块都是正确的。
如果你押注的区块不正确,或最新确认区块到你所押注的区块这段链上的某个区块不正确,你的押金就会被罚没。
如果你不想押注某个区块,你可以押注最新被确认区块。
如果你押注了某个区块,可将押注延伸至跟在该区块之后的任何区块。
所需质押量是动态的。
Arbitrum 链上有一个指定的基础质押量参数,在大多数情况下都会用到。
为了防止攻击者不惜牺牲押注也要拖慢网络的情况,质押量会乘以一个随超时时间呈指数级增长的因子(超时时间从第一个未确定区块的截止时间算起)。
这是为了增加这类攻击在攻击期间的成本。
这种质押翻倍是暂时的,只会在 Arbitrum 链的区块确认进程缓慢时发生.
挑战协议
当两个质押者押注不同的区块且这两个区块之间没有继承关系时,他们会在某个区块上产生分歧,从而引发挑战。
挑战主要发生在 Arbitrum 链上,由 L1 合约裁决。
挑战包括一个在 L2 上进行的交互型多轮切分游戏和一个在 L1 上执行的单步证明。
如果有质押者对某个区块提出争议,提议该区块的质押者将作为 “被告” 捍卫自己的断言。
“被告” 质押者声称,以上一个区块为起点,在虚拟机执行 N 个指令之后,上一个区块的状态将推进至其所提议的区块的状态。
在切分游戏中,作为 “被告” 的质押者(Alice)为先手,将 N 个指令切分成 K 段,每段的大小是 N/K。
请注意,每段 Arbgas 消耗量相等,但步骤数量上不一定相等。
还要注意的是,每段都有一个起点和一个终点(这点并不重要,但是有助于我们理解下一点)。
作为 “原告” 的质押者(Bob)同样将 N 个指令切分成 K 段(每段的大小是 N/K),并将它们与 Alice 的切分段一一对应,发现其中一个切分段的终点与 Alice 的不同。
Bob 实际上是在找出他不认同的切分段。
接着,Bob 会执行 Alice 最初的操作,将有争议的切分段(大小为 N/K)再切分成 K 个子段,然后将这个切分段连同子段一起发送给 Alice。
Alice 执行 Bob 最初的操作,找到终点不同的那个子段。
切分流程继续下去,直到 Alice 和 Bob 找到他们产生分歧的那一个指令为止。
这个指令被发送给 L1 合约,并由后者执行它,然后决定这场争议的 “胜诉方”。
“败诉方” 将失去质押物,一部分质押物将被销毁(防止攻击者对冲押注),其余则奖励给诚实的 “胜诉方”。
在整个切分流程中,作为裁决方的 L1 合约不知道任何关于指令的信息,只负责核实双方是否遵循游戏规则。
在争议期间,其他所有验证者都能在争议敲定之前自行断定争议的结果,这就意味着会发生软分叉,且验证者可以继续在正确的链上提交 Rollup 区块。
挑战期有一个强制的期限,即,每个质押者大约一周时间。
每个质押者必须在一周的限期内完成自己的任务,否则就会 “败诉”。
就像棋赛计时器那样。
- 上图显示了两位质押者在争议期间进行的多轮交互式切分游戏。实际上,有争议的断言包含的指令远比上图所示的更多,因此游戏的轮次也更多,但原理是一样的 -
验证者
验证者是 Arbitrum 链上的节点,负责监控该 Rollup 协议的活动并推进整条链的状态。
并非所有节点都是验证者。
Offchain Labs 预期验证者会采取主动、防守或观望策略;协议不会强制他们采取哪种策略。
“主动型验证者” 会通过提议新的区块来持续推进链的状态。每条链上只需要一位诚实的主动型验证者;主动型验证者的数量增加并不会提高整条链的效率。
“防守型验证者” 监控 Arbitrum 协议,只在发现不诚实行为时采取行动:要么自己提议一个正确的区块,要么押注其他验证者提议的正确的区块。
“观望型验证者” 虽然也像防守型验证者那样监控 Arbitrum 协议,但是就算发现了不诚实行为,他们也不会提议或押注正确的区块,只会向其他验证者发出告警。
Offchain labs 会在他们的旗舰 Arbitrum 链上运行主动型验证者节点。
大多数时候,防守型验证者和观望型验证者不需要做任何事,因此攻击者永远不知道有多少防守型验证者。
虽然任何人都能成为验证者,但是根据预期,选择成为验证者的主要是那些在链上质押了大量资产的人,或他们雇佣的人。
全节点
Arbitrum 链上的全节点与以太坊上的全节点作用相同,负责追踪链的状态,让其他人与这条链交互。
全节点内置 AVM 模拟器。因此,在全节点看来,Arbitrum 链就是根据输入计算输出而已,无需了解实际的 rollup协议。
全节点可以充当链上聚合器,帮助用户提高成本效率。
Arbitrum 还通过某个设施从用户处收集费用来补偿全节点充当聚合器的成本。
全节点还可以通过压缩交易来进一步降低 L1 调用数据成本。
全节点将被压缩的交易提交至收件箱,arbOS 收到该交易后会对其进行解压缩。
全节点通常会将压缩和聚合合二为一,即,提交一批经过压缩的交易至收件箱。
定序器模式
当 Arbitrum 链启动时,我们可以选择是否启用定序器。
定序器是拥有决定收件箱中交易排序特权的全节点。
该特权可以让定序器即时保证交易的结果。
如果 Arbitrum 链启用定序器,收件箱会分成两部分:
第一个收件箱会正常运行,仿佛定序器不存在一样,即,节点可以向该收件箱发送带有区块号和时间戳标记的消息。
第二个收件箱将由定序器控制,只有定序器可以向该收件箱发送消息。
在向收件箱发送消息时,定序器可以指定用来标记消息的区块号和时间戳。
这包括到指定增量区块为止的(过去的区块的)区块号和时间戳和增量秒数(过去的时间)。
这些增量值通常相当于现实世界里的 10 分钟左右。
当 arbOS 查看收件箱时,会收到带有最低区块号的消息。这个区块号要么是普通收件箱的区块号,要么是定序器收件箱的区块号。
定序器可以回溯的区块数量取决于需要在以太坊上敲定 arbitrum 区块所需的确认区块数量。
如果arbitrum 在以太坊上达成终局性需要等待 X 个区块,那么定序器就要回溯 X 个区块,以确定自己当前打包的交易会紧跟着哪些交易得到处理
当定序器模式在 Arbitrum 链上启用时,提交至定序器的交易会比没有定序器的情况提前 x 个区块敲定,但是提交至普通收件箱的交易会比没有定序器的情况落后 x 个区块敲定。
由于即时确定和 5 分钟确定与 5 分钟确定和 10 分钟确定之间存在很大差异,这是一种正向权衡。
但是,恶意定序器能够在一定程度上利用这些特权。
恶意定序器可以通过不把用户的交易放入定序器收件箱来审查它们,迫使用户在发现自己被审查后发送相同的交易到普通收件箱。
定序器还可以抢跑用户的交易。
初始 Arbitrum 链将启用由 Offchain Labs 运行的定序器。
Cornell Tech 团队在开发去中心化的公允定序器算法方面已经取得了一些成果,只需要再完成一些研究工作就可以应用到 Arbitrum 的长期解决方案中。
- 收件箱在定序器模式 开启/未开启 时的差异 -
ArbGas / 费用
ArbGas 的原理与以太坊 gas 相似,用来衡量 Arbitrum 链上的计算成本。
但是,Arbitrum 链上不设硬性 ArbGas 上限,而且 ArbGas 的消耗速度比以太坊 gas 快得多。
ArbGas 的一个关键作用是预测验证计算结果所需的时长。
每个 Rollup 区块内都包含一个关于 ArbGas 消耗总量的声明,也就是说当前区块内的声明和前一个区块内的声明之差理应是当前区块的 ArbGas 消耗量的有效指标。
因此,在检查区块有效性时,验证者可以将这一差值设成 gas 上限,如果这么多ArbGas 在区块执行完之前耗尽,就可以确定该区块是无效的,并成功挑战它。
因为这些交易的数据最终需要上链,用户需要支付费用。
如果该用户将交易发送给聚合器,部分费用会自动支付给聚合器作为补偿。
剩余费用将进入网络的费用池,用来支付保障整条链安全运行的服务费。
费用包含 L2 交易、L1 调用数据、计算和存储成本。
费用以 ETH 的形式支付。
结论
Arbitrum 是 Offchain Labs 开发的 L2 可扩展性解决方案:采用多轮交互式挑战协议的 Optimistic Rollup。
旗舰级 Arbitrum 链已于 5 月 28 日面向开发者开放。一旦这条链上运行的项目到达阈值,就会向用户开放。
从用户的角度来看,Arbitrum 链的交互体验与以太坊并无差别。
原文链接:
https://tracer.finance/radar/arbitrum-in-under-10/
作者: Nick Crow
翻译&校对: 闵敏 & 阿剑
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:建立最好的以太坊中文技术社区,持续推广和普及以太坊的技术,帮助以太坊释放区块链和智能合约的潜力,并为开发者提供更好的平台和机会
评论0条