5_Rollup基础

本文详尽地阐述了Arbitrum Rollup的一些基础概念,并提供了系统中不同组件的更详细的说明。

Arbitrum Rollup是一种为以太坊设计的Optimistic Rollup方案。

Rollup介绍

近来,Rollup已成为智能合约扩容领域的明星方案。其概念早已有之,但后来才有一些组织,包括我们Offchain Labs,才开始对其进行推广。在讨论Arbitrum Rollup及其特点之前,我们先跳出来看一下rollup是什么以及所有rollup的共性。

Rollup是一种扩容开放合约(每个人都可以查看并使用的合约)的通用方案。在rollup中,交易将以calldata的形式记录在以太坊上,但rollup合约真正的计算和存储都是在以太坊链下进行的。某些用户(验证者)会发布一个以太坊链上的关于rollup合约将会做什么的断言(也称为Rollup区块),例如转账及rollup合约执行已发布在链上的调用后其状态的哈希。我们可以将断言想象成不断地将各种调用及其结果『卷积』(rolling up)汇总到一个链上交易的一个过程。

各种rollup系统之间的区别是,它们如何保证断言是正确的。

Optimistic Rollup

Optimistic Rollup是一种乐观式的rollup,也即所有的断言发布时都不包含任何有效性的证明。相反,验证者在当在以太坊链上发布一个断言时同时要质押一笔资金,如果有人认为该断言是错误的,在一段时间窗口内任何人都可以质押自己的资金并挑战该断言。有时我们称这种模式为『欺诈证明』。如果断言者是错误的,他会失去自己的质押资金。如果在挑战期过期后仍没有成功的挑战,该断言就会被接受并最终定格。

所有的Optimistic Rollup都是交互式的——当断言者发布乐观式断言后,另一个验证者可以通过挑战来发起争议处理流程。不过,我们仍然可以通过争议解决所需的交互轮数来将乐观型rollup进行更细致的分类。在如Arbitrum Rollup这种多轮互动式Rollup中,有一个初始挑战期,允许挑战者质押一定资金并宣称该断言是错误的。随后会有一套在断言者和挑战者间的往返互动协议发挥作用,而该协议的仲裁者是一个链上合约。最终,仲裁者会决定哪一方是错误的,并通过没收其质押资金进行惩罚。这套流程的理念是,在仲裁者依据实情断案之前,通过互动式协议尽可能地在两位争议者之间缩窄争议范围,以最大程度减少链上用于处理争议的工作量。

相较于其他rollup方案,Arbitrum Rollup的亮眼之处在于,链上的信息非常少,并且还支持任意EVM智能合约,并且能与所有的以太坊开发者工具无缝衔接。在本页面剩余内容中,我们将不再过多关注Arbitrum是如何实现这些的,而会更多阐述Arbitrum Rollup的开发者和用户体验。

Arbitrum Rollup

Arbitrum Rollup是一条有超级可扩容性的二层网络L2链。像所有的rollup一样,Arbitrum Rollup链的安全性是以以太坊为基础的,所有的交易数据都会记录在以太坊上。从用户和开发者角度看,与Arbitrum互动与以太坊互动是几乎一样的。Arbitrum也支持以太坊一样的RPC接口,支持所有的EVM编程语言,并在不需要任何适配的情况下就原生地支持所有以太坊工具。Arbitrum与以太坊唯一不像的地方是使用成本:同样的一笔交易在Arbitrum上的消耗会比在以太坊上小很多。

从以太坊向Arbitrum移植合约快速又简单,无需更改任何代码或下载新软件。Arbitrum就像以太坊一样完全支持EVM。这意味着所有以太坊上智能合约的语言(如所有版本的Solidity,Vyper Yul)同样也被Arbitrum原生支持。详细兼容性请见Solidity Support · Offchain Labs Dev Center。所有以太坊前端工具(如Truffle,Hardhat,The Graph,ether.js)也都完全支持,详见前端集成

虽然开发者和用户不需要因在Arbitrum上使用和部署合约而额外下载新软件,有些用户可能还是想成为链的验证者。在Arbitrum Rollup中,一个基本事实是,只要存在任意一个诚实的验证者,整个系统就可以正确地运行,安全从而有了保障。成为Arbitrum的验证者是完全无需许可的,只需要下载Arbitrum验证者节点软件并将其指向Arbitrum链即可。要发布一个断言或对其进行挑战,你只需要质押一定资金,在断言成立或挑战结束后即会收回(假设你是诚实的验证者)。

简而言之,Arbitrum在没有任何安全问题与中心化的情况下,让用户能够以非常低廉的成本与合约交互。并且还支持所有以太坊的工具集,使用Arbitrum不需要任何额外工具,并且任何人都可以成为链的验证者。

链的运行与安全保障

Arbitrum Rollup通过多轮互动乐观式Rollup协议来保障安全,该协议发表于2018年的Usenix Security大会上首次发表。任何用户都可以对链的执行情况进行断言。在断言提交到以太坊后,会有一个任何其他用户都可以挑战该断言正确性的挑战期。在挑战开始后,争议由以太坊仲裁,并保证诚实的用户永远会赢得挑战。为了激励诚实的验证者,作恶者的质押资金在输掉争议后会被没收。协议详情请见协议设计这一章。

提交交易

回忆一下,所有rollup的关键特性是,它们都会将交易数据记录在以太坊链上。所有在Arbitrum Rollup链上进行的交易都会被提交到在以太坊上的Inbox智能合约中。Rollup链的运行完全基于提交到inbox中的交易,所以任何监控inbox的人通过检查inbox合约中的交易就可以轻松地知道Arbitrum链正确的状态。虽然执行一条Arbitrum交易仍需要一笔以太坊交易,但Arbitrum上的交易花费非常低,因为只有原始交易数据发送到了以太坊,而执行合约与合约存储都发生在以太坊链下。Arbitrum Rollup还提供了一些压缩工具,以进一步压缩需要记录在以太坊上的交易数据。

聚合交易

虽然用户可以直接将交易自行提交到inbox中,他们也可以选择通过聚合器实现。聚合器是一种可以收集交易并批量提交到以太坊上的节点。

使用聚合器有两个主要优点。第一,以太坊交易的最小交易成本远大于Arbitrum。在Arbitrum上单独提交交易会显著升高成本。而通过批量将Arbitrum交易发送到以太坊上,所有交易者的使用成本都被摊薄,显著地降低了燃气消耗量。第二,通过聚合器,用户无需在L1以太坊上持有资产即可将rollup交易发送到L1。

聚合器章节有关于聚合器的详述。

吞吐量

由于所有的Arbitrum交易数据都发布在以太坊上,每秒的交易笔数以及每笔交易的交易成本都会受到以太坊吞吐量的影响。因此,通过优化压缩交易来减少数据提交量对降低成本和增加吞吐量是至关重要的。

所有的交易都与需要上链的元数据捆绑,但有些交易自身会附带自定义的calldata负载。因此,一条链的吞吐量与跑分测试所使用的交易也密切相关。对于没有自定义calldata的交易,我们的测试显示,Arbitrum大约每秒可执行4500条交易。Arbitrum区块浏览器给出了所有在Arbitrum测试网上的交易的成本,对测定特定交易的成本非常有用。

跨合约通信

就像在以太坊上一样,Arbitrum上的合约也可以对其他合约进行同步调用。那自然我们会联想到Arbitrum Rollup链上的合约如何与以太坊上的合约交互。跨链以及跨分片互通性是一个难题,但由于rollup的根基位于以太坊,互通性自然就相对顺滑,当然,只能是异步的。

重要的一点是,从以太坊向Arbitrum的调用与从Arbitrum向以太坊的调用是不同的。以太坊合约向Arbitrum提交交易是迅速的。但正常的Arbitrum向以太坊提交的交易是比较慢的,因为需要等待挑战期结束。还好已经有了一些优雅的解决方案,让用户能够从Arbitrum向以太坊迅速提取同质化资产。请在L1最终性与快速提款中详细了解。

在Arbitrum Rollup中有Token Bridge SDK以及Token Bridge代币桥,为资产在Arbitrum和Ethereum中迁移提供无需信任的解决方案。除支持转移以太坊原生资产到Arbitrum,Arbitrum还支持创建在Arbitrum上铸造的原生代币,随后可以发送到以太坊上。

Arbitrum虚拟机

虽然Arbitrum支持EVM,但底层实际上是运行于Arbitrum虚拟机(AVM)之上的。AVM永远不会暴露给开发者或用户。所以如果你只是对如何使用Arbitrum感兴趣,完全可以忽略AVM。但如果你还想了解Arbitrum的内在工作机制以及如何实现扩容,请继续阅读。AVM是针对乐观式下的快速执行而优化的,同时又保证了迅速解决争议的能力。详细内容参见AVM设计理念以及AVM规范

ArbOS

ArbOS,Arbitrum操作系统,位于AVM之上,负责隔离每个未受信的合约,使用ArbGas与运行时追踪并限制它们的资源使用,并管理负责为验证者从用户端收集运行费用的经济模型。通过将本应在L1智能合约上进行的任务迁移到了更便宜的L2上来,ArbOS给了Arbitrum极大的灵活性。详细请见ArbOS

4_安装

6_Arbitrum术语表