跳到主要内容

运行 Relayer

提示

需求

  • RPC 节点
    • Relayer 使用 RPC 节点读取源链,并将消息传递到目标链。Relayer 必须为所有源链和目标链配置一个 RPC 节点。
  • 一个或多个签名密钥
    • 为了传递消息,Relayer 必须配置一个签名密钥,以便在每个目标链上提交交易(因此需要在这些链上有资金)。
    • Relayer 使用此密钥对 Mailbox.process() 交易进行签名。Hyperlane Relayer 代理当前支持使用通过 API 密钥/秘密访问的 AWS KMS 密钥或原始十六进制私钥进行配置。
  • 运行的机器
    • Relayer 操作员可以自己编译 Rust 二进制文件,或运行 Abacus Works 提供的 Docker 镜像。可以使用您喜欢的云服务运行该二进制文件。

指南

信息
  • 本地代理设置展示了如何在您的 本地机器 上运行 Relayer,这仅限于测试和开发目的。
  • 我们强烈建议您遵循 本地代理指南,以了解如何在本地配置和运行 Relayer。

密钥

Relayer 需要能够向多个目标链提交交易,因此需要访问用于签名交易的密钥。支持两种密钥类型:十六进制私钥(用于内存签名)和基于 AWS KMS 的密钥(生产环境的最佳实践)。

十六进制密钥

用于内存签名的十六进制私钥可以被您的 Relayer 用于签名交易。这是测试或开发目的的推荐设置,但也可以在生产中使用。

AWS KMS 密钥

AWS KMS 密钥可以被您的 Relayer 用于签名交易。这是生产 Relayer 的推荐设置。

提示

请参阅 代理密钥 页面以设置您的十六进制或 AWS KMS 密钥。

配置

RPC 配置

Hyperlane 验证者和 Relayer 可以使用 多个 RPC URL 来提高可靠性和冗余。设置因链类型而异。

基于 EVM 的链支持配置多个 RPC 端点以实现冗余,并可以指定如何使用它们。

  • 配置多个 RPC: 使用 customRpcUrls
  • RPC 选择模式 (rpcConsensusType)
    • 回退:代理尝试第一个 URL,如果需要则切换到下一个。
    • 法定人数:要求大多数 URL 同意,提交交易时除外。

配置设置

与本地设置一样,在配置 Relayer 时,您应该提供一些基本参数。

参数描述
--relayChains用逗号分隔的源链和目标链的名称,以便在它们之间传递消息。例如:ethereum,polygon,avalanche
--dbRelayer 应该将持久数据写入磁盘的路径。确保在使用云设置时此路径是持久的。在使用 Docker 时,请确保将持久路径/卷挂载到容器中。有关更多信息,请参见 config-reference
--allowLocalCheckpointSyncers如果为 true,这将允许 Relayer 在 Relayer 的本地文件系统上查找验证者签名。在生产环境中,这应该为 false。如果您在同一台机器上运行验证者,并按照验证者本地设置说明进行操作,请将其设置为 true,以便您的 Relayer 可以访问本地验证者签名。
信息

您的 Relayer 同时接受命令行参数和环境变量作为配置。请查看 代理配置 页面和 配置参考 以获取完整的配置可能性列表。

您还可以通过 CONFIG_FILES 环境变量 提供额外配置文件的路径,使用逗号分隔的列表。如果您选择在 Docker 中运行,请参见代理配置的 Docker 部分,以获取将配置文件挂载到 Docker 容器中的提示。

特定于设置的配置

这些配置要求因您遵循的密钥设置说明而异。

如果您创建了 十六进制密钥,请按如下方式配置默认签名者:

参数描述
--defaultSigner.key用于为所有链签名交易的十六进制私钥。例如:1b3dead...beef

对于链特定的签名者(即自定义每条链使用的密钥),请查看 配置参考

开始中继

设置

在生产环境中,推荐的安装方法是使用 Docker 镜像。

首先下载 Docker 镜像:

docker pull --platform linux/amd64 gcr.io/abacus-labs-dev/hyperlane-agent:agents-v1.1.0

运行代理

如果 Relayer 的密钥已使用 AWS KMS 配置,您需要提供 AWS 访问密钥和秘密作为环境变量。

环境变量描述
AWS_ACCESS_KEY_ID您 Relayer 的 AWS IAM 用户的访问密钥 ID。
AWS_SECRET_ACCESS_KEY您 Relayer 的 AWS IAM 用户的秘密访问密钥。

有关更多信息,请查看 代理密钥 指南。

然后使用相关参数启动容器。例如,您对 AWS 的配置:

docker run \
-it \
-e AWS_ACCESS_KEY_ID=ABCDEFGHIJKLMNOP \
-e AWS_SECRET_ACCESS_KEY=xX-haha-nice-try-Xx \
--mount ... \
gcr.io/abacus-labs-dev/hyperlane-agent:agents-v1.1.0 \
./relayer \
--db /hyperlane_db \
--relayChains <chain_1_name>,<chain_2_name> \
--defaultSigner.type aws \
--defaultSigner.id alias/hyperlane-relayer-1 \
--defaultSigner.region us-east-1 \
信息

如果您在同一台机器上运行验证者并运行本地 Relayer 以访问这些验证者签名,请确保将您的本地验证者的签名目录 挂载 到 Relayer 中,路径与您在 宣布验证者 时使用的路径相同。

例如,如果您的本地验证者将签名写入 /tmp/hyperlane-validator-signatures-ethereum,则应为 Docker 容器挂载一个目录:

docker run \
-it \
-e CONFIG_FILES=/config/agent-config.json \
--mount type=bind,source=$CONFIG_FILES,target=/config/agent-config.json,readonly \
--mount type=bind,source="$(pwd)"/hyperlane-validator-signatures-ethereum,target=/tmp/hyperlane-validator-signatures-ethereum,readonly \
--mount type=bind,source="$(pwd)"/hyperlane_db,target=/hyperlane_db \
gcr.io/abacus-labs-dev/hyperlane-agent:agents-v1.1.0 \
./relayer \
--db /hyperlane_db \
--relayChains ethereum,polygon,avalanche \
--allowLocalCheckpointSyncers true \
--defaultSigner.key <your_relayer_key> \

索引

Relayer 需要索引所有源链的历史消息。这些信息存储在磁盘上的本地数据库中(在配置中通过 db 设置)。这意味着第一次运行 Relayer 可能需要一些额外的时间来赶上当前状态。