Skip to content

Mainnet: 单机运行 DVT + Keeper + Relay(宕机自愈)— 部署方案 #100

Description

@jhfnetboy

跟踪主网部署规划。先在 Sepolia 把 1 DVT + 3 keeper + 3 relay 跑通(见 #98 / #58 / PR #99),主网收敛为每方一台运行三合一,要求宕机自动恢复

目标

单台主机长期运行:1× DVT 共签 + Keeper(价格保活) + Relay(gasless 代付),进程崩溃自动拉起、开机自启。多方各跑一台 → 组成 N-of-M。

自愈(三选一,推荐 ① Docker)

  1. Docker restart: unless-stopped —— 复用 docker-compose.testnet.yml 改主网 env;容器崩溃自动重启 + 开机自启;加 healthcheck(探 /health/relay/health)。
  2. systemd —— 给 deploy/dvt-testnet.sh 包一层 unit,Restart=always + WantedBy=multi-user.target。裸进程、无 Docker 依赖。
  3. pm2 —— 最省事,多一个 runtime。

密钥隔离(主网必须分 3 把,绝不混用)

用途 变量 / 文件 是否需 gas
BLS 共签 node_state.json
Keeper 调 updatePrice ETH_PRIVATE_KEY(或未来 KEEPER_PRIVATE_KEY) 是,常备少量主网 ETH
Relay 代付 gas RELAY_OPERATOR_PK(每节点独立) 是,按销量备主网 ETH

per-node 私钥放 gitignored 的 deploy/node$i/.env(脚本已支持 overlay)。

监控 / 告警(主网关键)

Relay 主网加固(测试网欠的债)

Keeper 主网

  • 一个 keeper 实例支持保活多个 paymaster(待 PR:KEEPER_PAYMASTER_ADDRESS 支持逗号分隔列表,每 tick 逐个检查)。
  • 主网目标:PaymasterV4(社区)+ SuperPaymaster;确认两者都暴露 keeper 绑定的 cachedPrice/updatePrice 接口(V4 ABI 待核)。

HA 说明(单机的局限)

单机三合一能扛进程崩溃自愈,扛不了整机宕机(又成单点)。Relay/Keeper 无状态,易横向扩到 ≥2 台(SDK 已支持多 URL failover);DVT 共签本就建议多操作方多机。主网建议至少 2 台互备

分阶段

  1. Sepolia:1 DVT + 3 keeper + 3 relay 端到端通过(validate=0、真实 gasless 购买上链)。
  2. 主网单机三合一 + Docker 自愈 + 监控 + relay eth_call 预检。
  3. 主网 ≥2 台互备 + 多方 N-of-M。

由会话讨论沉淀(2026-06-22)。关联:#98(relay)、#58(keeper)、PR #99

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions