使用本地代理部署 Hyperlane
本指南适用于高级用户,他们可能最终打算在类似生产的环境中运行 Hyperlane 代理。它将涵盖如何手动配置和运行代理的基础知识,但这不是生产设置指南。
术语
“本地链”是您希望在其上部署 Hyperlane 的新链。
“远程链”是已经存在 Hyperlane 部署的链,您希望您的本地链能够发送和接收消息。
概述
本指南分为六个步骤:
- 设置密钥 以便您可以部署合约并运行验证者和中继器。
- 部署合约 到本地链以及每个远程链,以便本地链能够发送和接收消息。
- 运行验证者 以提供您部署的跨链安全模块所需的签名。
- 运行中继器 以在您部署合约的链之间发送和接收消息。
- 发送测试消息 以确认您的中继器能够在每对链之间传递消息。
- 部署 Warp 路由 以便在链之间发送代币价值,而不仅仅是消息。
开始
1. 设置密钥
您必须设置和资助三个密钥。
要开始,您可以通过为所有三个角色使用相同的十六进制密钥来简化操作。
密钥角色 | 描述 | 资金需求 |
---|---|---|
合约部署者 | 32字节十六进制私钥 | 在我们需要部署合约的所有链上都需要资助。 |
验证者账户 | 一组验证者地址,将签署来自您本地链的出站消息。快速入门时只需一个验证者即可。 | 一小笔资金,以便验证者可以通过一次性交易在链上宣布其签名的位置。 |
中继账户 | 您将操作的单个中继器需要在每个它将传递消息的链上都有一个账户。 | 中继器必须在它所中继的所有链上都有余额。 |
有关如何生成密钥的说明,请参见代理密钥部分。您的部署者密钥必须是十六进制密钥,而验证者和中继器密钥可以是十六进制或AWS KMS。
如果在使用Foundry的Anvil的本地网络上进行部署,请使用以下命令为您新生成的账户提供资金。它使用一个预先资助的私钥将1 ETH转移到环境变量中的$YOUR_TARGET_ADDRESS
地址。
cast send $YOUR_TARGET_ADDRESS \
--private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \
--value $(cast tw 1)
2. 部署合约
一旦您设置了部署者、验证者和中继器密钥,就可以使用 Hyperlane CLI 将智能合约部署到本地和远程链上。
在本地链上,我们将部署:
- 核心合约,包括一个 Mailbox,可以用来发送和接收消息。
在所有链上,我们将部署:
- 一个多重签名 ISM,用于验证来自其他本地和远程链的入站消息。
- 一个
InterchainGasPaymaster
,用于支付我们的中继器以交付跨链消息。 - 一个
TestRecipient
,我们将向其发送消息,以测试一 切是否正常工作。
设置
首先,安装 Hyperlane CLI。
npm install -g @hyperlane-xyz/cli
链
部署将需要关于任何将要交互的链的基本信息。如果目标链尚未在 Hyperlane 注册表 中,您必须为它们指定链元数据。有关详细信息,请参见 CLI 参考。
要查看当前已知的链,请运行以下命令:
hyperlane registry list
要为其他链创建链元数据配置,请运行以下命令:
hyperlane registry init
或者,您可以手动定义配置。有关其架构,请参见 ChainMetadata 类型。有关示例,请参见 chain-config.yaml。
使用多重签名 ISM 的核心部署
现在 CLI 将知道如何与您的所有链进行交互,但它还需要知道如何配置您的跨链安全模块(ISM)。
要使用多重签名 ISM 配置初始化核心配置,您可以使用 JSON 或 YAML 手动定义它(请参见 示例配置),或使用以下命令创建它:
hyperlane core init --advanced
当被问及 ISM 类型时,选择 messageIdMultisigIsm
。在本指南的上下文中,我们将使用 1/1 多重签名,因此选择阈值为 1
并输入您的密钥地址。
当被问及默认钩子类型和所需钩子类型时,选择 merkleTreeHook
。
干运行核心部署
为了执行干运行,您需要在单独的终端实例中运行 Anvil 节点。
要启动 Anvil 节点,请运行 anvil
。
有关 Anvil 和安装的更多信息,请查看 Foundry 的 Anvil 文档。
在执行部署之前,您可以通过 --dry-run <CHAIN_NAME>
或 -d <CHAIN_NAME>
执行干运行,以确保部署成功并提供部署的 Gas 成本分析。这不会触发任何真实交易,而是模拟部署以显示所需合约及其各自的 Gas 成本列表。
除了验证即将进行的部署外,您还可以选择通过 --from-address
或 -f
提供您打算使用的 EOA 地址。
这将确保您有足够的资金完成部署。
hyperlane core deploy --dry-run chain1 \
--from-address $YOUR_DEPLOYER_ADDRESS \ # (可选) 您的账户地址,将通过 Anvil 进行模拟;默认为 HYP_KEY 环境变量
--registry \ # (可选) 您的主要注册表路径;默认为 Hyperlane github 注册表
--overrides # (可选) 覆盖注册表的路径;默认为本地 ./ 路径
部署
我们现在准备使用 core deploy
命令来部署 Hyperlane 合约。为了支付交易,命令将需要步骤 1 中的合约部署者密钥,可以通过 HYP_KEY
环境变量或作为命令参数提供。
hyperlane core deploy
验证
部署合约的工件将写入配置的注册表。默认情况下,您将在运行命令的本地目录中找到新地址(例如 ./chains/chain1/addresses.yaml
)。
代理配置
我们现在准备使用已部署的合约生成代理配置,这将被代理(验证者和中继器)在以下步骤中使用。
hyperlane registry agent-config --chains chain1