
omniops/relayerRelayer镜像用于部署跨链消息中继器,核心功能是将源链的跨链消息(附带 graphic 证明)可靠地提交至目标链,实现不同网络间的消息传递与验证。该镜像封装了消息监听、证明生成、交易签名及目标链提交等完整流程,简化跨链消息中继的部署与运维。
docker run)通过docker run命令启动中继器,需指定源链/目标链参数、密钥及网络配置:
bashdocker run -d \ --name relayer \ -e SOURCE_CHAIN_RPC="[***]" \ -e DEST_CHAIN_RPC="[***]" \ -e PRIVATE_KEY="0xYourPrivateKeyForDestChainTransaction" \ -e PROOF_VERIFIER_CONTRACT="0xDestChainProofVerifierContractAddress" \ -e SOURCE_CHAIN_ID=1 \ -e DEST_CHAIN_ID=5 \ -v ./relayer-data:/app/data \ --network host \ relayer:latest
通过docker-compose.yml管理多环境配置(如测试/生产环境分离):
yamlversion: "3.8" services: relayer: image: relayer:latest container_name: relayer restart: unless-stopped environment: - SOURCE_CHAIN_RPC=[***] - DEST_CHAIN_RPC=[***] - PRIVATE_KEY=${RELAYER_PRIVATE_KEY} # 从环境变量文件加载密钥 - PROOF_VERIFIER_CONTRACT=0xDestChainProofVerifierContractAddress - SOURCE_CHAIN_ID=1 - DEST_CHAIN_ID=5 - LOG_LEVEL=info # 日志级别:debug/info/warn/error - MESSAGE_QUEUE_SIZE=2000 # 消息队列缓冲区大小 - RETRY_DELAY=10 # 失败重试延迟(秒) volumes: - ./relayer-data:/app/data # 持久化消息缓存与运行日志 network_mode: host # 直接使用主机网络(或配置自定义桥接网络)
| 环境变量名 | 描述 | 必填 | 默认值 |
|---|---|---|---|
SOURCE_CHAIN_RPC | 源链RPC端点(用于监听跨链事件) | 是 | - |
DEST_CHAIN_RPC | 目标链RPC端点(用于提交消息与证明) | 是 | - |
PRIVATE_KEY | 目标链交易签名私钥(需有足够Gas费用) | 是 | - |
PROOF_VERIFIER_CONTRACT | 目标链证明验证合约地址(消息最终提交的目标合约) | 是 | - |
SOURCE_CHAIN_ID | 源链链ID(用于区分不同网络) | 是 | - |
DEST_CHAIN_ID | 目标链链ID | 是 | - |
LOG_LEVEL | 日志级别(debug/info/warn/error) | 否 | info |
MESSAGE_QUEUE_SIZE | 消息队列缓冲区最大容量(防止内存溢出) | 否 | 1000 |
RETRY_DELAY | 消息提交失败后重试间隔(秒) | 否 | 5 |
GAS_LIMIT | 目标链交易Gas上限 | 否 | 300000 |
POLL_INTERVAL | 源链事件轮询间隔(秒) | 否 | 2 |
/app/data目录用于持久化消息缓存(未提交成功的消息)与运行日志,建议通过宿主机目录挂载(如示例中的./relayer-data:/app/data),避免容器重启后数据丢失。--network host直接使用主机网络,或配置自定义桥接网络并开放出站端口)。适用于开发或测试场景,快速验证跨链消息流程:
bash# 启动Relayer容器 docker run -d \ --name relayer-test \ -e SOURCE_CHAIN_RPC="[***]" \ -e DEST_CHAIN_RPC="[***]" \ -e PRIVATE_KEY="0xTestnetPrivateKeyWithEth" \ -e PROOF_VERIFIER_CONTRACT="***" \ -e SOURCE_CHAIN_ID=5 \ -e DEST_CHAIN_ID=*** \ -e LOG_LEVEL=debug \ -v ./test-data:/app/data \ relayer:latest # 查看日志验证运行状态 docker logs -f relayer-test
生产环境需配置高可用(如自动重启、资源限制、日志持久化),示例docker-compose.yml:
yamlversion: "3.8" services: relayer: image: relayer:latest container_name: relayer-prod restart: always # 容器退出时自动重启 environment: - SOURCE_CHAIN_RPC=[***] - DEST_CHAIN_RPC=[***] - PRIVATE_KEY=${RELAYER_PROD_PRIVATE_KEY} # 从.env文件加载密钥(避免硬编码) - PROOF_VERIFIER_CONTRACT=0xProdProofVerifierContractAddress - SOURCE_CHAIN_ID=1 - DEST_CHAIN_ID=137 - LOG_LEVEL=info - MESSAGE_QUEUE_SIZE=5000 - GAS_LIMIT=500000 volumes: - /data/relayer:/app/data # 宿主机数据卷,持久化消息与日志 networks: - relayer-network # 自定义网络隔离 deploy: resources: limits: cpus: '2' memory: 2G networks: relayer-network: driver: bridge
PRIVATE_KEY需妥善保管,生产环境中建议通过 secrets 管理工具(如Docker Secrets、Kubernetes Secrets)注入,避免明文暴露。





manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务