{
  "title": "验证者节点 (Beta)",
  "subtitle": "在此主机安装与管理 L1 节点。非托管 — 私钥由你自行保管。",
  "beta": "Beta",
  "tab": {
    "nodes": "节点",
    "disk": "磁盘",
    "stack": "软件",
    "about": "说明"
  },
  "empty": {
    "title": "尚未建立验证者节点",
    "desc": "用向导几步建立测试网节点。"
  },
  "refresh": "刷新",
  "software": {
    "engine": "Docker引擎",
    "engineDesc": "验证者节点以 Compose 专案运行。引擎未装可在此安装。映像清理请到 Docker 页。",
    "client": "客户端",
    "image": "映像",
    "present": "本机",
    "local": "已拉取",
    "missing": "未拉取",
    "size": "大小",
    "usedBy": "使用中",
    "unused": "无实例",
    "pull": "Pull",
    "pulled": "已在本机",
    "pulling": "正在拉取 {{ref}}",
    "empty": "没有钉选客户端映像",
    "emptyDesc": "目录不应为空。",
    "daemonDown": "Docker Engine 未运行",
    "source": "来源",
    "official": "官方最新",
    "officialNewer": "官方较新",
    "stale": "落后于钉选",
    "staleItem": "{{id}}（{{tag}}）",
    "pin": "本面板钉选",
    "openRelease": "发布说明",
    "chooseOnInstance": "请到实例页变更版本。拉取映像不会替已运行节点改 tag。"
  },
  "disk": {
    "title": "验证者节点磁盘",
    "root": "数据目录",
    "free": "可用",
    "used": "已用",
    "fsUsed": "档案系统已用",
    "leftoverTitle": "残留资料（{{count}}）",
    "leftoverEmpty": "没有孤立实例目录",
    "leftoverDesc": "验证者根目录下、不在 store 的资料夹。确认无用后再删。",
    "leftoverRemove": "删除",
    "leftoverRemoveTitle": "删除此残留验证者资料？",
    "leftoverRemoveDesc": "将永久删除磁盘上的 {{path}}。这不是列表中的节点。",
    "browseRoot": "在档案浏览开启",
    "none": "尚无实例数据",
    "warn": "磁盘用量偏高（70% 或以上）",
    "danger": "磁盘用量危急（85% 或以上）",
    "autoClear": "磁盘危急时自动清空最大的已停止实例（默认关闭）",
    "autoClearRisk": "破坏性：会删除最大的已停止实例，不会再询问。预设关闭。触发后请查审计／日志。",
    "autoClearConfirmTitle": "启用自动清空？",
    "autoClearC1": "磁盘危急时会删除最大的已停止实例，不会再询问。",
    "autoClearThreshold": "触发条件：档案系统用量达 85% 或以上。",
    "autoClearCandidate": "目前候选：{{id}}",
    "autoClearCandidates": "已停止候选（有资料且较大者优先）：{{list}}",
    "autoClearNone": "目前没有已停止实例可作为候选。"
  },
  "chain": {
    "eth": "Ethereum",
    "avax": "Avalanche",
    "near": "NEAR",
    "ada": "Cardano",
    "btc": "Bitcoin",
    "cosmos": "Cosmos Hub",
    "sui": "Sui",
    "aptos": "Aptos",
    "dot": "Polkadot",
    "sol": "Solana"
  },
  "network": {
    "hoodi": "Hoodi",
    "sepolia": "Sepolia",
    "mainnet": "主网",
    "fuji": "Fuji",
    "testnet": "测试网",
    "preview": "预览",
    "preprod": "预生产",
    "westend": "Westend"
  },
  "networkKind": {
    "testnet": "测试网",
    "mainnet": "主网",
    "mixed": "主网＋测试网"
  },
  "profile": {
    "minimal": "精简",
    "pruned": "Pruned",
    "validator-ready": "验证者就绪",
    "rpc": "RPC"
  },
  "profileHelp": {
    "title": "四个配置档有何分别",
    "desc": "向导第三步可选精简、Pruned、验证者就绪、RPC。分别在磁盘用量和用途。各链建议容量在向导显示。面板不会保管质押私钥。",
    "colName": "配置档",
    "colUse": "用途",
    "colDisk": "磁盘",
    "colStake": "当验证者",
    "useMinimal": "测试网或先试安装。不是完整历史。",
    "usePruned": "长期跟随链头。只留近期数据（Pruned）。",
    "useValidatorReady": "预留作日后出块。密钥须自行离线生成。",
    "useRpc": "给本机或其他服务查链。默认只听 127.0.0.1。",
    "diskMinimal": "最少",
    "diskPruned": "中等（多于精简）",
    "diskValidatorReady": "四者之中最多",
    "diskRpc": "视链而定",
    "stakeNo": "不适合",
    "stakeYes": "可以 — 离线或设错可能被罚",
    "stakeRpc": "不是验证者",
    "minimal": "占用磁盘最少。适合测试网或先试安装。不是完整历史，也不适合作为正式验证者。",
    "pruned": "保留近期链状态，删除过旧区块数据（Pruned）。磁盘多于精简、少于完整节点。适合长期跟随链头。",
    "validatorReady": "预留较大磁盘，供日后以验证者身份出块。密钥须自行离线生成；离线或设置错误可能损失质押金。",
    "rpc": "供本机或其他服务查询链数据。RPC 默认只监听 127.0.0.1，不会公开到互联网。"
  },
  "col": {
    "id": "标识",
    "chain": "链",
    "network": "网络",
    "profile": "配置档",
    "status": "状态",
    "traffic": "流量",
    "disk": "磁盘"
  },
  "cli": {
    "usage": "用法： ysk-server validators list|chains|disk|get|status|checklist|logs|create|start|stop|restart|clear|upgrade|set-version|versions|policy|mithril|prune|switch-network|snapshot|compose|compose-write|rewrite-compose|software|pull|leftover-remove|stats|settings|producer-keys|producer-detach|near-account [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--el-tag T] [--cl-tag T] [--node-tag T] [--client ID] [--tag T] [--data-path P] [--rpc-port N] [--id ID] [--path PATH] [--file PATH] [--image REF] [--upgrade POLICY] [--confirm TOKEN] [--kes-file P] [--vrf-file P] [--opcert-file P] [--accept-low-disk] [--accept-low-mem] [--accept-mainnet] [--refresh] [--execute] [--json]"
  },
  "clients": {
    "el": "执行层客户端",
    "cl": "共识层客户端",
    "version": "版本",
    "pin": "本面板钉选",
    "officialNewer": "官方较新",
    "olderThanPin": "旧于本面板钉选",
    "prerelease": "预发布",
    "current": "目前运行",
    "source": "映像来源"
  },
  "mithril": {
    "label": "先用 Mithril 快照还原（测试网建议）",
    "hint": "这是安装成功后的一次性还原，不会写入 compose。之后也可在实例页再执行。",
    "action": "用 Mithril 还原"
  },
  "errors": {
    "notFound": "找不到验证者节点实例",
    "invalidId": "实例标识无效",
    "diskLow": "此链、网络与配置档所需的可用磁盘空间不足",
    "memLow": "可用内存不足以满足此链的内存上限",
    "diskUnknownMainnet": "无法测量可用磁盘，拒绝建立主网节点",
    "needDocker": "需要 Docker Compose，但找不到",
    "composeFailed": "docker compose 失败",
    "containerNotUp": "Compose 已启动，但容器未能保持运行",
    "probeFailed": "节点尚未回应 RPC。请在本页查看日志。",
    "oom": "内存不足。请设定内存上限或增加 RAM，然后重新启动。",
    "nofile": "程序已达开启档案上限（nofile）。请提高 ulimits.nofile 后重新启动。",
    "noContainer": "此实例没有 Compose 容器。",
    "restarting": "容器正在重新启动。请在本页查看日志。",
    "restartingCount": "容器正在重新启动（第 {{n}} 次）。请在本页查看日志。",
    "needConfirm": "清空须 confirm=实例标识 或 CLEAR",
    "mithrilAdaOnly": "Mithril 还原只适用于 Cardano",
    "needMithrilConfirm": "Mithril 需要 confirm=实例标识 或 MITHRIL",
    "mithrilBlocked": "Mithril 的 docker run 被允许清单拒绝",
    "mithrilKey": "无法载入 Mithril genesis 验证密钥",
    "mithrilFailed": "Mithril 快照下载失败",
    "pruneFailed": "清理失败",
    "switchNeedStop": "转网络前请先停止节点",
    "switchNeedClear": "转网络会清空链数据。请用实例标识或 CLEAR 确认",
    "composeMissing": "找不到 Compose 文件",
    "composeNotManaged": "拒绝写入非 YSK 管理的 Compose 文件",
    "badDataPath": "数据路径必须是绝对目录，并且不可使用系统路径",
    "portInUse": "该 RPC 端口已被另一个验证者实例使用",
    "badTag": "此客户端版本不是该映像的官方 tag",
    "needVersionConfirm": "变更版本须 confirm=实例识别码",
    "needMainnetVersionAck": "主网变更版本须 acceptMainnet",
    "snapshotUnsupported": "此链没有在允许清单内的快照来源",
    "snapshotLookup": "无法解析官方快照指针",
    "needSnapshotConfirm": "还原快照须 confirm=实例标识 或 SNAPSHOT",
    "snapshotBlocked": "快照的 docker run 被允许清单拒绝",
    "snapshotFailed": "快照下载或解压失败",
    "producerAdaOnly": "营运凭证只适用于 Cardano",
    "needProducerConfirm": "挂上营运凭证须 confirm=实例识别码 或 PRODUCER",
    "needMainnetProducerAck": "主网挂上营运凭证须 acceptMainnet",
    "producerColdRejected": "拒绝 cold 或 pool 拥有者签名密钥。cold 密钥须保持离线。",
    "producerTooLarge": "密钥档大于 64 KiB",
    "producerBadType": "此档不是 KES 密钥、VRF 密钥或 operational certificate",
    "producerEmpty": "请至少提供 kes、vrf 或 opcert 其中一份",
    "switchNeedDetachProducer": "转网络前请先卸下营运凭证",
    "nearAccountInvalid": "池名称必须是短名称（或完整的 {pool}{factory} 帐户）。",
    "nearKeyMissing": "validator_key.json 丢失或没有 public_key。启动节点并等待neard init。"
  },
  "notes": {
    "beta": "此功能属 Beta。变更主机须 root 及 YSK_EXECUTE=1。",
    "noKeys": "YSK Server 不会生成或保存质押私钥。",
    "dockerSoon": "安装与启动由此页精灵提供。变更主机须 root 及 YSK_EXECUTE=1。",
    "dryCreate": "已写入实例规格与 compose（dry-run）。要启动容器请加 --execute 及 YSK_EXECUTE=1。",
    "dryStart": "启动为 dry-run。请加 --execute 及 YSK_EXECUTE=1。",
    "dryStop": "停止为 dry-run。请加 --execute 及 YSK_EXECUTE=1。",
    "dryClear": "清空为 dry-run。请加 --execute 及 YSK_EXECUTE=1。",
    "created": "已建立节点并启动 compose",
    "started": "已启动节点",
    "stopped": "已停止节点",
    "cleared": "已清空链数据",
    "dryMithril": "Mithril 还原为试运行。请加 --execute 及 YSK_EXECUTE=1。",
    "mithril": "已用 Mithril 还原快照并重启节点",
    "dryPrune": "清理为试运行。请加 --execute 及 YSK_EXECUTE=1。",
    "pruned": "已清理此项目未用映像",
    "pruneProfile": "客户端原生修剪靠 pruned／minimal 配置档。要改请重建实例。",
    "sameNetwork": "已经在这个网络",
    "drySwitch": "转网络为试运行。",
    "switched": "已转网络并清空链数据",
    "dryCompose": "将写入 compose.yml",
    "composeWrote": "已写入 compose.yml",
    "statsEmpty": "没有运行中的容器可测量",
    "autoClearNone": "没有已停止的实例可供自动清空",
    "drySnapshot": "快照还原为试运行。请加 --execute 及 YSK_EXECUTE=1。",
    "snapshotEthEl": "已还原 ethPandaOps 执行层归档，并重置共识层以使用 checkpoint sync",
    "snapshotEthCl": "已重置共识层数据，使用官方 checkpoint sync",
    "snapshotNear": "已清空 NEAR 数据；compose 会重新用官方 genesis 与 epoch sync 初始化",
    "nativePrune": "已执行客户端原生清理命令",
    "dryProducer": "挂上营运凭证为试行。请加 --execute 及 YSK_EXECUTE=1。",
    "dryProducerDetach": "卸下营运凭证为试行。请加 --execute 及 YSK_EXECUTE=1。",
    "producerPartial": "已写入热密钥。KES、VRF、opcert 齐了才会以 block producer 启动。",
    "producerAttached": "已挂上热密钥，compose 改为 block producer",
    "producerDetached": "已卸下热密钥，compose 改回 relay",
    "dryDelete": "删除属预演。真正套用须 --execute 与 YSK_EXECUTE=1。",
    "deleted": "已删除节点",
    "leftoverRemoved": "已删除残留 {{path}}",
    "dryNearAccount": "将 account_id 设置为 {{account}}（通过 --execute）。秘密永远不会改变。",
    "nearAccountWrote": "将 account_id 设置为 {{account}}。秘密没有改变。如果节点正在运行，请重新启动该节点。"
  },
  "create": "建立节点",
  "wizard": {
    "title": "建立节点",
    "stepOf": "第 {{n}}／{{total}} 步",
    "stepChain": "链",
    "stepNetwork": "网络",
    "stepProfile": "设定档",
    "stepSummary": "摘要",
    "needDocker": "未安装 Docker Engine。请先安装 — 此按钮保持停用。",
    "diskNeed": "此设定档约需 {{need}} · 可用 {{free}}",
    "diskNeedNetwork": "此网络预设精简（Minimal）约需 {{need}} · 可用 {{free}}",
    "profileHint": {
      "minimal": "最小同步——磁盘最轻，不适合质押。",
      "pruned": "只保留近期历史（Pruned）。比完整存档小，仍可用作 RPC。",
      "validator-ready": "按验证者角色预留磁盘。比精简占用更多空间。",
      "rpc": "公开 RPC 节点——不是质押验证者。"
    },
    "diskShort": "可用磁盘不足以建立此链／网络／设定档",
    "diskShortDetail": "需要 {{need}} · 可用 {{free}} · 还差 {{short}}",
    "memShort": "可用内存不足以满足此链的内存上限",
    "memShortDetail": "需要 {{need}} · 可用 {{free}} · 还差 {{short}}",
    "needCustomPath": "请输入绝对资料路径",
    "previewId": "节点识别码",
    "previewCompose": "Compose 专案",
    "profileSeeAbout": "四个配置档的分别见「说明」分页。",
    "back": "上一步",
    "next": "下一步",
    "install": "安装",
    "mainnetWarn": "主网需要大量可用磁盘（ETH 常达 800 GiB 或以上）。建议先用测试网。",
    "mainnetAck": "我明白：主网会占用很多磁盘空间。若把这台机器当验证者，离线或设置错误，质押的币可能被罚走。我仍要建立主网节点。",
    "lowDiskAcked": "可用磁盘低于建议值。你已确认仍要建立；空间不足时同步可能中断。",
    "lowMemAcked": "可用内存低于此链的内存上限加 1 GiB 预留。你已确认仍要建立；节点可能因内存不足而中止。",
    "heavyWarn": "此链负载很重（大量磁盘与高 IOPS）。Solana 主网通常需要 2 TiB 或以上。",
    "memory": "内存上限（例如 4g）",
    "cpus": "CPU 上限（例如 2.0）",
    "dataPath": "数据路径（可选）",
    "rpcPort": "RPC 端口（可选）",
    "limitNone": "不限",
    "rpcDefault": "预设",
    "customPath": "使用自订资料路径",
    "installConfirmTitle": "安装此节点？",
    "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}。约需 {{disk}} 磁盘。拉取映像可能需时颇长。",
    "installC1": "可能下载数 GiB 映像。",
    "installC2": "可取消面板任务；已拉取的映像不会自动删除。",
    "installC3": "主网会占用很多磁盘。若当验证者，离线或设置错误，质押的币可能被罚走。请输入节点识别码以确认。",
    "dockerAbout": "安装与启动节点需要 Docker Engine。",
    "dockerAboutOk": "已安装 Docker Engine。",
    "dockerAboutMissing": "未安装 Docker Engine。请到 Docker 页安装。",
    "rewriteCompose": "重写 compose",
    "rewriteComposeTitle": "用目前 adapter 重写 compose.yml？",
    "rewriteComposeDesc": "会覆写 {{id}} 的产生档，只使用本产品为此链附带的旗标。",
    "chainMeta": "最少 {{disk}} · {{clients}} 个客户端"
  },
  "actions": {
    "detail": "详情",
    "start": "启动",
    "stop": "停止",
    "restart": "重新启动",
    "clear": "清空",
    "upgrade": "升级",
    "setVersion": "变更版本",
    "clearConfirm": "输入实例标识或 CLEAR",
    "prune": "清理映像",
    "switchNetwork": "转网络",
    "removeUnit": "一并删除 compose／实例记录",
    "restoreAfter": "清空后还原快照",
    "delete": "删除",
    "deleteTitle": "删除 {{id}}",
    "deleteDesc": "此操作会从面板移除节点。",
    "deleteC1": "会停止并移除 Docker Compose",
    "deleteC2": "会删除磁盘上的链数据",
    "deleteC3": "会删除实例记录",
    "pruneTitle": "清理未用映像",
    "pruneDesc": "输入实例标识，以清理此节点 Compose 未用映像。",
    "pruneC1": "会删除此 Compose 项目标签下未使用的映像。",
    "clearTitle": "清空 {{id}}",
    "clearC1": "会删除磁盘上的链数据。",
    "clearC2": "实例仍留在面板，状态为已停止、无数据。",
    "switchTitle": "转网络",
    "switchC1": "会先停机并清空链数据，再写入新网络。"
  },
  "policy": {
    "label": "升级策略",
    "manual": "手动",
    "notify": "通知",
    "auto-safe": "自动（安全）",
    "auto-all": "自动（全部）"
  },
  "logs": {
    "empty": "尚无日志",
    "follow": "跟随日志"
  },
  "compose": {
    "label": "Compose 文件",
    "save": "保存 compose"
  },
  "snapshot": {
    "action": "还原快照",
    "mithril": "Cardano 用 Mithril 做认证快照还原。",
    "eth": "Ethereum 主网用官方 checkpoint sync 引导共识客户端。执行层继续 snap sync。",
    "ethEl": "Hoodi／Sepolia 可还原 ethPandaOps 执行层归档，再用 checkpoint sync 引导共识层。",
    "avax": "Avalanche 在 compose 配置档使用 state-sync。",
    "near": "官方免费 NEAR tar 快照已停用。还原会清空数据，再用官方 genesis 与 epoch sync。",
    "none": "此链未设置快照来源。"
  },
  "producer": {
    "title": "Block producer 热密钥",
    "hint": "不是填 IP。请上传离线机产生的 KES、VRF 与 operational certificate。cold 密钥不要放在此主机。",
    "warn": "此节点已公开 P2P，挂上后会出块。官方拓扑把 producer 放在内网。这三份档是热密钥。",
    "kes": "KES",
    "vrf": "VRF",
    "opcert": "操作证书",
    "missing": "未挂上",
    "present": "已挂上 {{fp}}",
    "presentShort": "已在主机",
    "queuedShort": "待套用",
    "queued": "已选 · {{name}}",
    "fileHint": "常见档名 {{file}}",
    "dropOrBrowse": "将 {{file}} 拖放至此，或浏览",
    "dropping": "放开以挂上 {{label}}",
    "browse": "浏览",
    "clearFile": "移除",
    "choose": "选择档案",
    "apply": "套用并以 block producer 重启",
    "detach": "卸下并改回 relay",
    "applyTitle": "将热密钥挂到 {{id}}？",
    "applyDesc": "KES、VRF、opcert 会写入实例 keys 目录，并重写 compose。容器会以 block producer 重启。",
    "applyC1": "cold 密钥须保持离线。不要上传 cold.skey。",
    "applyC2": "档案有效时，运行中的节点可以出块。",
    "applyC3": "主网：离线或设定错误会错过出块。",
    "detachTitle": "从 {{id}} 卸下营运凭证？",
    "detachDesc": "会从此主机删除热密钥，compose 改回 relay。",
    "detachC1": "节点将不再出块。",
    "mainnet": "主网：我明白此主机会保存热密钥并出块。"
  },
  "stake": {
    "title": "准备质押（私钥由你保管）",
    "offlineKeys": "离线生成密钥。面板永不保存。",
    "deposit": "在官方 launchpad 完成存款／登记。",
    "withdrawal": "自行设置提取凭证。",
    "monitor": "在此页留意磁盘、对等节点与升级徽章。"
  },
  "playbook": {
    "overviewTitle": "各链如何质押",
    "overviewDesc": "本面板只负责运行节点。钱包与密钥由你保管。以下只连官方网站。请勿在此输入助记词。",
    "colChain": "链",
    "colModel": "如何登记",
    "colMin": "常见最低额",
    "colWallet": "你使用的钱包",
    "colPanel": "本面板负责",
    "yskDoes": "本面板会做",
    "youDo": "你要自己做",
    "steps": "步骤",
    "never": "请不要",
    "official": "官方连结",
    "seeAbout": "完整步骤见“说明”分页。",
    "nodeIdReady": "NodeID（来自此节点）",
    "nodeIdPending": "节点完成同步并回应 RPC 后，才会显示 NodeID。",
    "blsReady": "BLS 公钥",
    "blsProof": "BLS 持有证明",
    "blsPending": "节点回应 RPC 后，才会显示 BLS 凭证。",
    "copyAll": "全部复制",
    "copyNamed": "复制「{{label}}」",
    "nearStakeKey": "质押公钥",
    "nearStakeKeyPending": "首次启动完成 neard init 后出现。RPC 未就绪不代表尚未产生密钥。",
    "nearAccountId": "密钥文件 account_id",
    "nearAccountIdPending": "池建立后须改成 {{pool}}{{suffix}}。本面板只写此栏，永不写入 secret_key。",
    "nearFactory": "质押池 factory",
    "nearPublicAddr": "Public P2P（对等节点）",
    "nearPublicAddrPending": "首次启动把 WAN:{{port}} 写入 config.json 后出现。",
    "nearCreateCommand": "create_staking_pool 命令",
    "nearPointing": "质押池合约不以本服务器 IP 指向节点，而是存放此节点的 stake public key。对等节点使用上方 Public P2P（主机端口 {{port}}）。RPC 仅本机。",
    "nearAccountIdHint": "池建立后，在此写入 account_id（无须人手改档）。面板永不写入 secret_key。",
    "cosmosPubkey": "共识公钥",
    "cosmosPubkeyPending": "gaiad init 写入 priv_validator_key.json 后出现。RPC 未就绪不代表尚未产生密钥。",
    "cosmosChainId": "链号",
    "cosmosP2p": "Public P2P（external_address）",
    "cosmosP2pPending": "首次启动把 tcp://WAN:{{port}} 写入 config.toml 后出现。",
    "ethBeacon": "Beacon API（本机）",
    "ethBeaconPending": "此主机的 beacon HTTP。请自行把 validator client 对准此 URL — 此 compose 没有 VC。",
    "cosmosCreateCommand": "create-validator 命令",
    "solIdentity": "身份公钥",
    "solIdentityPending": "RPC 响应 getIdentity 后出现。本进程为 --no-voting，除非你自行创建 vote account。",
    "adaP2pPort": "Relay P2P 端口",
    "adaP2pPending": "请把本主机公开 IPv4（或 DNS）与此端口写入池注册证书。topology.json 的 localRoots 只连你自己的 block producer。本面板不探测 WAN。",
    "notPosTitle": "不是权益证明",
    "notPosBody": "此处的 Bitcoin 是完整或 Pruned 节点。本页没有质押钱包。",
    "eth": {
      "model": "本 compose 只跑执行层 + beacon，没有 validator client。请在官方 launchpad 存入 32 ETH。",
      "min": "32 ETH + 手续费",
      "wallets": "MetaMask、Ledger、Trezor — 只在官方 launchpad 使用",
      "panel": "运行 EL + beacon。RPC 与 beacon API 仅本机。compose 没有 validator client。",
      "honesty": "此实例只是执行层 + beacon。compose 没有 validator client。把 keystore 放进 beacon 数据目录不会开始 attest。存款合约不以本服务器 IP 指向节点。",
      "yskDoes": [
        "安装并启动执行层与 beacon 客户端。",
        "显示磁盘、对等节点与升级状态。",
        "不运行 validator client，亦不加载签署 keystore。"
      ],
      "youDo": [
        "用官方 launchpad 或 staking-deposit-cli 自行产生 keystore，提取地址填入你的 ETH 钱包。",
        "在本网络的官方 launchpad 存入 32 ETH。",
        "自行运行 validator client（不是此 compose），对准此实例本机 beacon API。"
      ],
      "steps": [
        "等待执行层与 beacon 同步完成。",
        "开启此网络的官方 launchpad（本页有 Hoodi 或 Mainnet）。Sepolia 不提供 launchpad 按钮。",
        "离线用 staking-deposit-cli 产生 keystore。提款地址设为你自己的 ETH 钱包。",
        "在 launchpad 存入 32 ETH（另留 gas）。",
        "自行运行 validator client，指向本卡的 beacon URL（示例：lighthouse vc --beacon-nodes）。此 compose 没有 VC — 把 keystore 放入 beacon 数据目录不会开始 attest。"
      ],
      "never": [
        "不要把助记词或提款密钥交给任何人，包括本面板。",
        "不要把签署 keystore 上传到托管云。",
        "不要指望把 keystore 复制进 beacon 数据目录后本页会开始 attest。"
      ]
    },
    "avax": {
      "model": "在 Core 或 Ledger 用运行中的 NodeID 与 BLS 证明，于 P-Chain 登记验证者。",
      "min": "2,000 AVAX + 手续费（Fuji 为 1 AVAX）；最少 14 日",
      "wallets": "Core、Ledger",
      "panel": "运行 avalanchego；RPC 回应后可显示 NodeID 与 BLS",
      "yskDoes": [
        "运行 avalanchego，RPC 只听本机。",
        "节点回应 RPC 后显示 NodeID 与 BLS 凭证。"
      ],
      "youDo": [
        "在 Core 或 Ledger 持有 AVAX。",
        "在 Core 用此节点的 NodeID 与 BLS 证明新增验证者。"
      ],
      "steps": [
        "等待此节点同步，并出现 NodeID／BLS 列（须 RPC）。",
        "复制 NodeID、BLS 公钥与 BLS proof of possession。",
        "在 Core 网页（Staking → Validate），或经 Core 用 Ledger，在 P-Chain 登记。交易不收服务器 IP。",
        "主网至少 2,000 AVAX、最短 14 日，并预留手续费。Fuji 为 1 AVAX。"
      ],
      "never": [
        "不要把 AVAX 转入本面板。",
        "不要分享 Core 或 Ledger 的复原短语。"
      ]
    },
    "ada": {
      "model": "以离线 cold／KES／VRF 密钥经营 stake pool，不是浏览器钱包一键操作。",
      "min": "质押金额由你决定（见官方文件）",
      "wallets": "官方 stake pool 工具（cold 密钥保持离线）",
      "panel": "先以 relay 运行 cardano-node；可在本页挂上热钥。",
      "honesty": "此实例预设为 relay。链上登记 pool 用你离线保管的 cold 密钥。同侪与拓扑使用本主机公开 IPv4 与本卡显示的 P2P 端口 — 面板不探测 WAN。",
      "yskDoes": [
        "运行 cardano-node，并在支援时提供 Mithril 快照还原。",
        "你提供时挂上 KES、VRF 与 opcert。拒绝 cold 密钥。"
      ],
      "youDo": [
        "离线产生池密钥。",
        "用官方 Cardano CLI 注册池。把本机公网 IPv4 或 DNS 与 relay P2P 端口写入池注册证书。",
        "在本页挂上 KES、VRF 与 opcert。不要上传冷钥。"
      ],
      "steps": [
        "阅读官方 operate-a-stake-pool 指南。",
        "在离线机器产生 cold、KES、VRF 密钥。",
        "链上注册池。在该证书广告 relay（--pool-relay-ipv4 或 DNS + 本卡 P2P 端口）。公众发现靠证书，不是 topology.json。",
        "在本实例页挂上 KES、VRF 与 operational certificate。冷钥会被拒绝。",
        "topology.json 的 localRoots 只连你自己的 block producer（advertise: false）。本面板不查 WAN 位址。"
      ],
      "never": [
        "不要当成 MetaMask 一键质押。",
        "不要把冷钥放在验证者主机。",
        "不要以为只改 topology.json 就能在链上登记 relay。"
      ]
    },
    "near": {
      "model": "在官方 factory 建立 staking-pool 合约。合约存放此节点的 public key，不是服务器 IP。",
      "min": "见官方验证者文件（建立池须 30 NEAR，另加质押）",
      "wallets": "官方 NEAR 钱包／lockup",
      "panel": "运行 neard；表单填好 create_staking_pool；池建立后只写入 account_id。",
      "yskDoes": [
        "运行 neard，RPC 只在本机，P2P 在 24567。",
        "init 后显示质押公钥、公开 P2P 位址与 factory。",
        "用池名称、拥有人与公钥填好 create_staking_pool。池建立后只写 account_id — 永不改 secret_key，永不送出交易。"
      ],
      "youDo": [
        "启动节点，等待本页出现公钥。",
        "填池名称与拥有人，然后复制命令。",
        "用你自己的 NEAR 钱包或 near-cli 签署 create_staking_pool。",
        "返回本页写入 account_id。再从钱包向该池质押。"
      ],
      "steps": [
        "启动节点，等待 neard init 后公钥出现（RPC 未就绪不代表尚未产生密钥）。",
        "填入池短名与拥有人账号。复制已填好的 create_staking_pool 命令。",
        "用你的钱包呼叫 factory（测试网 pool.f863973.m0／主网 poolv1.near），并付 30 NEAR 作储存。命令使用 --accountId；若你的 near CLI 要用 --account_id，请依该 CLI 的 --help。",
        "池建立后，在本页按“写入 account_id”（确认字为实例识别码）。不要人手改 validator_key.json。",
        "若节点已在运行请重启。等待 RPC 回应且同步完成后再质押大量金额。对等端使用 Public P2P — 合约不收 IP。"
      ],
      "never": [
        "不要在本面板贴上助记词。",
        "不要把本服务器 IP 写进合约。",
        "不要期望面板代发 create_staking_pool 交易。"
      ]
    },
    "cosmos": {
      "model": "用操作者钱包送出 create-validator。交易存放此节点的共识公钥，不是服务器 IP。",
      "min": "见官方 Cosmos Hub 文件（自行质押以 uatom 计）",
      "wallets": "Keplr 或其他由你控制的 Cosmos 钱包",
      "panel": "运行 gaiad v28；显示共识公钥；表单填好 validator.json 与 create-validator。永不写入 priv_validator_key.json，亦不代发交易。",
      "honesty": "此 gaiad 为 v28（JSON 档）。Hub 文件仍用 flags — 在此节点会失败。交易存放此节点的共识公钥，不是服务器 IP。同侪使用 Public P2P。RPC 仅本机。本面板不代发交易，亦不读取 priv_key。",
      "yskDoes": [
        "运行 gaiad，RPC 只在本机，P2P 在 26656。minimum-gas-prices 为 0.005uatom。",
        "init 后显示共识公钥、chain-id 与公开 P2P。",
        "用数量、moniker、--from 与共识公钥填好 validator.json 与 gaiad v28 命令。永不写入 priv_validator_key.json，永不代发交易。"
      ],
      "youDo": [
        "启动节点，等待本页出现共识公钥。",
        "填数量、moniker 与 --from。先复制 validator.json，再复制 gaiad 命令。",
        "用 Keplr 或你控制的 gaiad 金钥签署。不要把该助记词与本机共识金钥混用。"
      ],
      "steps": [
        "启动节点，等待 gaiad init 后共识公钥出现（RPC 未就绪不代表尚未产生金钥）。",
        "填自我委托（1atom = 1 ATOM，或 uatom）、moniker 与 --from。复制 validator.json，再复制 gaiad 命令。此节点为 gaiad v28：用 JSON 档，不是 Hub 文件的 flags。主网 chain-id 为 cosmoshub-4，测试网为 provider。",
        "复制命令的 --gas-prices 为 0.005uatom，对齐此节点。不要贴上 Hub 文件的 0.0025uatom 示例，亦不要贴 flags 版 create-validator。",
        "储存 validator.json，用 operator 钱包广播。交易不收服务器 IP。同侪使用 tcp://WAN:{{port}}。",
        "等待 RPC 回应且同步完成后再大量绑定。"
      ],
      "never": [
        "不要把 operator 钱包助记词与共识金钥混用。",
        "不要在此输入钱包助记词。",
        "不要把此服务器 IP 写进 create-validator。",
        "不要贴上 Hub 文件的 --amount／--pubkey flags — 此 gaiad 为 v28（validator.json）。",
        "不要在此节点使用 0.0025uatom gas — compose 最低为 0.005uatom。"
      ]
    },
    "sol": {
      "model": "本 compose 以 --no-voting 运行 Agave。vote account 与 withdrawer 用官方 Solana 工具建立，不是本面板。",
      "min": "见官方维运文件（硬件与磁盘需求很高）",
      "wallets": "你控制的官方 Solana CLI／钱包",
      "panel": "以 --no-voting 运行 Agave 同步节点。RPC 回应后可显示 identity pubkey。",
      "honesty": "本进程为 --no-voting。在你用官方 Agave CLI 建立 vote account 并改启动方式之前，不会投票、也不会赚取质押。本面板不移除 --no-voting。",
      "yskDoes": [
        "运行 Agave 客户端，并警告磁盘需求。",
        "RPC 回应 getIdentity 后显示 identity pubkey。",
        "不建立 vote account，亦不开始投票。"
      ],
      "youDo": [
        "在你控制的机器上，用官方 Solana 工具建立 vote 与 authorized-withdrawer 密钥。",
        "用官方 CLI 建立 vote account，并使用此处的 identity pubkey。",
        "此 compose 维持 --no-voting。"
      ],
      "steps": [
        "确认本机磁盘与 IOPS 足够（主网通常 2 TiB 或以上）。",
        "等待 RPC 回应，然后复制本页的 identity pubkey。",
        "用官方 Solana 工具在你控制的机器产生 vote 与 authorized-withdrawer 密钥，然后 solana create-vote-account。",
        "此 compose 维持 --no-voting。建立 vote account 不会令此进程开始投票。"
      ],
      "never": [
        "不要指望本面板有浏览器钱包按钮。",
        "不要把 identity 或 vote 密钥对贴进本面板。",
        "不要指望建立 vote account 后本页会开始投票。"
      ]
    },
    "dot": {
      "model": "本 compose 是全节点（没有 --validator）。session keys 与 setKeys 是官方 Polkadot.js 步骤，不是本面板。",
      "min": "见官方 wiki",
      "wallets": "Polkadot.js",
      "panel": "以全节点运行 polkadot。RPC 仅本机。没有 --validator。",
      "honesty": "本进程不是以 --validator 启动。面板不呼叫 author_rotateKeys（会改 keystore）。要成为验证者，须依官方文件加上验证者旗标，并自行对本机 RPC 做 rotateKeys。",
      "yskDoes": [
        "运行 polkadot，RPC 只听本机。",
        "不加上 --validator，亦不轮替 session keys。"
      ],
      "youDo": [
        "阅读官方 set-up-a-validator 指南。",
        "若你自行加上 --validator，对本机 RPC 呼叫 rotateKeys，再在 Polkadot.js 用 stash 绑定结果。"
      ],
      "steps": [
        "同步此全节点。",
        "阅读官方 validate 指南。此 compose 不是验证者进程。",
        "不要在此贴上 stash 助记词。若你稍后以 --validator 运行，请自行对本机 RPC 埠做 rotateKeys。",
        "在 Polkadot.js 把 session keys 设到 stash／controller，再按官方步骤绑定。"
      ],
      "never": [
        "不要在本面板贴上 stash 助记词。",
        "不要期望本页产生 session keys，或已经以 --validator 启动。"
      ]
    },
    "sui": {
      "model": "本 compose 是 Sui fullnode（fullnode.yaml），不是验证者节点。",
      "min": "见官方 Sui 文件",
      "wallets": "官方 Sui 操作者钱包",
      "panel": "以 fullnode 运行 sui-node。RPC 仅本机。",
      "honesty": "此进程不能以 Sui 验证者身份签署。验证者要用另一份设定与密钥。官方验证者文件有连结；本面板不会把节点切成验证者模式。",
      "yskDoes": [
        "以 fullnode 运行产品附带的 sui-node 映像。"
      ],
      "youDo": [
        "把此实例当 fullnode 使用。",
        "若要成为验证者，请依官方 Sui 验证者文件另建验证者设定 — 不是此 compose。"
      ],
      "steps": [
        "同步此 fullnode。",
        "把它当 fullnode：会重放 checkpoint，但不签署共识。",
        "只有在你另行建立验证者进程时，才需要官方验证者操作指南。"
      ],
      "never": [
        "不要把 SUI 转入本面板。",
        "不要期望此 fullnode 进程登记成验证者。"
      ]
    },
    "aptos": {
      "model": "本 compose 是 Aptos 公共全节点（role full_node），不是验证者。",
      "min": "见官方 Aptos 文件",
      "wallets": "官方 Aptos 操作者钱包",
      "panel": "以公共全节点运行 aptos-node。RPC 仅本机。",
      "honesty": "公共全节点不参与共识。验证者需要不同 role、密钥，通常还要 validator fullnode。本面板不会把节点切成验证者模式。",
      "yskDoes": [
        "以公共全节点运行产品附带的 Aptos 映像。"
      ],
      "youDo": [
        "把此实例当公共全节点使用。",
        "若要跑验证者，请依官方 Aptos validator-node 文件 — 不是此 compose。"
      ],
      "steps": [
        "同步此公共全节点。",
        "把它当 PFN：提供账本资料，不投票。",
        "只有在你另行建立验证者 + VFN 时，才需要官方验证者文件。"
      ],
      "never": [
        "不要在本面板输入操作者密钥。",
        "不要期望此全节点进程登记成验证者。"
      ]
    },
    "btc": {
      "model": "不是权益证明。此处是 Bitcoin 完整或 Pruned 节点。",
      "min": "—",
      "wallets": "不适用",
      "panel": "运行 bitcoind",
      "yskDoes": [
        "运行 Bitcoin 完整或 Pruned 节点。"
      ],
      "youDo": [
        "钱包另外使用。挖矿与 Lightning 不在本功能范围。"
      ],
      "steps": [
        "把此实例视为 Bitcoin 节点即可。",
        "没有质押存款，也没有验证者 keystore。"
      ],
      "never": [
        "不要在本页寻找质押钱包。"
      ]
    },
    "nearPoolSlug": "池名称",
    "nearPoolSlugHint": "只填短名。factory 会加上 {{suffix}}。",
    "nearOwner": "拥有人账号",
    "nearOwnerHint": "签署 create_staking_pool 的 NEAR 账号（你的钱包）。不是节点密钥。",
    "nearPreview": "命令预览",
    "nearWriteAccount": "写入 account_id",
    "nearWriteTitle": "为 {{id}} 写入 validator_key.json 的 account_id？",
    "nearWriteDesc": "只改现有密钥档的 account_id。不会送出 create_staking_pool。不会改 secret_key。",
    "nearWriteC1": "account_id 会变成 {{pool}}{{suffix}}",
    "nearWriteC2": "面板不会签署 factory 交易",
    "nearRestart": "写入后重启节点",
    "nearNeedKey": "请先等质押公钥出现（neard init），再填此表。",
    "nearNeedSlug": "请填池名称以写入 account_id。",
    "cosmosPointing": "此 gaiad 为 v28：先复制 validator.json，再复制 create-validator validator.json。Hub 文件仍用 flags — 在此节点会失败。交易用此节点的共识公钥，不是服务器 IP。同侪使用 Public P2P（主机端口 {{port}}）。gas 为 0.005uatom — 不要用 Hub 文件的 0.0025uatom。",
    "avaxPointing": "P-Chain 登记用此 NodeID 与 BLS 证明，不是服务器 IP。RPC 仅本机。请在 Core（Staking → Validate）登记。",
    "ethVcCommand": "Validator client 示例（不在此 compose）",
    "ethVcHint": "请自行运行 validator client，指向此 beacon URL。把 keystore 放入 beacon 数据目录不会开始 attest。",
    "cosmosAmount": "自我委托",
    "cosmosAmountHint": "单位 uatom，或填 1atom 代表 1 ATOM。只填 1 是 1 uatom，不是 1 ATOM。",
    "cosmosMoniker": "Moniker",
    "cosmosFromKey": "--from 密钥名称",
    "cosmosFromHint": "本机 gaiad 密钥名，或用 Keplr 签署。不是此主机上的共识密钥。",
    "cosmosNeedPubkey": "请先等共识公钥出现（gaiad init），再填此表。",
    "cosmosNeedFields": "请填数量、moniker 与 --from 以产生命令。",
    "copyFailed": "复制失败",
    "cosmosCreateJson": "validator.json（gaiad v28）",
    "nearNeedOwner": "请填拥有人账号以产生命令。写入 account_id 只须池名称。",
    "cosmosAmountParsed": "{{amount}} = {{atom}}"
  },
  "alerts": {
    "diskTitle": "验证者节点磁盘危急",
    "diskBody": "验证者数据卷可用空间极低。",
    "upgradeTitle": "验证者节点有可用升级",
    "upgradeBody": "一个或多个客户端有较新的钉选版本。",
    "syncTitle": "验证者节点需要留意",
    "syncBody": "有节点已同步超过 6 小时，或回报错误。",
    "rollbackTitle": "验证者升级已回滚",
    "rollbackBody": "{{id}} 升级健康检查失败，已回滚。"
  },
  "upgrade": {
    "changelog": "更新记录"
  },
  "readiness": {
    "dockerTitle": "验证者节点所需的 Docker",
    "dockerOk": "有 {{count}} 个验证者实例；已安装 Docker",
    "dockerMissing": "已有验证者实例，但找不到 docker 命令"
  },
  "detail": {
    "status": "状态",
    "sync": "同步",
    "peers": "对等节点",
    "traffic": "流量",
    "version": "版本",
    "access": "访问",
    "upgrade": "升级",
    "upgradeHint": "选择此节点如何跟进客户端版本。",
    "setVersion": "变更版本",
    "setVersionHint": "为此节点的客户端选择官方 Docker tag。会重写 compose，然后拉取并重新启动。",
    "setVersionConfirmTitle": "将 {{id}} 改为 {{tag}}？",
    "setVersionConfirmDesc": "会重写 compose、拉取 {{ref}}，并重新启动节点。",
    "setVersionC1": "运行中的容器会换成所选 tag。",
    "setVersionC2": "请输入实例识别码以确认。",
    "setVersionMainnet": "主网：错误版本可令节点离线。我明白。",
    "releaseNotes": "发布说明",
    "network": "网络",
    "networkHint": "转网络会停机并清空链数据。请先在「清空数据」确认。",
    "maintain": "维护",
    "danger": "清空数据",
    "dangerHint": "输入实例标识或 CLEAR。此操作会删除磁盘上的链数据。",
    "compose": "Compose",
    "logs": "日志"
  },
  "state": {
    "unknown": "未知",
    "stopped": "已停止",
    "created": "已建立未启动",
    "missing": "没有容器",
    "starting": "启动中",
    "rpc_wait": "运行中／RPC 未就绪",
    "running": "运行中",
    "syncing": "同步中",
    "error": "错误"
  }
}
