作者:0xMoonda
随着DeFi与NFT的普及,以太坊在过去几年中已发展成为加密经济的主要结算层。但受区块链本身属性限制,其单次可处理的交易数量是有限的。在链上交易极度活跃的情况下,用户之间为了争夺有限的区块空间经常使网络陷入拥堵的状态。大大降低用户的体验 —— 高昂的gas费用与长时间的pending交易。为解决上述问题,以太坊社区采取了链上与链下扩容的方法。从2021年开始,开发者们开始将焦点转向链下 —— 在以太坊网络的基础上创建L2 rollups,Arbitrum就是一种这样的L2 rollup技术。
Arbitrum是如何解决以太坊扩容问题的?
Arbitrum网络主要由两类节点组成:batcher与validator。两类节点共同与以太坊主网交互,以维持独立链的状态,这条独立的链被称为L2。batcher负责记录用户在L2中的交易并将数据提交至L1。validator负责读取 L1中的数据,处理交易并更新L2的状态。随后validator会将更新后的L2状态数据发布到L1,这样其它节点就可以对新状态的有效性进行验证。整个过程大致如下:
· 用户将L2的交易发送至batcher,常被称为sequencer;
· sequencer在收到足量的交易后,会将数据打包并发送至L1;
· validator会读取L1合约中的交易并对在L2状态下的本地副本进行处理;
· 处理完成后会在本地生成新的L2状态,validator将新stateRoot发送至L1的合约中;
· 其它validator开始处理同批处于L2状态下的本地副本;
· validator将L2 stateRoot的结果与发送至L1合约中的原stateRoot进行比对;
· 如果validator获得的stateRoot与发布至L1的stateRoot不同,那么validator会在L1中发起challenge;
· challenge要求challenger与发布原stateRoot的validator轮流证明正确的stateRoot是什么;
· 无论哪方输掉challenge,其质押都会被削减。若原L2的stateRoot无效,则会被下一个validator销毁,不会保存至L2中。
batcher与L2交易数据
batcher使用两种不同的L1合约发布数据,一个是“delayed inbox”,另一个是“sequencer inbox”。任意节点都可以将交易发送至delayed inbox,只有sequencer可以将交易数据发送至sequencer inbox。sequencer inbox从delayed inbox中提取交易数据,并将其与sequencer提交的其它L2交易混在一起。因此,sequencer inbox是每个validator提取最新L2交易数据的主要合约。 batcher的类型分为三种:forwarder、aggregator、sequencer。用户可将L2的交易发送至三种类型中的任意一种。forwarder将L2交易发送至另一节点的指定地址。aggregator地址作为指定的节点既可以是sequencer也可以是aggregator。
aggregator接收传入的L2交易并将它们分批处理成单个信息发送至delayed inbox当中。Sequencer也会接收传入的L2交易并将它们分批处理成单个信息,但它会将信息发送至sequencer inbox。如果sequencer停止向sequencer inbox发送交易,那么任意节点都可以通过智能合约调用要求sequencer inbox中包含来自delayed inbox的交易。这样既可以保证Arbitrum网络的可用性,同时又可以抵抗恶意sequencer。目前,Arbitrum在主网运行的是自己的独立sequencer,未来计划将sequencer实现去中心化。
本质上来说,batcher的任务是将L2交易数据提交至L1。一旦这些交易在L2中被处理并生成新状态,那么validator也必须将该状态数据提交至L1。
validator与L2状态数据
使validator提交与存储L2状态数据的一系列智能合约被称为rollup。rollup的本质是由不同区块连接而成的链,也就是说rollup其实就是L2。值得注意的是,在Arbitrum的代码库中会将这些组成链的区块称为“节点”。为了防止与上面的validator与batcher混淆,在下面的阐述中会将rollup的“节点”用“区块”表示。
由于单个区块中包含L2状态数据的哈希值,所以validator可以从sequencer inbox中读取数据与处理交易,然后将更新后的L2状态数据哈希提交至rollup智能合约,rollup将会用更新后的数据创建一个新的区块并添加至链中。当validator将L2状态数据提交至rollup智能合约时,validator也会明确说明当前链中的哪个区块是新区块的父区块。
为惩罚提交无效状态数据的validator,流程中引入了质押系统。为了可以向rollup提交新的L2状态数据,validator必须进行质押,他们必须存入一定数量的ETH(或者根据rollup的要求存入其它代币)。这样的话,如果恶意validator提交了无效的状态数据,其它validator可以对该区块发起challenge,恶意validator就会失去质押物。
当validator成为staker后,可以在不同的区块上进行质押,质押规则如下:
· staker必须在他们创建的任意区块中进行质押;
· 多位staker可以在同一个区块上质押;
· staker不能在两个不同的区块路径上进行质押。 当staker在新区块进行质押时,新区块必须是之前所质押的区块的子区块(除非是staker第一次质押);
· staker在新区块上进行质押时无需增加新的质押物;
· 若某一区块在challenge中失利,那么所有在该区块上有过抵押的staker或者该区块的子区块有过质押的staker的都会失去抵押物。
若某一区块满足以下所有条件,那么该区块则将会永远被L1接收且不会重置:
· 区块创建时间超过7天
· 没有被其它区块challenge
· 至少有一位staker在其上进行质押
若某一区块满足以下所有条件,可以被销毁:
· 其父块比最新确认的区块存在时间更长(最新确认的区块在另一分支上)
· 有staker在其兄弟区块上进行质押
· 无staker在此区块质押 ·自区块创建之日起超过7天
validator的类型
每个validator可以使用不同的策略来保证网络安全。目前网络中支持三种类型的验证策略:Defensive、StakeLatest、MakeBlocks(在代码库中被称为MakeNodes)。Defensive validator负责对rollup中的区块进行监控,寻找分叉或冲突的区块。一旦检测到分叉,validator会切换至StakeLatest策略。因此,如果没有存在冲突的区块,Defensive validator也不会有任何质押。
如果区块中包含有效的L2状态数据,StakeLatest validator会在rollup中的现有区块上进行质押,并且会尽可能会在链中最正确的区块上进行质押。StakeLatest validator通常不会创建新区块,除非识别出包含错误状态数据的区块。在这种情况下,validator会创建一个包含正确数据的新区块并在新区快上进行强制质押。
MakeBlock validator也会选择在rollup中最正确的区块上进行质押。但即便是在没有无效区块的情况下,MakeBlock validator若在链的末端进行质押时也会创造新的区块,它们是负责用新的状态数据推进链发展的重要角色。
L1的交易与状态数据存储
交易数据存储
综上所述,aggregator与sequencer接收L2的交易并将其提交至L1的delayed inbox与sequencer inbox中,将数据提交到L1在L2的费用占有很大的比例。aggregator接收用户在L2中的交易,将calldata压缩至字节数组,然后将多个压缩的calldata组合成一系列的字节数组(这些数组被称为批量交易)。最后,aggregator将批量交易提交至delayed inbox。delayed inbox将批量交易进行散列处理并将哈希保存至合约中。sequencer与aggregator的工作流程类似,但sequencer inbox中还必须包含delayed inbox中消息数量的数据。该数据是sequencer inbox保存至合约中的最终哈希值的一部分。
状态数据存储
MakeBlock validator从sequencer inbox中读取与处理L2交易后,会将更新后的L2 状态数据提交至rollup智能合约。然后rollup智能合约对状态数据进行散列处理并将哈希保存到合约中。
检索交易与状态数据
即便只有交易哈希与状态数据保存在合约当中,其它节点也可以通过检索从以太全节点提交至L1的数据的交易calldata来查看原始数据。发送至delayed inbox或sequencer inbox的交易calldata包含所有经过aggregator与sequencer批量处理的L2交易数据。发送至rollup的交易calldata中包含了所有与L2相关的状态数据,对于validator来说有充足的时间来判断它们是否有效。为了使查询交易更加便捷,智能合约会向以太坊日志发送一个事件,允许任何节点可以检索L2交易数据或状态数据。
由于智能合约只需在其存储中保存哈希而非完整的交易或状态数据,因此节省了大量的gas。Rollup的主要成本来自将此数据存储至L1当中。因此,这种存储机制可以大幅降低gas费用。
Arbitrum的技术更新与进展
Arbitrum Nitro
Nitro是对Arbitrum的重大升级,在以下几方面进行了改进:
· 优化calldata的压缩方式:减少发布至L1的数据量从而降低在Arbitrum的交易成本;
· 将常规执行与错误性证明隔离:提高L1的节点性能,减少gas费用;
· 与以太坊L1的gas兼容:使EVM操作的定价及核算与以太坊完全一致;
· 增加与L1的互操作性:如与L1区块编号更加紧密地保持同步,支持对以太坊L1进行预编译;
· 保证retryable ticket的安全性:消除无法创建retryable ticket的故障模式;
· Geth追踪:支持更大范围的调试。
Arbitrum Nova
Nova是基于AnyTrust技术开发的新链,与EVM完全兼容,通过将数据发送至DAC(Data Availability Committee)的方式大幅降低成本,只有在DAC未能完成处理的情况下才会将退回的数据放到链上。Nova在处理交易数据的过程中添加了最小的信任假设——假设至少有两名DAC成员是诚实的。它用将数据与DAC进行共享的方式来替代由sequencer批量处理与发送calldata到L1的方法。DAC为批量交易签署数据可用性证书(DACerts),只有证书会被发送到L1,这样就大幅降低了对L1存储空间的要求。为保证数据的可用性,DAC负责运行数据可用性服务器(Data Availability Server),开放REST API允许通过哈希来获取数据批次。因此,Nova是为游戏、社交以及一些对gas成本较为敏感的应用而设计的。
Arbitrum Virtual Machine(AVM)
由于Arbitrum的L2交易不在L1中执行,所以不必遵循与EVM完全相同的规则进行计算。因此,Arbitrum团队构建了自己的虚拟机Arbitrum Virtual Machine(AVM)。AVM与EVM非常相似,目的是支持EVM编译智能合约的兼容性,但也有不同。区别是AVM必须支持Arbitrum的challenge。challenge要求交易执行的步骤必须是可证明的,所以AVM引入了代码点。当代码执行时,指令保存在一维数组中,程序计数器指向当前指令。使用程序计数器是为了找出哪一条执行指令需要对数时间,然后其将时间复杂度降低至恒定时间。数组中的每条指令都有代码点,这样AVM可以立即显示出在程序计数器上正在执行的指令。代码点虽然增加了AVM的复杂性,但Arbitrum系统只有在需要对交易执行进行证明时才会使用。一般情况下还是会使用普通的程序计数器。
ArbOS
ArbOS是Arbitrum的操作系统,负责管理与跟踪代码执行期间所使用的智能合约资源。ArbOS有一个账户表,用于跟踪每个账户的状态,还为参与rollup协议的validator运行资金模型。AVM的内置指令提升了ArbOS运行及其跟踪资源的性能。AVM对ArbOS 的支持使ArbOS可以在L2中运行某些规则,不一定非要到L1中去执行,因为任何从L1到L2的计算都会花费大量gas,这样可以节省大量成本。
Arbitrum生态发展数据
协议收入
该数据衡量的是用户在一段时间内支付总交易费用的美元价值。自8月完成Nitro升级之后,Arbitrum的协议收入为升级前的2倍,达到4万美元。10月末迎来高峰至7.5万美元。目前受宏观经济与FTX事件影响回落至3万美元左右,下降约60%。
独立地址
自主网上线以来,Arbitrum的独立地址数增长显著。进入10月日均新增地址为6000左右;11月后日均新增地址突破1万关口,约为10月的2倍,新增最高点在10月24日,日均新增为1.7万,且呈持续上升趋势。
日活跃用户
9月至10月间,Arbitrum的活跃用户数维持在3万左右。进入10月后出现爆发式增长,推测主要与搏取空投交互相关。近几日达到年内高点日活跃用户数超6.4万。
TVL
进入9月Arbitrum的TVL一直在9.3亿美金上下浮动,11月8日达阶段性高点超10亿美金。FTX事件发生后之后下跌至8.9亿美金,目前处于回升状态。
链上应用
Arbitrum生态中TVL排名前十的应用分别是:GMX、Stargate、Uniswap V3、Curve、Sushi、Synapse、AAVE V3、Radiant、Vesta Finance、Beefy。值得注意的是,GMX的TVL占前十位应用总TVL的48.73%,达3.94亿美元。GMX是一个现货与永续合约交易的DEX平台,聚焦于衍生品业务,前身为BSC上的Gambit,后迁移至Arbitrum同时支持Avalanche。
跨链
目前,使用Arbitrum进行跨链的用户约为45.4万人,跨链总金额为198.7万枚ETH(按市价折算约为23亿美元);截止至11月21日,7日内存款人数为2万人,7日内跨链总金额接近2万枚ETH。与其它L2协议Optimism、zkSync、StarkNet相比,除Optimism在7日内存款人数为10万之外,其余三个维度的数据均处于领先位置。
Gas
从gas费用来看,Arbitrum在众多L2协议中转账费用排名第三,比以太坊L1的转账成本低了93%。Swap的费用在L2协议中排名第二,比在以太坊L1进行swap的成本低96%。(注:下图中所显示的费用是浮动的,但变化幅度相对较小)
NFT
以Opensea为例,30天内Arbitrum中排名前5的NFT总交易额为1025 ETH,比同为L2扩容方案的Optimism高出103%。NFT最高地板价格为0.38 ETH,是Optimism生态中 NFT最高地板价格的38倍。
Arbitrum未来展望
综上所述,Arbitrum很好的继承了以太坊的DeFi基因,众多DeFi OG项目迁移至Arbitrum进行持续建设,它们的存在为生态带来了稳定的用户基础;Arbitrum与以太坊L1保持高度兼容,支持任何EVM语言为开发者带极大便利,同时可以共享以太坊生态庞大的开发者社区资源;比以太主网低超90%的gas增加了用户对链上交易的接受度,以上几方面为孕育DeFi创新应用创造了一个包容度很高的环境。其次,为适应游戏与社交的高频交互需要Arbitrum开发了新链Nova作为解决方案,与其DeFi生态隔离开也是一次不错的尝试,不过与Polygon目前已经相对成熟的游戏、社交生态相比还存在一定差距。从这个角度看,未来Arbitrum在DeFi层面的发展更加值得期待。
*本文以上内容均为观点阐述,非投资建议。