Opside推出NCRC协议,允许无需信任的原生跨Rollup通信
时间:2023-08-22 来源:区块链网络 作者:区块律动BlockBeat
原文来源:Opside 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 是完全一致的。用户在 Rollup1 上发起到 Rollup2 的跨链交易,整个流程将自动完成,包括以下步骤: 首先,跨 Rollup 交易发起者 User1 在 Rollup1 上调用 native bridge 的 bridgeAsset 方法,发起跨链交易。该交易中的 destinationNetwork 参数被设置为 Rollup2 的 Rollup ID。这个 Rollup ID 将被用于检索对应的 L1 层桥合约地址。若 Rollup ID 为 0,则代表目标网络为 L1。 接着,这笔交易被 Rollup1 的 sequencer1 打包。跨 rollup 交易的费用,由交易发起者 User1 承担,并支付给所在的 Rollup1 的 sequencer1。Rollup1 的 Bridge service 将跨链资产先转移到在 L1 中的 Rollup1 桥合约。此时 Rollup1 和 L1 分别完成了资产的 burn 操作与 release 操作。 为了完成资产的跨 Rollup 转移,Rollup1 的 Bridge 服务调用 RRC 合约来查询参数 destinationNetwork 对应的目标 Rollup2 信息,从而获取到 Rollup2 在 L1 层的桥合约地址。然后,Rollup2 的桥合约将直接接管这些资产,并通过 bridgeAsset 方法将资产映射到 Rollup2 中。 最终,这笔交易在成功打包并生成证明后,会被 Rollup2 的 Bridge 服务执行 claimAsset 操作。最终,Rollup1 发出的跨链资产安全地到达 Rollup2 指定的地址。 值得一提的是,在整个跨链过程中,用户的资产流经:Rollup1 -> Rollup1 在 L1 的桥合约-> Rollup2 在 L1 的桥合约-> Rollup2。也就是说,用户的资产没有经过任何第三方协议,而是复用了 Rollup 自带的 native bridge,整个流程都是安全且无需信任的。 当用户在 Rollup1 上执行跨链操作,选择 Rollup2 作为目标,技术流程实际上涉及 Rollup1、L1 以及 Rollup2 这三者。然而,用户在此过程中并不需要感知 L1 的存在,他们的体验只是从 Rollup1 直接跨到了 Rollup2。背后的实际情况是 跨链资产在 L1 中进行了 2 次桥接操作,使得用户感受到的是 Rollup1 到 Rollup2 的无缝连接。在这个过程中,L1 上的操作将自动处理,用户不需要有其他的操作。对用户而言,他们所在的当前 Rollup 可以实现向 L1 和任意其他 Rollup 进行跨链操作。这种设计使得用户体验更加流畅,同时隐藏了底层复杂性。 NCRC 已经在 Opside 测试网上线 Opside 目前已经在测试网上实现了原生跨 Rollup 通信。现在任何人都可以在官网体验。我们也欢迎用户、开发者来帮助我们发现可能存在的 bug 和安全性风险,也欢迎提任何有价值的建议。 我们相信,一个无需信任的原生跨 Rollup 通信,不仅能安全地共享所有 Rollup 的流动性,也将提供更加强大的多 Rollup 互操作性,从而为去中心化应用和 DeFi 协议开辟新的可能性。 本文来自投稿,不代表 BlockBeats 观点 Rollup Opside 项目动态 前沿动态,一手掌握 |