| title | Cosmos SDK 模块 |
|---|
SDK 模块通过将 Hyperlane 直接集成到基于 Cosmos SDK 的链中,实现无缝的跨链通信。该模块为 Cosmos 链提供了一种无需许可的方式来与外部生态系统通信,包括 EVM 和其他区块链。
虽然 Hyperlane 已经通过 CosmWasm 支持 Cosmos 链,但该模块通过使 Cosmos SDK 链(无论是否支持 CosmWasm)能够利用 Hyperlane 的互操作性功能,扩展了可访问性。
- Hyperlane 兼容性: 该模块完全实现了 Hyperlane 消息传递协议,在所有 Hyperlane 兼容链之间实现无缝的跨链功能。
- Hyperlane Warp 路由 (HWR): 利用核心功能,可以在所有 Hyperlane 兼容链之间创建和转移代币。
- 端到端互操作解决方案:为基于 Cosmos SDK 的链实现 Hyperlane 跨链互操作性框架的消息传递、传输和安全模块。
- 无需许可和开源:任何人都可以部署和配置该模块以满足其需求,无需依赖中介。
- 由 KYVE 构建:由 KYVE 团队开发,将 Cosmos 互操作性扩展到 IBC 之外。
core 模块旨在实现 Hyperlane 协议的基本功能,用于分发和处理消息,然后可供 warp 等应用程序使用。它包括邮箱并注册在子模块中实现的钩子。
-
负责分发和处理消息
-
确保重放保护
-
指定
default或required钩子,如IGP或MerkleTreeHook -
调用已注册的
PostDispatch钩子 -
重要方法:
dispatch()process()
跨链安全和后分发是具有专用 keeper 和对核心 keeper 受限访问的子模块。这种架构设计旨在促进可扩展性,允许开发者无缝集成自己的实现。
该子模块实现 ISM 逻辑,负责验证在目标链上传递的跨链消息确实在源链上发送。模块化设计允许开发者轻松添加自定义 ISM 实现。目前有三种 ISM 类型可用:MessageIdMultisig、MerkleRootMultisig 和 Noop。
type IInterchainSecurityModule interface { Verify(ctx context.Context, ismId HexAddress, metadata []byte, message HyperlaneMessage) (bool, error)}
MultisigIsm
- 验证
n个验证器中有m个已签署消息的有效性 MessageIdMultisig→ 审查友好,最小化 gasMerkleRootMultisig→ 抗审查保证- 重要方法:
verify()
02_post_dispatch
该子模块实现 PostDispatch 接口和钩子实例,如 InterchainGasPaymaster 或 MerkleTreeHook。模块化设计允许开发者轻松添加自定义 PostDispatch 钩子实现。
type PostDispatchHook interface { HookType() uint8 SupportsMetadata(metadata any) bool PostDispatch(ctx sdk.Context, metadata util.StandardHookMetadata, message util.HyperlaneMessage, maxFee sdk.Coins) (sdk.Coins, error) QuoteDispatch(ctx context.Context, hookId HexAddress, metadata util.StandardHookMetadata, message HyperlaneMessage) (sdk.Coins, error)}
InterchainGasPaymaster
-
允许消息发送者向中继器支付费用以在目标链上传递消息
-
DestinationGasConfig用于确定正确的InterchainGasPayment -
重要方法:
postDispatch()payForGas()claim()
MerkleTreeHook
-
将分发的消息插入链上默克尔树
-
MessageIdMultisig和MerkleRootMultisigISM 必需 -
重要方法:
postDispatch()InsertedIntoTree()(事件)
warp 基于核心功能构建,通过在已通过 Hyperlane 连接的链之间启用代币创建和跨链转账。这些代币通过特定的 ISM 利用模块化安全性。
-
目前有两种代币类型可用:
- 抵押品: 在源链上锁定代币作为跨链转账的抵押品。
- 合成: 在目标链上铸造新代币来代表原始代币。
-
重要方法:
createToken()remoteTransfer()enrollRemoteRouter()
- 实例而不是合约
- ID 而不是合约地址
- 代币:没有原生代币,这对 IGP 有影响,必须指定用于 gas 支付的
denom。同样,没有NativeCollateralToken。

