Arbitrum Rollup中文白皮书:具有链上安全性的链下合约

链茶馆
媒体专栏
热度: 12933
本文介绍Arbitrum Rollup为开发者实现了什么,它的工作原理,以及在哪里可以获得更多信息。

本文是由链茶馆旗下编译团队翻译,译自https://offchainlabs.com/。

br


Arbitrum Rollup 是一个Layer 2平台,使智能合约具有可扩展性、快速性和私有性。Arbitrum与以太坊紧密互操作,并公开相同的开发者界面,因此以太坊开发者可以轻松地交叉编译合约并在Arbitrum上运行。Arbitrum的这些功能通过激励、网络协议设计和虚拟机体系结构的独特组合而实现。


本文介绍Arbitrum Rollup为开发者实现了什么,它的工作原理,以及在哪里可以获得更多信息。


Arbitrum如何使dapps速度更快成本更低


在深入研究Arbitrum Rollup之前,让我们先谈谈Arbitrum技术的基本概念。


Arbitrum链是与以太坊以及所有以太坊工具兼容的区块链,可以与以太坊进行交互。任何以太坊用户或合约都可以将ETH或其他代币存入Arbitrium,并可以随时从Arbitrium中将资金提回以太坊。在Arbitrium链上的合约运行方式与在以太坊上一样。任何人都可以开启一个新的Arbitrum链。


Arbitrum将合约大部分工作移动至链下进行,这使得dapp比直接在以太坊上运行更便宜、更具可扩展性。链下工作并没有丧失安全性,因为Arbitrum提供了与以太坊相同的无需信任安全模式。


在Arbitrum Rollup,任何人都可以使用全开源的Arbitrum验证器软件(打包成Docker(容器技术)镜像),成为自己链上的验证者。Arbitrum保证,即使其他验证者都有所欺骗,只要有一个验证者是诚实的,那么Arbitrum链就可正确地操作并取得进展。这就是为什么我们说Arbitrum是无需信任的。


Website(offchainlabs网站): 

https://offchainlabs.com/


Developer Site(开发者站): 

https://developer.offchainlabs.com/


Contact(合约地址): 

info@ofchainlabs.com


本文关注的是Arbitrum的Rollup模式,在这种模式下,链的状态是可见的,任何人都可以成为验证者。还有一个通道/侧链模式,在其中,一个Arbitrum链有一组固定的验证者,并且该链的状态可以是保密的。

就技术层面而言,通道和侧链几乎是相同的。从产品级别来看,Arbitrum 通道指的是使用范式,参与者本身都充当验证者。这种操作模式类似于状态通道,适用于拥有固定和预先确定的参与者集合的应用程序(如许多游戏)。


Arbitrum侧链的使用指的是不属于验证器集的用户,非常适合那些没有固定的已知参与者集合的应用程序(例如拍卖和大多数DeFi应用程序)。


可扩展性


Arbitrum将合约的计算和存储从以太坊主链中移出,有助于降低成本,并显著提高合约的性能和可扩展性。对合约的调用以及由此产生的任何一级操作(如取款)都会作为calldata(调用数据)记录在链上。但是执行和存储都在链外进行,只有合约状态的小的加密哈希表在链上建立检查点。


任何人都可以启动一个Arbitrum Rollup链。假设有这样一个世界,其中有许多Arbitrum链并行运行,用户可以关注并验证他们感兴趣的链,同时安全地忽略那些不感兴趣的链。如果这样的话,单个Arbitrum Rollup链就可以被看作是一种分割以太坊区块链的机制。


AnyTrust保证


与其他链下项目不同的是,在Arbitrum即使其他人串通(试图)作弊,只要合约中的任何一个参与者都诚实行事,Arbitrum都可保证正确的执行和进展。大多数其他项目则需要多数诚实或三分之二诚实,或者需要在出现争议时将合约的整个状态转移到主链。


与以太坊的互操作性


Arbitrum可与以太坊互操作,开发者体验完全相同。用户可以使用最喜欢的以太坊开发工具和环境在Solidity编写合约,并将以太坊虚拟机(EVM)代码部署到Arbitrum,其部署与以太坊相同。如果愿意,可以使用Truffle、Buidler或任何其他以太坊构建系统来管理代码的编译和部署。


以太坊用户可以在Arbitrum上使用现有的密钥和钱包软件,在以太坊和Arbitrum链之间来回传输ETH或任何其他以太坊代币。每个Arbitrum链都附带一个代币桥与一个用于在基本链和Rollup链之间转移资产的用户界面。


如何在Arbitrum Rollup上运行Dapp 


假设你是为以太坊平台编写dapp的开发者。因Arbitrum与以太坊互操作,所以你可以在Arbitrum Rollup链上启动dapp,并获得更快的速度和更好的可扩展性。


假如你从一个dapp开始,或者你计划开发一个由Solidity编写的合约组成的dapp,以及一个基于浏览器的前端。那么下文将讲到如何用dapp使用Arbitrum。Arbitrum支持使用以太坊的CREATE和CREATE2操作码在已部署的链上动态启动合约,因此你可以为你的dapp启动新的Rollup链,也可以将其部署到现有的Rollup链。以下是启动新链的过程。


首先,你需要为链标识一组初始验证器。稍后我们将讨论如何选择验证器,以及为什么用户可能想要验证链。当然,一旦链离开,验证器将能够随意进出。


当你准备好启动链时,向将Arbitrum连接到以太坊的EthBridge发送一条消息,告诉它在Arbitrum Rollup上启动链,并标识合约的初始验证器。


然后你的Rollup链就就启动了,并在Arbitrum上运行。你可以将合约部署到Rollup链,方法是发送与你希望部署到以太坊的交易相同的交易。dapp的用户可在浏览器中启动现有的前端界面。前端将使用Arbitrum针对web3、ethers或go ethereum的前端插件自动与运行链交互。


有了EthBridge,你和你的用户可以使用链进行交互,或者将ETH或任何其他基于以太坊的代币发送到你链上的合约,而dapp可以将ETH或其他代币发送给任何以太坊用户或任何Arbitrum或以太坊上的合约。你可以通过将资金存入由EthBridge管理的Arbitrum钱包来实现这一点。


完成所有这些工作所需的软件EthBridge—Layer 2操作软件与验证器启用,都可以通过GitHub从Offchain Labs获得。当然,这都是开源的。


多语言支持:Arbitrum Rollup 的第一个版本运行的是以Solidity编写的合约代码。许多开发者更喜欢用不同的编程语言编写代码。因而开发了编译器工具链,以允许标准语言如C/C++、Python、Go和Roice编译成Arbitrum。


Arbitrum Rollup工作原理


我们将从它的三个主要组件:EthBridge、Validators和ArbOS来解释Arbitrum Rollup的具体细节。


Arbitrum编译器采用一组以Solidity编写的合约,并将它们编译并链接到一个可执行文件中,该文件可以作为Arbitrum链运行。启动Arbitrum链时,启动的可执行文件将作为Arbitrum虚拟机(VM)运行。VM运行一个程序,跟踪dapp中的所有合约。只要这些合约的代码编译成用于启动链的可执行文件,dapp就可以在运行时启动新的合约。


EthBridge是在以太坊上运行的dapp。顾名思义,它的工作是充当以太坊和Arbitrum链之间的桥梁。以太坊中的任何人都可以调用EthBridge与Arbitrum-land进行交互,例如启动Arbitrum链,调用运行在Arbitrum链上的合约,或向Arbitrum链或运行在Arbitrum链上的合约发送ETH或其他代币。如果Arbitrum的合约向你发送ETH或其他代币,EthBridge会将此代币传递给你。


EthBridge的另一项重要工作是仲裁验证者之间的争议。如下所述,Arbitrum协议和Arbitrum虚拟机体系结构使争议解决变得非常快速而便宜,并在第一时间对进入争议施加强烈抑制。但如果确实发生了争议,EthBridge将对其进行仲裁,以维护AnyTrust保证。


验证者是Arbitrum的主力——而且他们几乎完全在链下工作。任何人都可以随时启动或停止对Arbitrum链的验证。链的验证者跟踪链的状态,并通过模仿代码中的指令来推进链的合约。


链的验证者知道关于该链当前状态的所有信息。EthBridge只跟踪极少加密哈希,这些哈希能够锁定链及其合约的状态。你可以将这些哈希视为链的验证者对链的完整状态的承诺。


ArbOS是Layer 2 的一个可信的“运营系统”,将不可信合约彼此隔离,跟踪和限制不可信合约的资源使用,并管理向用户收取费用的经济模型,为链上验证者的运营提供资金。许多原本在Layer 1上的高消耗工作由ArbOS代替,以Layer 2的速度和低成本执行以上功能。 


客户端通常是运行在终端用户系统上的普通程序,用于调用Arbitrum并观察对这些调用的响应。当客户端调用一个Arbitrum合约时,Arbitrum客户端代码将该调用编码为一条消息,并将该消息放入链的收件箱中。运行在链上的虚拟机将从收件箱中获取消息,对其进行解码,以了解调用了哪个合约和方法以及使用了哪些参数,然后模拟合约的执行并发布所有结果供客户端查看。


Arbitrum合约如何取得进展:一般情况


Arbitrum上运行的合约位于Arbitrum 虚拟机中,与特定的Arbitrum链相关联。在链的虚拟机中,ArbOS从链的收件箱中提取消息,将其发送到相应的合约,并发布结果。因此,当合约链的虚拟机取得进展时,合约就会取得进展。


为了让虚拟机取得进展,Arbitrum链的任何验证者都可以做出争议断言:一个通过EthBridge提交给以太坊链的断言,断言虚拟机下一个正确的状态哈希和操作是什么。争议断言之后,如果其他验证者认为断言不正确,那么他们将有一个时间窗口来争议断言。如果断言正确,那么几乎可以肯定没有人会对此提出异议。争议窗口关闭后,EthBridge将接受正确的断言,从而允许虚拟机取得进展。


Arbitrum链如何进展:恶意情况


当有不诚实的验证者试图作弊时,就会出现具有挑战性的情况。不诚实的验证者可能会做两件事。一是尝试通过做出错误的争议断言破坏链的执行,并且希望EthBridge能够接受这个断言。二是让别人做出一个真实的争议断言,然后进行虚假的争论。


为阻止不当行为,Arbitrum会要求作出或质疑断言的验证者放下EthBridge持有的货币质押。如有验证者作弊被发现,他将失去其所有质押(作弊者的一半质押归争议中的另一方所有。另一半则烧掉。没有被发现作弊的验证者可以在他们所押物品的挑战期过后拿回他们的质押)。


Arbitrum的争议解决协议旨在通过识别作弊方,同时限制链上以太坊活动的数量,高效解决争议。争议是断言者(asserter)(声称自己的争议断言是正确的)与挑战者(challenger)(声称同一断言是错误的)之间的较量,由EthBridge担任裁判。


争议解决


争议解决协议分为两个阶段。首先,玩家们使用链上的二分法协议缩小分歧,直到他们对虚拟机(VM)计算的某个步骤有意见。然后,断言者向EthBridge发送一个一步证明(one-step proof),证明执行单个VM指令的正确性,EthBridge则核对此微小证明。


当断言者声明以状态哈希X开头的VM可以执行N条指令,从而产生状态哈希Y,而挑战者响应为错误时,二分法协议就开始了。断言者需要将他们的断言划分为K个断言,每个断言都涉及N/K指令的执行,这些指令组合在一起给出初始断言。然后挑战者必须选择其中一个较小的断言来挑战。如果任何一个玩家在规定的时间内没有采取行动,则认定为输。经过一轮K式划分,争议的规模就缩减到N/K级。


此进程继续,并有进一步的划分。在大量对数划分(执行的指令数的对数,N)之后,争议已经缩小到单个步骤:争议将变成以状态哈希Y开头的VM是否可以执行单个指令以到达状态哈希Z。


此时,断言者必须给EthBridge提供一个一步证明,其中包含EthBridge快速验证一步断言是否正确所需的所有信息。或许有断言者无法提供有效的一步证明,不过不管怎样,争议都解决了。



br


有关一步证明的细节不再赘述。可以说,Arbitrum的定制虚拟机架构就在此发挥作用,Arbitrum 虚拟机使一步证明变得很小(最多几百个字节)并且可以快速检查(成本约为90000以太坊gas,按当前价格计算大约一美元)。


通过使争议以低成本解决,并对输家处以实质性惩罚,Arbitrum强烈抑制了作弊行为,但即使发生争议,也不会对链上造成巨大影响。通常情况下,验证者都会意见一致,并且进度发生在链外。


关键问题


Arbitrum具有其他智能合约可扩展性方案不具备的优点。Arbitrum使dapp具有可扩展性,将几乎所有的活动从链上移开,并使dapp成本独立于其代码和数据的大小。由于AnyTrust保证,任何人都是验证者,并且只需要一个诚实的验证者来确保Arbitrum链的正确行为,因此,有了Arbitrum你大可对dapp的正确性充满信心。Arbitrum还与以太坊兼容。


如果你正在开发一个dapp,并且关心其可扩展性、安全性以及开发的易用性,建议你尝试Arbitrum Rollup。


想知道更多关于Arbitrum Rollup的工作原理吗?附录对技术细节进行了深入分析。


Arbitrum Rollup入门


有关Arbitrum状态的信息,以及有关如何下载Arbitrum Rollup代码及其使用说明,请参阅https://developer.offchainlabs.com.


关于Offchain Labs


Offchain Labs,Inc.是一家总部位于纽约的初创公司,旨在通过协议设计、激励机制与虚拟机体系结构的结合,使智能合约更加私有、安全和可扩展。在普林斯顿大学计算机科学教授埃德·费尔滕(Ed Felten)和一组学者和开发者的领导下,Offchain Labs发明了Arbitrum。Arbitrum是一种区块链无关的Layer 2扩展解决方案,激励各方在链外商定虚拟机将如何操作,以提高交易吞吐量和速度以及保护隐私。


有关Offchain Labs的更多信息,请参阅https://offchainlabs.com


附录:Arbitrum Rollup技术深入分析


先从基础知识说起。虚拟机的状态由默克尔树(Merkle Tree)组织,因而可以算出虚拟机状态的加密哈希值。在协议的任何一个时间点,都会有一些虚拟机的状态被完全确认和最终敲定。这些已经获得终局性的状态的哈希值,就存在链上。


协议的参与者可以提出一个争议断言(Disputable Assertion,DA),断言声明从某些状态哈希开始,基于一些技术前提,虚拟机将会执行特定数量的计算步骤,生成新的状态哈希,并在执行期间完成相关的支付,生成相关的日志事件。争议断言可能是有效的(即可信的),也可能是无效的。参与者在提出争议断言时需要为保证断言的有效性质押一笔押金。(更多关于质押及其工作原理的内容将在后面介绍。)



br


如上图所示,提出一个争议断言就会产生一个协议最终必须要解决的逻辑决策点。如果争议断言是有效的,则系统将进入图中右上角的新状态,包括由争议断言生成的新状态哈希值,以及其他附带效果(产生相应的支付和日志)。若争议断言是无效的,则进入右下角的分支,争议断言被系统拒绝,原来的状态不会发生变化。


Arbitrum 2.0协议


目前的Arbitrum协议支持多个流水线争议断言(DA),每个状态最多可以有一个争议断言,相比Arbitrum 1.0协议有了较大进步。如果一个状态后面没有争议断言,那么任何人都可以生成一个争议断言接在后面,作为一个新的分叉点。结果就是产生了一棵平行未来之树,如下图所示。



br


质押


协议的另外一个重要的部分是质押。任何人都可以在树上的某个方框(状态)后面质押。对某个方框质押,意味着你在断言该方框最终将被协议确认。换言之,你在断言从当前状态到你质押的方框所在的这条分支是正确的分支。如果你错了,可以想见你的质押就会被罚没。


质押行为不能被撤销。你可以将你的质押向右移动——可以在分叉点后向上或向下选择分支——但你不能向左移动质押,因为这相当于撤销你之前作出的质押承诺。


提出争议断言的参与者要在 “认可其断言有效” 的继任方框上质押。通常他们可以向右移动已有的质押到满足条件的方框上。


关于质押的另一个细节:如果你所质押的方框被确认并成为公认的历史,你可以选择收回押金。这意味着,如果你是正确的,你可以停止移动你的质押,直到系统“赶上”你,然后你就可以收回你的押金。


在这一点上,你可能会担心平行未来之树会变得非常大,枝繁叶茂。实际上,这不太可能发生,除非多方质押结果不一致。只要有一个是正确的,那么其他人都会失去质押。更有可能的是,“树”实际上是一连串有效的争议断言(DA)集,一个接一个,所有的质押都在同一分支上。


br


质押期限


我们需要系统在尽可能短的时间内对每个争议断言做出决定。所以当一个争议断言被添加上链、产生一个分叉点的时候,会有一个期限与之关联。这个期限足够长,任何人如果愿意,都有足够的时间检查这个争议断言是否有效,以及产生一笔质押交易上链。任何要质押的人都必须在期限结束之前完成操作(过期的押质押仍然可以上链,但它们不能决定那个争议断言的有效性)。一旦期满,所有可以决定争议断言的质押都将可知。


争议


如果 Alice 和 Bob 质押不同的方框,那么以下两件事件中,必有一件为真。要么其中一个质押可以向右移动到另一个 —— 意味着他们的断言是一致的 —— 要么找不到这样的路径。如果没有一条向右移动的路径可以连接 Alice 和 Bob 的方框,则他们必然有分歧。他们之间一定可以找到一个唯一的分叉点 —— 一个唯一的争议断言,某个人质押这个断言是有效的,而另一个质押其无效。


br


当两个参与者之间出现争议时,系统可以启动一个交互式争议解决协议。篇幅不长,关于争议解决协议不做赘述,只能说它是一个二分法交互协议。


争议解决协议的结果是一个参与者将被发现是错误的。这个参与者的押金会被罚没。质押会从所在的方框上删除。部分押金会给到争议的另一方,剩下的则被烧掉。


多个争议可以同时解决,但是每个质押者一次最多只能参与一个争议。因为输家的质押将被删除,每解决一个争议都会减少整个系统的分歧数量。损失押金的参与者可以继续质押,但是新的质押无法影响质押期限已过的争议断言。这样做的效果是,一个争议断言的质押窗口结束后,一切有关如何处理该断言的分歧都将被消除。


结果确认


某个争议断言的质押期限到期后,如果所有及时提交(且尚未被删除)的质押,都存在于从该断言产生的同一条分支上,那么系统就可以肯定该断言的结果为真。争议断言要么被接受要么被拒绝,当前状态会移动到争议断言右边正确的方框上。如果争议断言被确认有效,则其附带效果,如支付等,也会在链上生效。虚拟机的状态就是这样向前移动的。


一般情况下,参与者都会诚实守矩,谁也不想因为质押错误而损失押金。只有有效的争议断言会被(其他参与者)断言,构成一条链,没有人会在任何争议断言的无效分支上质押。在这种情况下,所有的争议断言都会在质押期限一过立即被确认。


为什么无需信任


Arbitrum Rollup的一个重要特性是无需信任——只要有一个诚实参与者就可以确保虚拟机状态正确向前推进。为什么呢,假设 Alice 总是在正确的分支上质押,如果没有争议断言,那么她就自己断言。


因为 Alice 总是在正确的分支上质押,所以她会赢下每一次争议。如果有任何人不同意 Alice,他们要么 (a) 与一个无关的第三方产生争议并损失押金,或者 (b) 最终和 Alice 产生争议并输给 Alice 押金。无论哪种情况,所有与 Alice 不一致的人都将失去押金。只有同意 Alice 的质押才能存活下去,所以 Alice 在树上的路径最终会成为唯一一个有及时质押的分支 —— 并且 Alice 的路径会被确认。


br


因为按这种方式系统是无需信任的,如果 Alice 质押某个方框,她一定知道到这个方框的路径是可信的,Alice 可以确定这个方框最终一定会被确认。对于 Alice 来说,这条路径就跟被敲定了一样。


即使你没有质押某条路径,如果你看到有好几个人对它质押,只要你相信其中至少有一个诚实的人,你就可以肯定这条路径最终一定会被确认——对你来说,这条路径就跟被敲定了一样。


无需信任终局性的好处


为什么说无需信任终局性有价值?这儿有个来自于之前对其他 Rollup 协议讨论的经典例子。假设一个虚拟机要向 Alice进行支付。支付事件发生在诚实的路径上,但是包含这笔支付的方框还需要等待一些时间被链上确认。


无需信任的终局性让Alice可以立即拿到钱。如果Bob有余钱,可以立即付给Alice,以交换Alice尚未被确定的收款(加上支付给Bob一点小费)。Bob只有在他能确定 Alice的这笔收款一定会发生,才会想和 Alice交易。Bob可以通过质押诚实的结果来确保这一点——这样他对这笔支付最终一定会发生抱有无需信任的信心。不仅仅是Bob可以这样做。任何有点钱的人,都可以用这样的方式借钱给 Alice 或者有她这样需求的人,这些人通过提供更低的费用相互竞争,使Alice立即拿到钱的成本大大降低。


关键是,这种市场机制的可行性取决于无需信任的终局性。如果 “每个人” 都知道这件事最终会被确认,那么链上确认的延迟就不会带来太多不便。


不仅是支付,虚拟机能做的其他事情也是如此。如果虚拟机要生成一个日志事件记录发生的事情,无需信任的终局性意味着任何人都可以肯定地采取行动,因为这个日志事件最终一定会被链上承认。


延迟攻击


因为系统是无需信任的,坏人无法强行制造错误的结果。他们能做的只能是延缓系统。而延缓系统需要付出押金,如果押金数额巨大,则代价高昂。


假设有人宁愿付出质押也要发动延迟攻击,那么他们造成的最大损失是多少?


首先要注意的是,坏人无法阻止好人继续构筑诚实的分支。而且他们也无法阻止好人获得对“诚实的分支终将被确认”的无需信任的信心。


攻击者只能在错误的分支上质押,延迟诚实路径的链上确认。每次错误质押都会产生一起和诚实参与者的争议,而诚实的参与者会从争议中拿走攻击者的一大部分押金。一旦攻击者的全部押金被拿走,链上确认还会继续向前推进。


攻击者多笔质押错误的结果会怎样?答案是 这些押金会在一个接一个的争议中被拿走。如果有多人质押诚实的结果,那么这些人都可以进入争议解决,并行拿走攻击者的押金。而且需要注意,所有人都很清楚发生了什么,很多人都想加入进来分一杯羹,质押正确的结果从攻击者手上抢夺押金。如果诚实方有 K 个人质押,则在一次争议延迟期内,就要消耗攻击者 K 份押金。如果攻击者下更多的质押,那很可能会吸引更多的诚实质押者。这对攻击者来说是个灾难。


优化


还可以做优化来降低操作协议所需的链上记账数据量,降低链上的 gas 消耗,让攻击者延迟攻击引发的喂养狂潮更容易上演。有关优化不再详述。但如果你担心实现优化的成本,我们可以向你保证,EthBridge监控的所有这些的成本将低于你的预期。


详情可查阅Github存储库中的Arbitrum Rollup代码:

https://github.com/offchainlabs/arbitrum


声明:本文为入驻“火星号”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。 未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:作为区块链信息平台,本站所提供的资讯信息不代表任何投资暗示,本站所发布文章仅代表个人观点,与火星财经官方立场无关。鉴于中国尚未出台数字资产相关政策及法规,请中国大陆用户谨慎进行数字货币投资。
语音技术由科大讯飞提供

评论0