Opside推出NCRC协议,允许无需信任的原生跨Rollup通信
TL; DR
Opside 的 NCRC(Native Cross Rollup Communication) 协议提供了一种无需信任的 Rollup 互操作性解决方案。NCRC 协议并不是在各个 Rollup 上额外添加一个第三方桥,而是在系统层面改造了 ZK-Rollup 自带的 bridge(native bridge),从而直接使用各个 ZK-Rollup 的 native bridge 来实现跨 Rollup 通信。这样的做法更加简洁和彻底,既继承了 native bridge 绝对的安全性,也避免了第三方桥所带来的系统复杂度和信任成本。
为什么我们需要无需信任的跨 Rollup 通信?
Rollup 能够显著提高区块链网络的可扩展性、降低交易成本并提高整体效率,它们受到越来越多的关注和使用。Opside 为Web3应用提供 ZK-RaaS 服务,任何开发者都可以通过 Opside Rollup Launchbase 创建自己的 Rollup。在这个多 Rollup 的时代里,我们预计会有越来越多的 Rollup 共存,因此不同的 Layer 2 之间的无缝互操作性变得至关重要。目前,Rollup 之间运作相对孤立,缺乏实时的跨链通信和资产互通。这种隔离导致了碎片化的格局,其中资产在特定的 Rollup 内被隔离,限制了它们在不同网络之间的自由流动和利用。
缺乏高效的跨 Rollup 通信不仅限制了各个 Rollup 的潜力,还影响了整体用户体验。用户在尝试在 Rollup 之间转移资产或执行跨链交易时面临繁琐而耗时的流程。这种次优的体验削弱了 Rollup 的吸引力,并在一定程度上阻碍了二层扩展方案的广泛采用。
目前的跨 Rollup 桥接方案大部分是在 Rollup 链上部署新的一套跨链合约,然后通过多链流动性激励机制来提供资产的跨链。这些方案并不是通用的消息跨链,同时带来了中心化和信任的风险。
为了释放多 Rollup 时代的全部潜力,迫切需要一种无需信任的通用的跨 Rollup 通信协议。
Opside 的解决方案: Native Cross Rollup Communication
实际上,每一个 ZK-Rollup 都自带一个L1<>L2的 bridge,我们称之为 Native bridge。与第三方 bridge 采用流动性方案不同,Native bridge 是唯一的“mint-burn”跨链机制。它由零知识证明来保证安全性,同时也是无需信任的。一个 Rollup 上所有的资产,都来自 native bridge 的 deposit 交易,同时也都由 native bridge 来提供最终的安全性背书。
我们坚信奥卡姆剃刀原理,“如无必要,勿增实体(Entities are not to be multiplied beyond necessity.)”。第三方桥拥有更加便宜和快捷的跨链体验,但也带来了更多的信任成本和安全风险。前不久的 Multichain 事件,就是一个案例。因此,在一开始,Opside 的跨 rollup 通信的灵感就简单得出奇:直接使用 native bridge 来实现多 rollup 互操作性,而不是新增一个第三方的桥。 这就有了现在的 NCRC(Native Cross Rollup Communication) 协议。
NCRC 的前提条件
多个 Rollup 之间实现 NCRC 需要满足以下 2 个前提条件:
-
这些 Rollup 属于 ZK-Rollup 类型
-
这些 Rollup 在相同的L1上
满足以上 2 个条件的 ZK-Rollups,在理论上,拥有和L1一样的安全性。同样地,这些 Rollup 之间的 native bridge 的安全等级是一样的,且无需信任对方。所有的 NCRC 交易都是被 validity proof 所验证的,这也是 NCRC 的安全性保证的根本来源。
Rollup Recognition Contract(RRC)
截至 2023 年 8 月,已经有多个 ZK-Rollups 主网上线了,包括 Polygon zkEVM、zkSync Era、Linea 等。然而,这些 ZK-Rollups 之间是独立不相关的,用户的资产也因此碎片化。造成这种问题的根本原因在于,它们在L1(以太坊主网)上的合约是不相关的。它们感受不到对方的存在,更无法实现原生 Rollup bridge 的直接通信。
因此,我们要做的第一步,是在L1上部署一个特殊的合约,来让 Rollup 互相发现和识别。我们称之为 RRC(Rollup Recognition Contract)。RRC 负责管理所有参与 NCRC 的 ZK-Rollups,包括 Rollup 的新增、暂停、退出等。RRC 中的每个 Rollup,都会有一个专属的 Rollup ID,L1的 ID 则固定为 0 。
Rollup 上的地址在 native bridge 发起跨 Rollup 交易时,可以指定目标的 Rollup ID:
-
如果 Rollup ID 为 0 ,则表示把消息跨到L1,例如 withdrawal
-
如果 Rollup ID 不为 0 ,则表示要把消息跨到其他 Rollup
Opside 将在每一个L1 层都部署了一个 RRC 合约,并允许对应的 ZK-Rollup 无需许可地加入或者退出。这个 RRC 合约将用于维护各个 Rollup ID 对应的 Rollup 信息,包括L1上的 bridge 合约地址等。值得一提的是,RRC 合约只是负责提供数据检索服务,不会跟跨链资产产生直接联系。
兼容 native bridge 的 smart contract 与 service
一般来说,一个 Rollup 的 native bridge 分成 3 个模块:L1上的 bridge 合约、L2上的 bridge 合约,以及一个 bridge service 负责传递信息。NCRC 协议在底层复用了这些模块,并在其基础上做了更高级的封装。主要的改动如下:
-
L2上的 bridge 合约:在保留原有方法的基础上,添加了新的 bridgeAsset 方法,允许用户在 destinationNetwork 参数中指定目标 Rollup 的 ID
-
L1上的 bridge 合约:封装一个新方法来处理新 bridgeAsset 方法的跨链消息。bridge 合约会在 RRC 合约中根据 Rollup ID 寻找到目标 Rollup 的信息,并将跨链资产转移到目标 Rollup 的 bridge 合约中。跨链资产在那里被 deposit 到目标 Rollup
-
bridge service:负责传递信息,并向用户收取跨 Rollup 交易的手续费
当一个 Rollup 完成以上 NCRC 相关的兼容适配之后,就可以将该 Rollup 注册到 RRC,从而加入原生跨 Rollup 通信网络。
原生跨 Rollup 交易的流程
对于用户来说,NCRC 的操作方式和 rollup 的 native bridge 是完全一致的。用户在 Rollup 1 上发起到 Rollup 2 的跨链交易,整个流程将自动完成,包括以下步骤:
首先,跨 Rollup 交易发起者 User 1 在 Rollup 1 上调用 native bridge 的 bridgeAsset 方法,发起跨链交易。该交易中的 destinationNetwork 参数被设置为 Rollup 2 的 Rollup ID。这个 Rollup ID 将被用于检索对应的 L1 层桥合约地址。若 Rollup ID 为 0 ,则代表目标网络为L1。
接着,这笔交易被 Rollup 1 的 sequencer 1 打包。跨 rollup 交易的费用,由交易发起者 User 1 承担,并支付给所在的 Rollup 1 的 sequencer 1 。Rollup 1 的 Bridge service 将跨链资产先转移到在 L1中的 Rollup 1 桥合约。此时 Rollup 1 和L1分别完成了资产的 burn 操作与 release 操作。
为了完成资产的跨 Rollup 转移,Rollup 1 的 Bridge 服务调用 RRC 合约来查询参数 destinationNetwork 对应的目标 Rollup 2 信息,从而获取到 Rollup 2 在 L1 层的桥合约地址。然后,Rollup 2 的桥合约将直接接管这些资产,并通过 bridgeAsset 方法将资产映射到 Rollup 2 中。
最终,这笔交易在成功打包并生成证明后,会被 Rollup 2 的 Bridge 服务执行 claimAsset 操作。最终,Rollup 1 发出的跨链资产安全地到达 Rollup 2 指定的地址。
值得一提的是,在整个跨链过程中,用户的资产流经:Rollup 1 -> Rollup 1 在L1的桥合约-> Rollup 2 在L1的桥合约-> Rollup 2 。也就是说,用户的资产没有经过任何第三方协议,而是复用了 Rollup 自带的 native bridge,整个流程都是安全且无需信任的。
当用户在 Rollup 1 上执行跨链操作,选择 Rollup 2 作为目标,技术流程实际上涉及 Rollup 1、L1 以及 Rollup 2 这三者。然而,用户在此过程中并不需要感知 L1 的存在,他们的体验只是从 Rollup 1 直接跨到了 Rollup 2 。背后的实际情况是 跨链资产在 L1 中进行了 2 次桥接操作,使得用户感受到的是 Rollup 1 到 Rollup 2 的无缝连接。在这个过程中,L1 上的操作将自动处理,用户不需要有其他的操作。对用户而言,他们所在的当前 Rollup 可以实现向 L1 和任意其他 Rollup 进行跨链操作。这种设计使得用户体验更加流畅,同时隐藏了底层复杂性。
NCRC 已经在 Opside 测试网上线!
Opside 目前已经在测试网上实现了原生跨 Rollup 通信。现在任何人都可以在官网体验 https://pre-alpha-assetshub.opside.network/ 。我们也欢迎用户、开发者来帮助我们发现可能存在的 bug 和安全性风险,也欢迎提任何有价值的建议。
我们相信,一个无需信任的原生跨 Rollup 通信,不仅能安全地共享所有 Rollup 的流动性,也将提供更加强大的多 Rollup 互操作性,从而为去中心化应用和 DeFi 协议开辟新的可能性。