Skip to content

Latest commit

 

History

History
138 lines (82 loc) · 47.9 KB

File metadata and controls

138 lines (82 loc) · 47.9 KB
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 之外。

模块概述

/img/cosmos-sdk-implementation/hyperlane-cosmos (8).svg

x/core

core 模块旨在实现 Hyperlane 协议的基本功能,用于分发和处理消息,然后可供 warp 等应用程序使用。它包括邮箱并注册在子模块中实现的钩子。

邮箱

  • 负责分发和处理消息

  • 确保重放保护

  • 指定 defaultrequired 钩子,如 IGPMerkleTreeHook

  • 调用已注册的 PostDispatch 钩子

  • 重要方法:

    • dispatch()
    • process()

/img/cosmos-sdk-implementation/hyperlane-cosmos (2).svg

子模块

跨链安全和后分发是具有专用 keeper 和对核心 keeper 受限访问的子模块。这种架构设计旨在促进可扩展性,允许开发者无缝集成自己的实现。

01_interchain_security

该子模块实现 ISM 逻辑,负责验证在目标链上传递的跨链消息确实在源链上发送。模块化设计允许开发者轻松添加自定义 ISM 实现。目前有三种 ISM 类型可用:MessageIdMultisigMerkleRootMultisigNoop

type IInterchainSecurityModule interface {	Verify(ctx context.Context, ismId HexAddress, metadata []byte, message HyperlaneMessage) (bool, error)}

MultisigIsm

  • 验证 n 个验证器中有 m 个已签署消息的有效性
  • MessageIdMultisig → 审查友好,最小化 gas
  • MerkleRootMultisig → 抗审查保证
  • 重要方法:
    • verify()

/img/cosmos-sdk-implementation/hyperlane-cosmos (3).svg

02_post_dispatch

该子模块实现 PostDispatch 接口和钩子实例,如 InterchainGasPaymasterMerkleTreeHook。模块化设计允许开发者轻松添加自定义 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()

/img/cosmos-sdk-implementation/hyperlane-cosmos (9).svg

/img/cosmos-sdk-implementation/hyperlane-cosmos (10).svg

MerkleTreeHook

  • 将分发的消息插入链上默克尔树

  • MessageIdMultisigMerkleRootMultisig ISM 必需

  • 重要方法:

    • postDispatch()
    • InsertedIntoTree() (事件)

x/warp

warp 基于核心功能构建,通过在已通过 Hyperlane 连接的链之间启用代币创建和跨链转账。这些代币通过特定的 ISM 利用模块化安全性。

  • 目前有两种代币类型可用:

    1. 抵押品: 在源链上锁定代币作为跨链转账的抵押品。
    2. 合成: 在目标链上铸造新代币来代表原始代币。
  • 重要方法:

    • createToken()
    • remoteTransfer()
    • enrollRemoteRouter()

/img/cosmos-sdk-implementation/hyperlane-cosmos (5).svg

HWR - 远程转账生命周期

Dispatch()

/img/cosmos-sdk-implementation/image.png

Process()

/img/cosmos-sdk-implementation/image_1.png

EVM / Cosmos SDK 差异

EVM ≠ Cosmos SDK

  1. 实例而不是合约
  2. ID 而不是合约地址
  3. 代币:没有原生代币,这对 IGP 有影响,必须指定用于 gas 支付的 denom。同样,没有 NativeCollateralToken

工具集成

Hyperlane 代理和 CLI 对原生 Cosmos SDK 模块的支持正在开发中。部署 HWR 需要手动设置所有必要组件(邮箱、ISM、IGP、代币等)并执行正确的交易。