如何使用Hyperlane连接您的链
前提条件
任何人都可以开始这个快速入门指南,只要他们拥有以下工件和资产:
- 一个新的、自定义的或预先存在的网络,包括以下元数据:
- 链名称,例如
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
中的配置示例内容
$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. 核心
接下来,让我们配置、部署和测试您自定义链的核心合约。
初始化配置
- 从您的本地环境,将您有资金的部署者地址的私钥或助记词设置为
HYP_KEY
。例如:export HYP_KEY='<YOUR_PRIVATE_KEY>'
- 从同一终端实例,运行:
hyperlane core init
部署配置将写入./configs/core-config.yaml
./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
的文件
$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
🎉 恭喜!您已成功向您的自定义链发送了消息
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。
恭喜!您已成功将Hyperlane部署到您的链上并将您的工作添加到Hyperlane注册表
感谢您为无需许可的互操作性未来做出贡献 🫡
投入生产
社区运行的基础设施
作为公共产品,Hyperlane的核心开发团队 - Abacus Works - 可以免费帮助您的主网链投入生产。请在您的PR中提出此请求,每两周添加一批新链。
这包括运行连接您的链到网络的中继器,将您的链添加到Explorer,以及在您链的默认验证器集中运行一个 验证器。没有持续的成本或锁定 - 您可以随时选择将中继器迁移到自托管选项或更改验证器集。
自托管基础设施
具有devops经验的链,如Stride,选择运行自己的中继器。虽然这确实有一些运营负担,但这允许他们按照自己的节奏更快地添加新链。此外,他们可以选择设置或补贴与中继相关的链间gas成本。有关更多信息,请参阅运营文档。