原生桥实现我们研究了当前主流的 Rollup 方案的原生桥实现原理,并从 Optimistic 和 zkSync 方案中各选取一个代表,进行对比。 ArbitrumArbitrum 协议利用其 L1、L2 之间的通信能力,理论上可以无须信任的将任意形式的以太坊资产(包括 Ether、ERC20、ERC721 等)在 L1、L2 之间转移。当将资产从 L1 转入 L2 时,资产被存入一个 L1 上的 Arbitrum 桥合约中,之后一笔相同数量的资产在 L2 上被铸造并存入指定地址;而将资产从 L2 转回 L1 时,资产将在 L2 上被销毁,随后等量的资产将在 L1 的桥合约中变为可用。此外,从 L2 赎回资产到 L1 时,有一个关键性的区别是,用户发送交易后,必须等待一个挑战期的结束,才能最终在 L1 上执行。这是由 Optimistic Rollup 安全模型决定的。 值得注意的是,官方建议使用「可重试票据 Retryable Tickets」机制进行 L1、L2 之间的通信。可重试票据的运作方式大致如下:L1 向 L2 发起的交易首先被存入 inbox 中,并附带 calldata、callvalue、gas info 等交易参数。当这笔交易首次执行失败后,它将被放入 L2 的「重试缓冲区(retry buffer)」中,这意味着在一段时间内(通常为一个挑战期,即大约一周),任何人都可以通过重新执行这笔交易来赎回票据。L2 至 L1 的重试交易没有时间限制,争议期结束后的任何时间点都可进行。 这种机制设计主要是为了应对这样的场景:当某个用户希望将某笔 token 从 L1 存入 L2,首先会将这些 token 存入 L1 的桥合约中,同时在 L2 上铸造等量的 token。假设 L1 上的交易已经完成,但是 L2 上的交易却因为手续费不足失败了,这会导致一个严重问题:用户在 L1 上的 token 已经转出,但是在 L2 上却没收到 token,实际上,这些 token 被锁在了 L1 的合约里。通过可重试票据机制,用户(或者其他任何人),可以在一周内,使用足够的手续费重新执行这笔交易,并最终在 L2 上获得 token。 以下是 Arbitrum 原生桥的基本步骤: L1 ->L2
L2 -> L1
详情可参考 官方文档。 zkSync (责任编辑:admin) |