立即开始
任何人都可以在任何链上部署Hyperlane。 本指南涵盖从新EVM链发送第一条链间信息。在本指南结束时,您将部署并配置好邮箱智能合约和链外代理,从而允许开发人员向您的链发送链间消息或从您的链发送链间消息。
任何人都可以在任何链上部署Hyperlane。 本指南涵盖了从新的EVM链发送第一个链间消息。如果您想部署到Cosmos应用链,请遵循此社区提交的指南。
本指南专门用于演示如何将已有Hyperlane的链连接到没有Hyperlane的新链上。
术语表
local chain:是您要部署Hyperlane的新链。
remote chain:是指已部署 Hyperlane 的链,您希望本地链与之收发信息。
概览
本指南共有五个步骤:
- Set up keys 您将使用它来部署合同、运行验证器和中继器。
- Deploy contracts 到本地链以及本地链可以收发信息的所有远程链。
- Run validators and relayer 使用Kurtosis。验证器为您在步骤2中部署的链间安全模块提供所需的签名。中继器将在已部署合约的链之间传递信息。
- Send a test message 以确认中继器能够在每对链之间传递信息
- Deploy a warp route 跨链发送标令牌
立即开始
1. 设置密钥
您必须设置三个密钥并为其提供资金。
首先,您可以通过对所有三个角色使用相同的十六进制密钥来简化。
密钥角色 | 说明 | 资金需求 |
---|---|---|
合约部署者 | 32字节十六进制私钥 | 在我们需要部署合约的所有链上提供资金。 |
验证者账户 | 将对本地链中的出站消息进行签名的验证器地址列表。只需一个验证器就可以快速启动。 | 只需少量,这样验证者就可以通过一次性交易在链上公布他们的签名位置 |
中继器账户 | 您将操作的单个中继器需要在它将发送消息的每个链上都有一个帐户 | 中继器必须在它所传递的所有链上持有余额。 |
有关如何生成密钥的说明,请参阅agent keys 部分。部署程序密钥必须是十六进制密钥,而验证器和中继程序密钥可以是十六进制或AWS KMS。
如果使用 Foundry's Anvil 在本地网络上进行部署,请使用以下命令为新生成的帐户提供资金。 它使用预先注入资金的私钥之一将 1 ETH 转移到“$YOUR_TARGET_ADDRESS”环境变量中的地址。
cast send $YOUR_TARGET_ADDRESS \
--private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \
--value $(cast tw 1)
2. 部署合约
设置好部署器、验证器和中继器密钥后,就可以使用Hyperlane CLI将智能合约部署到本地和远程链上了。
在本地链上,我们将 进行部署:
- 核心合约,包括可用于发送和接收信息的Mailbox。
我们在所有链将进行部署:
- 可用于验证来自其他本地和远程链的入站消息的 Multisig ISM。
InterchainGasPaymaster
可用于支付中继器传递链间消息的费用。TestRecipient
我们将向其发送信息,以测试一切工作是否正常。
设置
首先,使用NPM安装Hyperlane CLI。需要Node 16 或以上版本。以下命令将在你的机器上全局安装。请参阅package page了解临时安装或从源代码构建等其他方法。
npm install -g @hyperlane-xyz/cli
接下来,确定本地链和远程链需要哪些自定义链配置。任何已经包含在Hyperlane SDK中的链都不需要链配置(但如果想覆盖默认设置,可以选择使用)。 运行以下命令查看默认SDK链:
hyperlane chains list
您可以按空格键选择链。对于需要自定义配置的链,可以使用JSON或YAML手动定义(请参阅 配置示例),或使用以下命令创建:
hyperlane config create chain
现在CLI将知道如何与所有链进行交互,但它还需要知道如何配置链间安全模块(ISM)。
要创建多个ISM配置,您可以使用JSON或YAML手动定义它,请参阅此处example config here),或使用以下命令创建它:
hyperlane config create ism
在被询问关于多重签名类型时,选择message id ism
。在这个指南的背景下,我们将使用 1/1 多重签名,因此选择一个阈值为 1
,并输入您的密钥地址。
Dry Run
在执行部署之前,您可以通过--dry-run
、 -dr
或者 -d
执行dry-run,以确保部署成功,并提供部署的燃料费成本分析。
这不会部署任何合约,但您将能够看到将部署的所有合约,以及在 $OUT_DIR/dry-run_*
处生成的构建。
除了验证即将进行的部署之外,您还可以通过 --key
或者 -k
提供您打算部署的EOA的地址。
这将确保您有大约足够的资金来完成部署,而无需提供访问您的私钥来支付交易。
此外,燃料使用统计数据将显示在控制台中,以便深入了解部署成本。
为了执行一次试运行,你需要在一个单独的终端实例中运行一个Anvil节点。
要启动Anvil节点,请运行 anvil
。
有关Anvil和安装的更多信息,请查看Foundry's Anvil docs。
hyperlane deploy core --dry-run \
--targets chain1,... \ # one of the chains you want to bridge between
--chains $CHAIN_CONFIG_FILE \ # path to chains.yaml config e.g. ./configs/chains.yaml
--ism $MULTISIG_CONFIG_FILE \ # path to ism.yaml config e.g. ./configs/ism.yaml
--artifacts $PREDEPLOYED_ARTIFACT_FILE \ # (optional) in case you want to reuse contracts you've already predeployed
--out $OUT_DIR \ # (optional) deployment contract artifacts; defaults to /artifacts
--key $YOUR_DEPLOYER_ADDRESS # (optional) your account address to be impersonated via Anvil; can also be provided via HYP_KEY env variable
Deploy
现在我们准备使用deploy core
命令部署Hyperlane合约。为了支付交易费用,该命令将需要来自步骤1的合约部署者密钥,可以通过HYP_KEY
环境变量或作为命令参数提供。
hyperlane deploy core \
--targets chain1,chain2,... \ # all the chains you want to bridge between
--chains $CHAIN_CONFIG_FILE \ # path to chains.yaml config e.g. ./configs/chains.yaml
--ism $MULTISIG_CONFIG_FILE \ # path to ism.yaml config e.g. ./configs/ism.yaml
--artifacts $PREDEPLOYED_ARTIFACT_FILE \ # (optional) in case you want to reuse contracts you've already predeployed
--out $OUT_DIR \ # (optional) deployment contract artifacts; defaults to /artifacts
--key $YOUR_DEPLOYER_PRIVATE_KEY # (optional) your private key to pay for transactions; can also be provided via HYP_KEY env variable
验证
部署合同构件默认将写入artifacts/
文件夹。部署程序将创建两个带时间戳的文件,即agent-config-{timestamp}.json
和core-deployment-{timestamp}.json
core-deployment
文件包含按链排列的核心合约地址。
agent-config
文件包含下一步运行Hyperlane代理所需的数据。
3. 运行验证器和中继器
本节介绍如何使用第三方一键部署代理。要自行运行Hyperlane代理二进制文件,请查看Local Agents guide。
我们与 Kurtosis 合作,在云中提供一键式验证器和中继器部署方案。您将获得一个月的试用,在此期间,您的验证器和中继器将在Kurtosis Cloud中免费运行。试用结束后,您需要自行运行验证器和中继器,或者购买 Kurtosis Cloud 订阅。
要开始使用,请使用 deploy kurtosis-agents
命令生成一个链接,用于配置 Kurtosis 部署。
hyperlane deploy kurtosis-agents
按照提示操作,然后点击命令输出的Kurtosis Cloud链接。
如果这是您第一次使用Kurtosis Cloud,您需要使用Google登录,Kurtosis会在大约2分钟内为您的验证器和中继器提供一个远程云实例。
将弹出一个预填配置表单,其中包含步骤1和2中的所有中继器和验证器信息。
如果您在通过CLI 在 Kurtosis Cloud上部署代理时遇到问题,可以通过以下方式手动输入此信息:
- 登录 Kurtosis Cloud。
- 点击Hyperlane Package上的"run"。
- 填写配置模块。
最后一步是输入步骤2中的Validator Key
。下面的截图显示了一个预填充配置示例。
Kurtosis 团队仍在构建Kurtosis Cloud的保密功能,因此目前请勿在Kurtosis中输入任何敏感信息(例如您的私钥)!只能使用测试值和非敏感值。
单击 "run"部署中继器和验证器!
配置成功执行后,您将看到一个绿色的"running"标记。恭喜您,您现在已经使用 Kurtosis 部署了自己的中继器和验证器!
通过导航到 Overview
选项卡,可以查看中继器和验证器部署的相关信息,包括日 志。
有关Kurtosis的问题,请提交Kurtosis Github repository。如有问题或讨论,请使用 Github Discussions section of the Kurtosis repository或访问 the Kurtosis Discord server。
4. 发送测试信息
您可以在成对的链之间发送测试消息,检查一切工作是否正常。
使用CLI启动信息。它会要求提供一组要使用的核心部署构件。选择步骤2中的core-deployments
JSON 文件。
hyperlane send message --key $PRIVATE_KEY
send message
命令会在发送信息时通知您。短暂等待后,系统将显示发送确认。如果信息发送超时,很可能是上述步骤中的验证器或中继器设置出现了问题。要排除故障,请查看起源链中继器日志。如果您需要进一步帮助,请联系 Discord。
5. (可选) 部署一个Warp Route
一旦消息被传送,您可以选择部署一个Warp Route。Warp 是一个工具包,用于在任何链之间无需许可的桥接代币。路由可以使用本地货币(如 Eth
)或 ERC20 代币(如 USDC
)。
首先,创建一个新的路由配置:
hyperlane config create warp
接下来,就可以部署路由了。与之前一样,CLI 会提示您提供核心部署构件文件:
hyperlane deploy warp --key $PRIVATE_KEY
完成后,CLI将创建两个新的JSON工件文件:warp-deployment-{timestamp}. json
和 warp-config-{timestamp}
。第一个只包含新部署的Warp路由器合约的地址。第二个文件是用于Warp UI的配置文件,您可以将其用于下一个可选步骤。
请参阅详细的Deploy Warp Guide了解更多基本概念以及如何设置Warp路由以传输令牌。
部署 Warp UI
Warp UI是一个用于与Warp路由交互的DApp模板。您可以克隆Warp UI repo并按照自定义中的说明进行操作CUSTOMIZE. md新实例。简而言之,使用chains. yaml
and warp-config. json
文件,为UI提供所需的信息。参见[部署Warp UI指南](/docs/guides/ Deploy - Warp -route-UI)的分步说明。