在上一篇文章中,我们介绍了Arbitrum的核心组件,包括排序器、Validator、SequencerInbox合约、Rollup Block和非交互式欺诈证明。本文将深入探讨与跨链消息传递及抗审查交易入口相关的核心组件,帮助您全面理解Arbitrum的工作原理。
跨链与桥接的基本原理
跨链交易可分为L1到L2(充值)和L2到L1(提现)两个方向。需要注意的是,这里的“充值”和“提现”不一定涉及资产转移,也可能是不附带资产的消息传递。
与传统见证人模式的跨链桥不同,Rollup与以太坊主网之间的跨链行为在结构上具有本质区别。由于Layer2的状态由记录在Layer1上的数据决定,使用Rollup官方跨链桥在运作结构上是绝对安全的。
从用户角度看,Layer2像一条独立的链,但实际上它只是Rollup向用户展示的快速窗口,真正的链式结构始终记录在Layer1上。因此,我们可以将L2视为“在Layer1上创建的一条链”。
可重试票据机制
跨链交易具有异步和非原子性的特点,无法保证另一侧一定会在特定时间点执行操作。为了解决可能出现的软性问题,Arbitrum引入了可重试票据(Retryable Ticket)机制,确保不会发生资金卡住等硬性问题。
可重试票据是使用Arbitrum官方桥充值时的基本工具,其生命周期分为三个步骤:
- 在L1上提交票据:通过Delayed Inbox合约的createRetryableTicket()方法创建并提交充值票据
- L2上自动兑付:在大多数情况下,排序器会自动帮用户兑付票据
- L2上手动兑付:在边缘情况(如L2上gas价格激增)下,用户需要手动操作兑付
需要注意的是,如果自动兑付失败,用户需要在7日内手动兑付票据,否则可能导致资金永久损失或需要支付额外保存费用。
与充值不同,提现流程中没有Retryables概念,因为:
- 提现过程不存在自动兑付,需要用户手动与Outbox合约交互
- 提现不存在票据过期问题,只要过了挑战期,可以在任意时间领取
👉 探索更多跨链策略
ERC-20资产跨链与Gateway系统
ERC-20资产跨链涉及复杂的技术问题,包括代币部署、地址映射和功能兼容性等。Arbitrum通过Gateway系统解决了大部分ERC-20跨链的痛点。
Gateway系统具有以下特性:
- Gateway组件在L1和L2成对出现
- Gateway Router负责维护Token地址映射和网关映射
- 支持StandardERC20 gateway、Generic-custom gateway和Custom gateway等类型,解决不同功能ERC-20的桥接问题
以WETH跨链为例,直接跨链会导致问题:
- 无法在L2上将WETH解封装为ETH,因为L2上没有对应的锁仓ETH
- 新生成的WETH跨回L1后也无法解封装为ETH
因此,WETH在跨链时需要先解封装为ETH,跨链后再封装为WETH,这正是WETH Gateway的作用。对于具有更复杂逻辑的代币,需要精心设计的自定义Gateway来确保正常跨链工作。
慢收件箱Delayed Inbox的功能
与专用于接收排序器发布的L2交易Batch的快箱(SequencerInbox)相对应,慢箱(Delayed Inbox)承担着重要功能:
处理L1到L2的充值行为:用户通过慢箱进行充值,排序器监听后再反映在L2上,最终包含进交易序列中。直接向快箱提交充值交易会干扰Layer2的正常交易排序。
抗审查机制:用户提交至慢箱的交易通常会在10分钟内被处理。如果排序器恶意忽略请求,慢箱提供强制归集force inclusion功能:
- 交易提交24小时后仍未处理,用户可在Layer1上手动触发force inclusion函数
- 将交易强制归集到快箱中,被全体Arbitrum One节点监听到
- 最终强制包含进Layer2交易序列中
慢箱的核心函数包括:
- depositETH():简易ETH充值函数
- createRetryableTicket():灵活的ETH、ERC20和消息充值函数
- forceInclusion():强制归集功能,任何人都可调用
出站箱Outbox的作用
出站箱Outbox是提现行为的记录和管理系统:
- 提现需要等待约7天的挑战期结束,Rollup Block最终敲定后才能实施
- 用户向Outbox合约提交Merkle Proof,完成提现过程
- Outbox记录已处理的跨链消息,防止重放攻击
ETH充值与提现全流程
ETH充值流程
- 用户调用慢箱的depositETH()函数
- 函数调用bridge.enqueueDelayedMessage(),在bridge合约中记录消息并保管ETH
- 排序器监听并反映至L2数据库
- 排序器将充值记录包含进batch,提交给快箱合约
ETH提现流程
- 用户在L2调用ArbSys合约的withdrawEth()函数,销毁相应ETH
- 排序器将提现请求发送至快箱
- Validator节点创建包含提款交易的新Rollup Block
- 挑战期结束后,用户在L1调用Outbox.executeTransaction()函数
- Outbox确认无误后,解锁bridge中的ETH发送给用户
快速提现与强制提现方案
快速提现方案
使用第三方跨链桥可规避官方桥的挑战期等待:
- 原子锁交换:双方在各自链内进行资产互换,具有原子性但流动性稀缺
- 见证人跨链桥:第三方桥根据已提交至Layer1的数据进行操作,安全性不如官方桥
强制提现机制
force Inclusion()功能可用于对抗定序器审查,适用于各种交易类型。以强制提现为例:
- 调用慢箱合约的inbox.sendL2Message(),输入withdrawEth()参数
- 等待24小时强制归集等待期
- 调用快箱的forceInclusion()进行强制归集
- 在Outbox中完成提现
👉 查看实时跨链工具
常见问题
Arbitrum官方桥的安全性如何?
Arbitrum官方桥在结构上是绝对安全的,因为Layer2的状态由记录在Layer1上的数据决定。与依赖运营者的见证人模式跨链桥不同,官方桥的安全性基于以太坊主网的安全保证。
可重试票据失败怎么办?
如果自动兑付失败,用户需要在7日内手动兑付票据。否则可能导致资金永久损失或需要支付保存费用。手动兑付通过L2上的相应操作完成。
Gateway系统解决了哪些问题?
Gateway系统解决了ERC-20代币跨链的复杂问题,包括地址映射、功能兼容性和特殊代币逻辑处理。通过不同类型的Gateway,支持各种ERC-20代币的安全跨链。
强制归集功能如何抗审查?
通过慢箱的force inclusion功能,用户可以在交易被排序器忽略24小时后,强制将交易包含进Layer2交易序列中。这确保了排序器无法永久审查任何方向的交易。
提现为什么需要等待挑战期?
提现需要约7天的挑战期是为了确保Rollup Block的最终确定性。在此期间,验证者可以对无效交易提出挑战,保证跨链交易的安全性。
第三方跨链桥与官方桥有何区别?
第三方跨链桥通常采用见证人模式,安全性取决于运营者。官方桥直接基于Rollup协议,结构上更安全但需要等待挑战期。用户可根据需求选择适合的跨链方式。