开发者视角中 Wormhole、LayerZero 和 Hyperlane 三大跨链互操作协议有何不同?
2024-10-23 20:10
Wormhole CN
2024-10-23 20:10
订阅此专栏
收藏此文章

作者:Alexander,Catalyst 开发者

编译整理:Wormhole China

区块链的独立性和孤立性让跨链通信成为一个至关重要的领域。随着去中心化应用对跨链互操作的需求日益增长以及跨链互操作协议的发展,开发者对于跨链互操作协议的选择也变得多样。

本文我们将跟随 Catalyst 开发者 Alexande 一起来深入了解一下三大跨链互操作协议——WormholeLayerZeroHyperlane,剖析它们如何在链上实现消息传递及验证,并展示它们各自的设计特点和工作原理。

Wormhole:极简但强大的跨链消息传递协议

Wormhole 的设计哲学极为简洁。它采用了一个主合约 Implementation.sol 来处理所有核心功能,包括:

  • 守护者列表与治理结构(继承自 Governance.sol
  • 消息发布端点 publishMessage(),负责消息的发送
  • 消息验证逻辑(定义在 Messages.sol

使用 Wormhole 发送消息非常简单。首先调用 messageFee() 获取费用,然后通过 publishMessage() 发送消息。该函数允许用户指定可选的 nonce、消息内容以及一致性级别,并会返回一个唯一的消息序列号。重要的是,Wormhole 消息是广播性质的,这意味着它可以在任何支持 Wormhole 的链上被验证。

一旦消息达到了预定的一致性级别(从 1 次确认到最终确认都可以设置),你的消息将被签名,并在 gossip 网络中可供接收方使用。然后可以在目标链上调用 parseAndVerifyVM 来验证,签名将被提取并与消息的哈希值进行比对。

值得注意的是,这种实现没有中继逻辑或链上存储使用。它非常纯粹:发送消息通过合约中的事件触发,验证则通过比对配置好的守护者(Guardians)和签名来完成。最棒的是,如果你愿意,你可以只使用 publishMessage 调用。你可以将 parseAndVerifyVM 复制到你自己的合约中并自定义中继器,甚至可以在 Wormhole 不支持的链上实现 parseAndVerifyVM

Wormhole 的优势在于其极简架构:不需要复杂的中继逻辑或链上存储。消息的发送是通过触发合约事件实现的,而验证则通过与守护者的签名比对来完成。这种结构使开发者可以根据需要自由扩展 Wormhole 的功能。

下图展示了 Wormhole 协议更浅显易懂的跨链传输流程:

Hyperlane:模块化的跨链消息验证平台

相比 Wormhole 的极简架构,Hyperlane 以模块化的方式支持多种验证路径,提供了更多的定制选项。其核心合约 Mailbox.sol 负责消息发送和验证,依赖于外部的跨链安全模块(ISM) 来处理消息验证。这种设计允许开发者选择不同的安全模型,从而适应多种应用场景。

不同于 Wormhole 的单一大合约,Hyperlane 的跨链逻辑被分配给了更小的合约:

  • Mailbox.sol 是主要的接口合约,负责处理消息执行,无论使用何种安全模型。主要功能包括:
    • dispatch() 端点允许发送消息并调用相关的钩子(hooks)。
    • process() 端点用于验证接收到的消息。
    • 读取接收方配置的逻辑
  • 各种 hooks 用于管理费用和中继。
  • 外部 ISM 用于验证消息的真实性。

假设使用默认默认设置发送 Hyperlane 消息时,用户可以调用 quoteDispatch(...) 获取费用,并通过 dispatch() 发送消息。消息的目标链和接收方可以在调用中灵活指定,同时也可以通过元数据钩子(如 InterchainGasPaymaster)来管理中继费用。与 Wormhole 相比,Hyperlane 提供了更大的定制化选项,包括内置的中继支付支持等功能,因此略微复杂一些。不过,它从未变得难以管理。

Hyperlane 使用签名的检查点(Checkpoints)来验证消息,设计的方式是任何后来的签名检查点也会签署之前的检查点。一旦检查点被签署,检查点内的所有消息和之前的消息都可以被验证。Hyperlane 的 Mailbox 会在 ISM 合约上调用 verify(...)

由于消息验证在 Mailbox 外部进行,且没有链上提交,因此你理论上可以直接调用 ism.verify 来避免与 Mailbox 交互,甚至可以自己实现相关逻辑。此外,destination 字段仅在一行代码中强制执行,所以理论上你可以将 process(以及 / 或多签 ISM 验证)逻辑移至你的合约,实现类似 Wormhole 的广播消息功能。(当然,你需要自己跟踪验证者)。

Hyperlane 的消息配置存储在接收方,因此在扩展至新链时,不需要为每个支持链设置新配置,因为你可以编程预测各种配置设置。总结来说,尽管 Hyperlane 提供了更高的定制化,但仍保持了操作的简洁性。

LayerZero:复杂而灵活的跨链互操作协议

相比 Wormhole 和 Hyperlane,LayerZero 的消息传递系统更加复杂。其设计包括两大核心组件:

  • EndpointV2.sol 负责消息流:报价、发送、验证和执行。主要函数是 send(...)
  • 超轻节点(ULNs),有两种类型:接收和发送。发送库实现了对 DVN 的支付、执行者的支付以及发送应用的配置。接收库实现了验证逻辑,比如验证提交和消息验证。

此外,DVNs 需要实现一个合约来报价提交消息的费用,并支付费用;中继者(提交者和执行者)也需要实现类似的合约来接受和报价他们的工作。

在开始发送 LayerZero 消息之前,我们可能需要配置 dApp。LayerZero 提供了一套广泛的配置选项,远超 Wormhole 和 Hyperlane 的总和。你可以配置:区块确认次数、安全阈值、自定义接收和发送库、执行者、最大消息大小以及 DVN 集合。发送消息时,费用货币(Layerzero Token 或 gas)也可以配置。对于每个部署的链,你需要为该链专门设置配置,尽管 Layerzero 允许在一次调用中设置多个配置,但是一旦你为已有的 20 条链添加了一个新链,你需要为这 20 条部署中的每一条链进行重新配置。

要发送消息,你需要调用 quote(...) 获取费用估算,然后使用费用调用 send(...)。对于 Wormhole 和 Hyperlane,这个费用不会经常变化(不包括中继费用),但在 LayerZero 中,你需要为 DVN 支付费用(无论是 Layerzero Token 还是你在多个链上部署时的配置 DVNs)来提交远程链上的消息验证。他们通过调用远程链接收库中的 verify(...) 来完成此操作。每一条 Layerzero 消息都需要每个 DVN 调用 verify 来完成验证。

一旦配置的 DVN 都调用了 verify(在你配置的确认次数后),verifiable(...) 函数会返回 true,然后提交者可以在端点上调用 verify。这会删除接收库中的证明并将其存储在端点中。然后 lzReceive 会被调用,删除端点中的证明,递增 lazy nonce(允许之前已验证但 nonce 较低的消息被执行),并调用接收者。

与 Hyperlane 和 Wormhole 不同,LayerZero 没有最终确认的概念,它有一些默认的确认建议,但仅此而已,一旦达到配置的确认次数,DVN 将提交消息。

实际上,我忽略了一些 LayerZero 的细节:DVN 配置、gas 价格反馈、消息配置、消息限制、允许列表、消息 nonce 和顺序。所有这些加起来让 LayerZero 的链上逻辑非常复杂——支付 DVN、DVN 提交证明、将验证从接收库移至端点、调用 verify 然后是 lzReceive、支付执行者,并一路为每个实体报价——这使用了大量的 gas。

根据我们的测试,发送一条 LayerZero 消息的费用有时是相同 Wormhole 消息的两倍。使用 LayerZero 进行整个 Catalyst 交换比 Wormhole 贵 40%。

总结来说,尽管 LayerZero 具备强大的灵活性,但这种复杂性也带来了更高的 gas 费用。正如上述所说,在许多情况下,使用 LayerZero 进行跨链操作的成本可能是 Wormhole 的两倍。然而,LayerZero 的设计可能更适合那些需要精细控制消息传递流程的用例。

跨链协议的最终确认问题

消息的最终确认是跨链通信中的关键问题。Wormhole 和 Hyperlane 都允许 dApp 开发者自行设定消息的最终确认标准。在 Hyperlane 中,验证者签署的检查点被视为最终确认,这种机制能够确保经济安全;而在 Wormhole 中,最终确认的定义则更加灵活,开发者可以根据需求设置一致性级别。

LayerZero 则没有类似的最终确认机制,它主要依赖配置的区块确认次数。尽管 LayerZero 的灵活性很高,但它的复杂性可能会带来更高的操作成本。

总结

对于希望在不同区块链之间发送消息的开发者来说,选择合适的跨链互操作协议取决于应用需求。Wormhole 以其极简和高效的架构适合需要快速消息传递的项目;Hyperlane 提供了强大的定制化能力,适用于对安全模型有特定要求的应用;而 LayerZero 则为更复杂的用例提供了很大的灵活性,尽管这需要付出一定的复杂性和成本代价。

每种协议都有其独特的优势,开发者可以根据项目需求选择最合适的跨链解决方案。

原文链接:
https://lindgren.xyz/posts/how-interopability-work/


👨‍💻 致开发者:

Wormhole Sigma 初创企业计划中的全球性多链竞赛即 Sigma Sprint 黑客松已开启报名,提供超 100 万美元总奖池和种子基金,并得到 Solana、Sui 和 Circle 赞助以及 Google Cloud 支持!

报名链接:https://sigma.wormhole.com/sprint


想要参与虫洞生态并做出贡献?(🪱,🕳)

Wormhole 中文大使(Fellowship)计划全新升级!欢迎所有对 Wormhole 怀有热情的小伙伴加入我们,一起为 Wormhole 生态做出贡献!

第 ① 步:填写表单报名申请加入:
https://forms.gle/8gKvcrjmtEWcgpWR8

第 ② 步:参加线上 Fellow Call 会议,具体时间另行公布,Wormhole 中文官方推特将会公告,并发送私信通知申请人。

推荐阅读:

关于 Wormhole

Wormhole 是领先的区块链互操作平台,为开发者提供访问 30+ 主流区块链网络上的流动性和用户通道,用例涵盖了 DeFi、NFT、治理等多种应用场景。

Wormhole 协议还得到了 Circle 和 Uniswap 等团队的信赖与使用,迄今为止,该平台已跨链超过 10 亿条消息,安全处理了超过 400 亿美元的资金转移。

关注我们:

Wormhole CN 推特: 
https://twitter.com/wormholechina

Wormhole CN 电报: 
https://t.me/wormholechina

Wormhole 官网: 
https://wormhole.com

Wormhole 官方推特: 
https://twitter.com/wormhole

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Wormhole CN
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开