本文希望通过填补一些L2到L1之间的知识空缺,在使用Arbitrum浏览器的过程中,以链上数据的角度帮助大家了解Arbitrum网络。
我们假设读者具有一定对以太坊主网的认知(可参考成为链上数据分析师之路)
Layer2)方案:状态通道、侧链、Plasma和Rollup。其中,Rollups目前占据了绝对的市场份额,它将原始交易数据汇总(Rollup)并存放在以太坊Layer 1(L1)上,而成本高昂的执行和存储移至Layer 2(L2)。同时,为该批次交易生成“证明”,然后将这个证明发布在主网上。因此,Rollup的安全性由Layer 1保证,比侧链之类的其他解决方案更安全
Rollups 主要分为 ZK-Rollups 和 Optimistic Rollups,二者的主要区别在于验证交易的方法,一个证明而另一个证伪。前者不依赖对任何网络参与者的信任,利用零知识证明的密码学方法证明交易的合法性(证明)。但由于其复杂的证明机制,仅限于简单的交易,且生成有效证明复杂且耗时长,市场份额较低。后者(Optimistic Rollups)顾名思义,假设所有新添加的Rollup都是真实的,除非在7天内网络用户提出异议(证伪)。拥有较高的交易处理效率,同时保证较高的安全性,是一种目前被市场认可的权衡方案。
我们这次的主角是占据市场份额超过50%的Arbitrum One。
Arbitrum虚拟机(AVM)读取L1链上的收件箱合约,并以即定的方式执行计算。ArbOS(Arbitrum Layer2的操作系统)则在AVM上运行,并执行Arbitrum L2链上的智能合约。
除了上述的重要组成部分,验证者是Arbitrum生态系统中的主要参与者。验证者是节点,观察Arbitrum Layer2上的活动并推进rollup链状态。注意,不是所有的节点都是验证者。验证Arbitrum链是完全无权需许可的。
为了方便阅读浏览器中的链上数据,我们需要了解Arbitrum交易的生命周期:
用户将交易发送至收件箱
对于L2上的原生DApp,用户可以通过钱包直接在L2提交交易
对于从L1向L2存款这样的操作,用户需要向Arbitrum在L1中的Delayed Inbox合约发送交易
2. 验证者在收件箱中读取这些交易,并在L2执行
这些交易由AVM以先到先得的方式执行,输入排序器收件箱中的交易,进入Arbitrum L2执行过程。Arbitrum L2 上的验证者在收件箱中读取这些交易,并以确定性的方式一起执行它们。
3.排序器在L1提交用户的交易
Arbitrum 上的验证者将提出一个包含用户交易执行的Rollup块。一旦产生 rollup 块,将会有一个为期一周的争议挑战,直到交易在 Ethereum L1 上得到确认。
4.争议期后交易得到L1的最终确认
在一周的争议窗口之后,如果没有人对区块内交易的正确性提出异议,则该区块将由以太坊 Layer1 确认。
下面,我们会以Arbitrum中常见的两类操作——$ETH 和 $ERC-20 在L1/L2之间的存取款为例,为大家展示如何在浏览器中查询自己的交易信息。
https://www.oklink.com/zh-cn/eth/tx/0x0bb494bb6cfb438dc9806edc8a1527fcbc441b5457ad359573cfa54f62495fbb
在这笔交易的MessageDelivered事件存有用户在L2的“别名”地址(sender),稍后在L2中会由这个别名地址给用户(0xd13)的转移这笔$ETH.
L2别名 = L1_Contract_ Address 0x1111000000000000000000000000000000001111
3)L2:大约十几分钟后,Arbitrum会将这笔 $ETH 发送到用户在L2的地址(0xd13)。用户可以稍后通过上述“L2别名地址”在OKLink Arbitrum浏览器中查询这笔跨链交易在L2中的情况。
——对交易应生命周期中的第二步
https://www.oklink.com/zh-cn/arbitrum/tx/0x6d46da3fb6c0bd1689db67dcc32c5b177036f16158a015cbf6ac3d4c9a3d56e5
相反地,从L2取回 $ETH 到以太坊主网的操作,则是用户在L2向ArbSys(0x64)发送 $ETH 并调用 withdrawEth(address to) 方法,销毁L2上的 $ETH。
https://www.oklink.com/zh-cn/arbitrum/tx/0x0440d56dfc01f337119ebc72665df1f00c3a4d69c558380eb2c90f0823c1d177
经过7天的挑战期后,用户地址通过调用 Arbitrum 在L1上 Outbox 合约的 executeTransaction 函数,将 Arbitrum Bridge 合约中的 $ETH 发送回用户地址。
——对交易应生命周期中的第四步
https://www.oklink.com/zh-cn/eth/tx/0xb8933b60aa3b35681c96233c8afa1ce4b7fdf89eca362de55507afe503be7fe4?tab=1
需要强调的一个重点是,从 Layer1 到 Layer2 的交易很快就会得到确认,类似于正常的以太坊 Layer1上的 交易。但是,对于从 Layer2 到 Layer1 的交易,在 Layer1 确认交易之前有 1 周的争议期。尽管以太坊链仅在 1 周争议期后才知道 rollup 块的正确性,但由于 Arbitrum 虚拟机的确定性,一旦交易进入收件箱合约,每个观察第 2 层的人都已经知道结果。
要将ERC-20代币从以太坊主网跨到L2,主要由三类合约完成跨链操作:
资产合约:L1和L2上的ERC-20代币合约
网关合约:L1和L2上的真正负责跨链操作的合约
路由合约:L1和L2上负责接收用户请求,并提交到对应的网关合约
This content is only supported in a Lark Docs
将 $USDC 存入Arbitrum网络主要分为三步:
1)L1:向以太坊主网的Arbitrum L1GatewayRouter合约发送一笔交易,调用outboundTransfer 函数
2)L1:Router合约继而将需要发送的 ERC-20 代币(这里是$USDC)存至Arbitrum在L1中的Custom Gateway合约地址
https://www.oklink.com/zh-cn/eth/tx/0x3a060879001d7cca38606261f877cb8a711212114fa7f420e4a6d7ba22fb473e
3)L2:用户在L2上的别名地址会负责向Arbitrum L2中的 Custom Gateway 合约发送交易,调用 finalizeInboundTransfer 方法,在L2铸造代币发送给用户地址
https://www.oklink.com/zh-cn/arbitrum/tx/0x1204ffb31c21267f930fa1461cf7e0c929977250db2985ad611d209dc6f3f267
从Arbitrum取回$USDC的流程和存入基本类似:用户先向L2GatewayRouter合约发起提款交易,经过过网关合约在L2->L1的通信(Retryable Tickets)后,由网关合约将L1上的代币发送给用户。
https://www.oklink.com/zh-cn/eth/tx/0xe48ba71bd9313371402153d2f50586831e1c6c613a5aafa7a7b1ee248cbfcdf8?tab=1
本文从基本的Arbitrum运行机制入手,站在链上数据的角度分析了两类最常见的Ethereum-Arbitrum交易。希望可以为大家入门Arbitrum提供帮助~