跳到主要内容

如何使用Hyperlane连接您的链

信息
  • 本指南将帮助您尽快将Hyperlane部署到您的新链上进行测试,而非生产环境。这包括核心邮箱和ISM合约以及您正在桥接的资产的warp路由合约。
  • 要查看已支持的链,请访问注册表
  • 如果您需要任何帮助,请在Discord上的#developers频道联系我们或与我们联系

前提条件

任何人都可以开始这个快速入门指南,只要他们拥有以下工件和资产:

  • 一个新的、自定义的或预先存在的网络,包括以下元数据:
    • 链名称,例如ethereum
    • 链ID,例如1
    • RPC URL,例如https://eth.llamarpc.com
  • 部署者钱包/EOA私钥或助记词
    • 这个EOA应该在您的自定义链和您将要传递消息的任何链上都有资金
  • Hyperlane CLI

1. 注册表

让我们创建一个自定义链配置,运行:

hyperlane registry init

按照提示设置您的链元数据。设置区块或gas属性是可选的。

现在,在$HOME/.hyperlane/chains下,您将找到一个以您自定义链名称命名的新文件夹,以及该文件夹中名为metadata.yaml的文件。

$HOME/.hyperlane/chains/yourchain/metadata.yaml中的配置示例内容

# yaml-language-server: $schema=../schema.json
# Metadata for your custom chain

blockExplorers:
- apiUrl: https://explorer.yourchain.com/api
apiKey: XXXX # helpful to avoid rate limiting on the contract verification API
family: etherscan #explorer you're using, also supporting routescan or blockscout
name: Chainscan
url: https://explorer.yourchain.com
blocks:
confirmations: 1
estimateBlockTime: 1
reorgPeriod: 0
chainId: 171717
displayName: Chain Name
domainId: 171717
isTestnet: true # optional
name: yourchain
nativeToken:
name: Ether
symbol: ETH
decimals: 18
protocol: ethereum
rpcUrls:
- http: https://hyper-lane-docs.rpc.caldera.xyz/http

2. 核心

接下来,让我们配置、部署和测试您自定义链的核心合约。

初始化配置

  1. 从您的本地环境,将您有资金的部署者地址的私钥或助记词设置为HYP_KEY。例如:export HYP_KEY='<YOUR_PRIVATE_KEY>'
  2. 从同一终端实例,运行:
hyperlane core init

部署配置将写入./configs/core-config.yaml

# The address that owns and manages the deployed contracts. This account has admin privileges.
owner: "0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb"

# The default Interchain Security Module (ISM) configuration.
defaultIsm:
#`type`: Specifies the type of ISM. Here, it uses a trusted relayer ism.
type: trustedRelayerIsm
#`relayer`: The address of the relayer responsible for processing interchain messages.
relayer: "0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb"

defaultHook:
# A hook configuration that specifies the use of a Merkle Tree.
type: merkleTreeHook

requiredHook:
# The owner address responsible for managing the hook configuration.
owner: "0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb"
# The type of hook. This one applies a protocol fee mechanism.
type: protocolFee
# The address that receives the protocol fees.
beneficiary: "0x16F4898F47c085C41d7Cc6b1dc72B91EA617dcBb"
# The maximum fee allowed by the protocol, in wei.
maxProtocolFee: "100000000000000000"
# The current fee charged by the protocol, set to 0 for testing purposes.
protocolFee: "0"

部署合约

要部署合约,运行:

hyperlane core deploy

使用箭头和回车从主网列表底部选择您的自定义链。所有合约部署需要几分钟时间。

$HOME/.hyperlane/chains下,您将找到一个以您自定义链名称命名的新文件夹,以及该文件夹中名为addresses.yaml的文件

staticMerkleRootMultisigIsmFactory: "0x6906cb4741d3E2322E9f9aA645DfC8AB6F122c47"
staticMessageIdMultisigIsmFactory: "0x3CE97a32d9C8294691cBd2baC09B078EDa75c429"
staticAggregationIsmFactory: "0x81f969fDBF48278Ce09685Ce48e03388B6785aF4"
staticAggregationHookFactory: "0x3d864A3c25F61E3c3A7d02e980453A6E1f0a92A6"
domainRoutingIsmFactory: "0xC4c01f7B03f0fFa77A0265C600dEF7Ad28BCa5A2"
proxyAdmin: "0xABb7175d5F123172E7B7Fa467CC9fE4C2FEdb942"
mailbox: "0x5F58d75A9caDE4e2b191313223978dF049f93b81"
interchainAccountRouter: "0x43c0745b0dE9Cb780816a24ddE63d79Ca99B5dE8"
interchainAccountIsm: "0x9C96dC8f4257413225d6B5C47d1afbafc39B269F"
validatorAnnounce: "0xE3bd39BF92DB385dE6313D6070b035bD934378CB"
testRecipient: "0xa58462b1943Be1469Ed58db690C78583BA34Fd2E"
注意

eth_getStorageAt() 兼容性:某些链可能不使用eth_getStorageAt() API。如果您的部署遇到相关问题,请参阅故障排除指南

发送测试消息

要发送测试消息,运行:

hyperlane send message --relay

--relay标志是可选的,它将消息传递到目标链。

您也可以在后台运行中继器:

hyperlane relayer --chains yourchain,sepolia
success

🎉 恭喜!您已成功向您的自定义链发送了消息

3. Warp路由

现在您的链上已经有了Hyperlane邮箱和核心合约,是时候在您的链和任何其他Hyperlane链之间设置代币桥接了。

继续查看部署Warp路由文档了解更多详情。

4. 提交到注册表

如果您希望其他链也能与您连接,并将其投入生产,请提交注册表PR。

确保信息完整

确保您的元数据完整:

  • 在文件夹内添加logo.svg文件
  • 包含标识部署团队的Deployer信息
  • 如果链是测试网,请指明isTestnet true
  • 如果您有gnosis safe服务,请添加api url gnosisSafeTransactionServiceUrl
  • 对yaml文件进行lint处理并按字母顺序排序

提交到GitHub

首先,导航到您的注册表本地实例并提交更改

cd ~/.hyperlane && git init && git add . && git commit

然后,将本地注册表与规范注册表同步

git remote add canonical git@github.com:hyperlane-xyz/hyperlane-registry.git
git pull canonical main --rebase

最后,将本地注册表推送到github fork并提交PR。请在您的PR中包含一个changeset

success

恭喜!您已成功将Hyperlane部署到您的链上并将您的工作添加到Hyperlane注册表

感谢您为无需许可的互操作性未来做出贡献 🫡

投入生产

社区运行的基础设施

作为公共产品,Hyperlane的核心开发团队 - Abacus Works - 可以免费帮助您的主网链投入生产。请在您的PR中提出此请求,每两周添加一批新链。

这包括运行连接您的链到网络的中继器,将您的链添加到Explorer,以及在您链的默认验证器集中运行一个验证器。没有持续的成本或锁定 - 您可以随时选择将中继器迁移到自托管选项或更改验证器集。

自托管基础设施

具有devops经验的链,如Stride,选择运行自己的中继器。虽然这确实有一些运营负担,但这允许他们按照自己的节奏更快地添加新链。此外,他们可以选择设置或补贴与中继相关的链间gas成本。有关更多信息,请参阅运营文档。