常见问题
验证者搭建、运维与升级相关的常见问题解答。
设置
我如何加入测试网或主网?
加入测试网需要超级验证者 (SV) 赞助商。请联系与您合作的 SV,或通过 #validator-operations-onboarding Slack 渠道寻找赞助商。发起人提交投票以批准您的验证者。该过程通常需要 2-4 周。
主网上线遵循相同的模式,但要求更严格。您需要签署运营商协议,并且必须证明在测试网上成功运行。有关完整清单,请参阅onboarding 流程 文档。
需要开放哪些端口?
您的验证者需要出站访问:
- TCP 443 — HTTPS/gRPC-TLS 到 synchronizer sequencer
- TCP 5432 — 到您的 PostgreSQL 数据库(如果托管在外部)
- TCP 443 — 发送至您的 OIDC 提供商(Auth0、Keycloak 等)
入站访问取决于您的设置:
- TCP 443 — 如果您向外部公开 Ledger API 或验证者钱包 UI
- TCP 26656 — 如果您运行 CometBFT 节点(对于 SV 运营商)
DevNet 还需要 VPN 连接。
运行验证者需要多少钱?
成本分为基础设施费用和网络费用。
基础设施成本取决于您的部署选择。云提供商上的最小 Kubernetes 部署运行费用约为每月 500-800 美元(计算、数据库、存储)。单个虚拟机上的 Docker Compose 可能更便宜,但不建议用于生产。
网络费用是通过流量支付的,流量是用Canton Coin(CC)购买的。金额取决于您的交易量。验证者获得的奖励可以抵消这些成本。在Global Synchronizer Foundation网站上查看当前奖励率。
操作
如何查看我的流量余额?
通过Canton Console:
@ participant1.traffic_control.traffic_state(participant1.synchronizers.id_of("da"))
res1: com.digitalasset.canton.sequencing.protocol.TrafficState = TrafficState(
extraTrafficLimit = 0,
extraTrafficConsumed = 0,
baseTrafficRemainder = 0,
lastConsumedCost = 0,
timestamp = 1970-01-01T00:00:00Z,
availableTraffic = 0
)
通过验证者 API:
curl -s http://localhost/api/validator/readyz | jq '.traffic'
如果余额不足,请购买更多流量或在validator-values.yaml中启用自动充值。
我应该多久修剪一次?
经常进行修剪以保持数据库易于管理。常见的计划是每 10 分钟一次,保留 90 天:
participantPruningSchedule:
cron: "0 */10 * * * ?"
maxDuration: 30m
retention: 90d
如果您为应用程序运行 PQS(Participant Query Store(PQS)),则可以对参与者使用较短的保留期,因为 PQS 维护自己的查询数据存储。
网络重置期间会发生什么?
网络重置很少见,仅发生在 DevNet 和 TestNet 上。 重置期间:
- 所有账本状态都被擦除
- 验证者身份可能需要重新注册
- 您可以使用与初始设置相同的流程重新启动验证者
主网从未被重置,预计也不会被重置。网络升级过程(同步器迁移)保留跨版本更改的状态。
升级
能否跳过版本?
这取决于升级类型。对于同一 Splice 版本中的次要补丁版本,您通常可以跳过中间补丁。对于涉及同步器迁移的主要版本升级,您必须遵循发行说明中记录的特定升级路径。
如果在您的验证者离线时网络已经向前移动了多个版本,请直接升级到当前网络版本。运行旧版本会导致You don't speak X.Y.Z错误,因为网络拒绝不兼容的协议版本。
类型 1、类型 2 和类型 3 升级之间有什么区别?
这些类别描述了升级的范围和影响:* 类型 1(补丁) — 错误修复和细微改进。无需同步器迁移,预计不会出现停机。通过更新 Helm Chart 版本并运行 helm upgrade 来应用。
- 类型 2(次要) — 新功能或行为更改。可能需要配置更新。无需同步器迁移,但需要滚动重启。
- 类型 3(主要) — 涉及同步器迁移。网络移动到新的同步器 ID,验证者必须更新其数据库配置(例如,
participant_4变为participant_5)。通过预定的迁移窗口在所有验证者之间进行协调。
检查每个版本的发行说明以确定其升级类型并遵循相应的过程。
如何验证我的验证者正在运行正确的版本?
升级完成后,确认运行版本:
# Kubernetes
kubectl -n validator get deploy validator-app \
-o "jsonpath={.spec.template.spec.containers[0].image}"
# Docker
docker inspect validator-app --format='{{.Config.Image}}'
您还可以检查网络的公共验证者状态页面,其中显示每个注册验证者的报告版本。
本文由 CC Privacy Club 根据 Canton Network 官方文档(CC-BY-4.0)整理翻译,仅供学习;实现细节以官方最新版本为准。