跟踪主网部署规划。先在 Sepolia 把 1 DVT + 3 keeper + 3 relay 跑通(见 #98 / #58 / PR #99),主网收敛为每方一台运行三合一,要求宕机自动恢复。
目标
单台主机长期运行:1× DVT 共签 + Keeper(价格保活) + Relay(gasless 代付),进程崩溃自动拉起、开机自启。多方各跑一台 → 组成 N-of-M。
自愈(三选一,推荐 ① Docker)
- Docker
restart: unless-stopped —— 复用 docker-compose.testnet.yml 改主网 env;容器崩溃自动重启 + 开机自启;加 healthcheck(探 /health、/relay/health)。
- systemd —— 给
deploy/dvt-testnet.sh 包一层 unit,Restart=always + WantedBy=multi-user.target。裸进程、无 Docker 依赖。
- 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 台互备。
分阶段
- Sepolia:1 DVT + 3 keeper + 3 relay 端到端通过(
validate=0、真实 gasless 购买上链)。
- 主网单机三合一 + Docker 自愈 + 监控 + relay eth_call 预检。
- 主网 ≥2 台互备 + 多方 N-of-M。
由会话讨论沉淀(2026-06-22)。关联:#98(relay)、#58(keeper)、PR #99。
跟踪主网部署规划。先在 Sepolia 把 1 DVT + 3 keeper + 3 relay 跑通(见 #98 / #58 / PR #99),主网收敛为每方一台运行三合一,要求宕机自动恢复。
目标
单台主机长期运行:1× DVT 共签 + Keeper(价格保活) + Relay(gasless 代付),进程崩溃自动拉起、开机自启。多方各跑一台 → 组成 N-of-M。
自愈(三选一,推荐 ① Docker)
restart: unless-stopped—— 复用docker-compose.testnet.yml改主网 env;容器崩溃自动重启 + 开机自启;加healthcheck(探/health、/relay/health)。deploy/dvt-testnet.sh包一层 unit,Restart=always+WantedBy=multi-user.target。裸进程、无 Docker 依赖。密钥隔离(主网必须分 3 把,绝不混用)
node_state.jsonETH_PRIVATE_KEY(或未来KEEPER_PRIVATE_KEY)RELAY_OPERATOR_PK(每节点独立)per-node 私钥放 gitignored 的
deploy/node$i/.env(脚本已支持 overlay)。监控 / 告警(主网关键)
/node/info、/relay/health(Docker healthcheck 或外部 uptime)。Relay 主网加固(测试网欠的债)
eth_call预检:拒绝会 revert 的 tx,省 gas + 挡 griefing(测试网用限流 + caps 兜底,主网必须补)。见 PR feat(#98 relay): optional gasless purchase relay module (Phase 1) #99 "Known limitation"。Keeper 主网
KEEPER_PAYMASTER_ADDRESS支持逗号分隔列表,每 tick 逐个检查)。cachedPrice/updatePrice接口(V4 ABI 待核)。HA 说明(单机的局限)
单机三合一能扛进程崩溃自愈,扛不了整机宕机(又成单点)。Relay/Keeper 无状态,易横向扩到 ≥2 台(SDK 已支持多 URL failover);DVT 共签本就建议多操作方多机。主网建议至少 2 台互备。
分阶段
validate=0、真实 gasless 购买上链)。