使用 Docker Compose 和 AWS 的快速入门
使用 Docker Compose 提供了一种结构化的方式来管理验证者的部署,同时保持原始 Docker 的灵活性。您可以在 Docker 文档 中找到格式的完整规范。
1. 设置验证者密钥
请按照 此处 的指南使用 AWS KMS 创建代理密钥。
2. 为签名创建 S3 存储桶
请按照 此处 的指南创建和配置 S3 存储桶,以便您的验证者将签名写入。
3. (仅限 AVS 操作员)注册 Hyperlane AVS
如果您是 AVS 操作员,请按照 此处 的指南注册 Hyperlane AVS。
4. 设置验证者环境
创建配置文件
在此示例中,我们将运行三个链。
mkdir -p ethereum/hyperlane_db optimism/hyperlane_db base/hyperlane_db && \
touch ethereum/config.json optimism/config.json base/config.json docker-compose.yml .env.ethereum .env.optimism .env.base
编辑每个 config.json
您可以在 此处 了解有关代理配置的更多信息。
参数 | 描述 |
---|---|
customRpcUrls | 支持的链的高性能 RPC 端点的逗号分隔列表。我们建议使用付费提供商以避免速率限制。 |
chains.ethereum | 在 base/config.json 中应更改为 chains.base ,在 optimism/config.json 中应更改为 chains.optimism 。 |
signer.region | 应根据您的 AWS 区域进行调整。 |
validator.region | 应根据您的 AWS 区域进行调整。 |
signer.id | 应根据您在第 3 步中配置的 AWS KMS id 进行调整,前缀为 alias/ 。 |
validator.id | 应根据您在第 3 步中配置的 AWS KMS id 进行调整,前缀为 alias/ 。 |
originChainName | 应为您正在验证的链。 |
checkpointSyncer.bucket | 应反映 S3 存储桶的名称。 |
checkpointSyncer.folder | 验证者将在存储桶中使用的文件夹名称。您可以为多个验证者使用同一个存储桶,但请确保每个验证者的文件夹名称是唯一的。 |
reorgPeriod | 每个链可能不同。 查找 reorgPeriods。 |
以下是一个示例代理配置。
{
"chains": {
"ethereum": {
"customRpcUrls": "https://eth.llamarpc.com,https://rpc.mevblocker.io",
"signer": {
"region": "us-east-1",
"type": "aws",
"id": "alias/hyperlane-validator-signer"
}
}
},
"originChainName": "ethereum",
"db": "/mnt/hyperlane_db",
"validator": {
"id": "alias/hyperlane-validator",
"type": "aws",
"region": "us-east-1"
},
"checkpointSyncer": {
"bucket": "hyperlane-validator-signatures",
"region": "us-east-1",
"type": "s3",
"folder": "ethereum"
},
"reorgPeriod": 14,
"metricsPort": "9090"
}
编辑每个 .env 文件
您应该为每个链更改服务名称和 AWS 凭证。
AWS_ACCESS_KEY_ID=<您的 AWS 访问密钥 ID>
AWS_SECRET_ACCESS_KEY=<您的 AWS 秘密访问密钥>
SERVICE_NAME=ethereum
5. 配置 Docker Compose (docker-compose.yml)
x-common-attributes: &common-validator
image: gcr.io/abacus-labs-dev/hyperlane-agent:agents-v1.1.0
command: ./validator
container_name: ${SERVICE_NAME}-validator
environment:
CONFIG_FILES: /config.json
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
volumes:
- ./${SERVICE_NAME}/hyperlane_db:/mnt/hyperlane_db
- ./${SERVICE_NAME}/config.json:/config.json
restart: unless-stopped
services:
ethereum-validator:
<<: *common-validator
ports:
- "9091:9090/tcp"
optimism-validator:
<<: *common-validator
ports:
- "9092:9090/tcp"
base-validator:
<<: *common-validator
ports:
- "9093:9090/tcp"
您的目录结构应类似于以下内容:
.
├── base
│ ├── config.json
│ └── hyperlane_db
├── docker-compose.yml
├── ethereum
│ ├── config.json
│ └── hyperlane_db
├── .env.base
├── .env.ethereum
├── .env.optimism
└── optimism
├── config.json
└── hyperlane_db
6. 运行 Hyperlane 验证者
启动容器:
请记得为您的验证者地址提供资金,以便验证者可以进行公告。
docker compose --env-file .env.ethereum up ethereum-validator -d
docker compose --env-file .env.optimism up optimism-validator -d
docker compose --env-file .env.base up base-validator -d
确保没有错误:
docker logs -f ethereum-validator
docker logs -f optimism-validator
docker logs -f base-validator
提示
运行多个验证者:运行多个验证者可以提高可靠性,并确保即使一个失败,消息验证仍然继续。了解更多设置和要求 这里。