去中心化隱私節點維運與健康檢查
維運 AeroNyx 去中心化隱私節點:健康、節點發現、盲中繼、重啟恢復、容量、封包執行態、雙跳證明品質與受控 Cargo cache 維護。
「去中心化隱私節點維運與健康檢查」是 AeroNyx 文件體系中的正式本地化頁面。AeroNyx 將協議層與產品體驗分開:協議負責不可關閉的開放能力,產品負責 App、Nodeboard、加密聊天、加密儲存和節點營運體驗。
概覽
本文用繁體中文說明「去中心化隱私節點維運與健康檢查」在 AeroNyx 開源隱私協議中的作用、目前實作邊界、隱私不變量以及開發/節點營運注意事項。
在 AeroNyx 架構中的位置
本主題屬於 節點營運者。理解它的關鍵不是把 AeroNyx 看成單一中心化服務,而是把它看成一組可由客戶端、去中心化隱私節點、後端協調器和 Nodeboard 共同使用的開放隱私協議能力。
目前實作重點
- 所有涉及用戶內容的能力都必須透過端對端加密或密文物件傳遞。
- 去中心化隱私節點可以回報健康、容量、連線、路徑證明和聚合統計,但不能讀取訊息正文、存取憑據或用戶秘密。
- Nodeboard 用於營運可觀測性:展示節點健康、peer discovery、重啟恢復、容量、封包/流量與協議狀態。
- 後端在目前階段負責協調、排序、聚合與公開文件接口;這些職責後續可以逐步下沉到 Rust 協議層。
隱私邊界
AeroNyx 的核心不變量是 blind-node invariant:轉發節點和 MemChain 協調器只能處理密文、時間戳、證明、聚合健康信號和有限路由元資料。它們不能讀取明文、不能看到 DNS 內容、不能知道訪問目的地,也不能重建誰和誰通信。
節點與營運者需要關注
節點營運者需要關注頻寬、連線上限、IP 池、conntrack、檔案描述符、packet drops、pps、bps、peer store、heartbeat 新鮮度和 restart recovery。營運介面應該幫助排障,但不能暴露用戶內容或可關聯身份的資料。
開發者與產品接入
客戶端、App、AI agent 或第三方服務接入時,應優先復用 AeroNyx 的加密信封、簽名、盲轉發、匿名憑證和健康檢查約定。任何新接口都必須明確哪些欄位是公開元資料,哪些欄位必須留在 E2E payload 內。
目前狀態
本頁描述的是 AeroNyx 目前可公開說明的協議與產品設計邊界。後續如果實現多跳路由、盲簽名憑證、加密媒體 blob、MemChain 同步或節點發現升級,應在同一 translation_key 下持續維護。
<!-- memchain-witness-operations-v1:start -->固定見證節點維運
固定見證是 MemChain 承諾協調節點的明確營運信任策略。只應配置獨立營運、經過稽核且預期保存該協調節點承諾歷史的跟隨節點。
[memchain]
commitment_coordinator_enabled = true
commitment_witness_node_ids = ["<64位十六進位Ed25519節點身分-1>", "<64位十六進位Ed25519節點身分-2>"]
commitment_witness_startup_required = false
commitment_witness_min_verified = 2
驗證前必須替換全部佔位符。最多允許三個唯一、非零的 32-byte Ed25519 身分,而且這些設定只能用於承諾協調節點。
安全上線流程:先升級至少兩個獨立稽核的跟隨節點;在非嚴格模式加入準確身分;執行 aeronyx-server validate -c /etc/aeronyx/server.toml;重啟並確認 operator_pinned 已接受簽名證據;重複驗證後再開啟嚴格模式。
非嚴格模式下,見證不可達會產生明確的降級警告,但保留服務可用性。遠端較新或歷史分叉的有效簽名證據一律阻止啟動。嚴格模式下,沒有任何已驗證的固定見證證據也會阻止啟動。
checkpoint 是簽名協議介面,匿名瀏覽器 GET 不是有效健康檢查。固定見證增強回滾偵測,但本身不構成共識、法定人數或最終性。
已驗證的生產部署 — 2026 年 7 月 14 日
一個生產協調節點配置了三個由營運者固定的見證身分。兩個獨立營運並經過稽核的跟隨節點現已運行相容的檢查點服務,並各自驗證和保存了同一份包含 33 個區塊、8,339 個承諾的歷史。協調節點接受了兩台跟隨節點分別簽署的 converged 結果,隨後開啟 commitment_witness_startup_required = true。
經驗證的重新啟動中,啟動保護回報 configured=3、eligible=3、attempted=3、verified=2、converged=2;UDP 與 TUN 監聽只在檢查通過後開放。這是營運者固定節點提供的回滾證據,不是共識、法定人數、公鏈最終性或代幣執行。
已強制執行 2-of-3 啟動門檻 — 2026 年 7 月 14 日
生產協調節點現已同時設定 commitment_witness_min_verified = 2 與 commitment_witness_startup_required = true。少於兩個不同的固定見證提供有效簽名證據時,節點會拒絕啟動:零個有效回應返回 signed_checkpoint_unavailable,只有一個有效回應返回 signed_checkpoint_threshold_unmet。最近一次生產重啟在 UDP、TUN 與公開 API 監聽器開放前,成功驗證了三個設定見證中的兩個。
這是營運者定義的啟動門檻,不是網路共識、法定人數、最終性、領導者選舉或分叉選擇。Rust 心跳狀態只上報包含 startup_minimum_verified 在內的聚合策略與結果欄位,不暴露見證身分、端點、檢查點雜湊或簽名。
相關協議規格
<!-- signed-commitment-ledger-related-v1:end --> <!-- aof-semantic-integrity-v1:start -->MemChain AOF 完整性檢查
將這項唯讀門檻加入每次計畫升級與重啟。由於輸出僅有聚合資訊,可安全用於維運自動化。
sudo aeronyx-server memchain verify-aof \
--config /etc/aeronyx/server.toml
sudo aeronyx-server memchain verify-aof \
--path /var/lib/aeronyx/.memchain
| 結果 | 營運者操作 |
|---|---|
status: verified 且 torn_tail_bytes: 0 | 繼續設定驗證與受保護的重新啟動流程。 |
torn_tail_detected | 不要手動編輯檔案。僅受保護的 append-open 可在完整語義掃描後移除不完整物理尾端。 |
| 命令回傳完整性錯誤 | 立即停止。保留 AOF 與日誌進行事故審查;完整記錄的語義損壞必須 fail closed。 |
隱私: 不得上傳、貼上或公開 AOF 檔案本身;只分享驗證器的聚合輸出。
完整的完整性與證明邊界: 簽名承諾帳本與見證保護.
<!-- aof-semantic-integrity-v1:end --> <!-- build-cache-maintenance-v1:start -->受控 Cargo 編譯 cache 維護
頻繁原始碼編譯可能在節點留下數十 GB 可重新產生的 Cargo 物件。統一維運命令可在不刪除協議狀態、不重啟服務的前提下盤點並回收空間。
1. 唯讀盤點,不修改主機
先執行唯讀盤點。輸出包含舊倉庫 target、隔離 build root、固定 Rust 版本、受保護 binary 的 SHA-256 與檔案系統聚合容量。
cd /root/open/AeroNyx
./deploy/node/aeronyx-node.sh build-cache --repo-dir "$PWD"
2. 預覽每個待刪除項目
逐行檢查 dry-run。真正刪除必須使用 root 並明確傳入 --yes;status 與 upgrade 不會暗中觸發清理。
sudo ./deploy/node/aeronyx-node.sh prune-build-cache \
--repo-dir "$PWD" \
--dry-run
3. 執行已確認的清理
sudo ./deploy/node/aeronyx-node.sh prune-build-cache \
--repo-dir "$PWD" \
--yes
若使用自訂 build root,請在三個命令中都匯出 AERONYX_BUILD_TARGET_ROOT,確保盤點與清理解析同一個隔離 target 佈局。
保留範圍與可刪除範圍
- 受保護: 命令保留正在使用的
target/release/aeronyx-server、目前固定工具鏈/服務 cache、其他 release 執行檔與回滾產物、/var/lib/aeronyx協議資料、/etc/aeronyx身分/設定,以及同機其他服務的 cache。 - 可重新產生: 只刪除明確可重建的 Cargo 產物,例如舊 debug/跨目標目錄、
deps、build、.fingerprint、incremental、.rlib、.rmeta、.d,以及同一服務的舊工具鏈 target。 - 執行保護: 刪除前會取得與 install/upgrade 相同的部署鎖,並驗證 systemd MainPID 指向受保護 binary;清理前後都會計算 hash,任何變化都會失敗。
維護後驗證
cache 清理不會重啟節點,也不要求排空活躍連線。完成後檢查服務健康、啟動就緒、發現 quorum 與雙跳證明新鮮度。
./deploy/node/aeronyx-node.sh status --repo-dir "$PWD"
./deploy/node/aeronyx-node.sh health --repo-dir "$PWD" --json
生產驗證證據 — 2026 年 7 月 26 日
一次受控生產執行回收 50,649,768 KiB,檔案系統使用率由 90% 降至 65%。受保護 binary SHA-256、MainPID 與重啟次數均未變;啟動檢查維持零失敗,雙跳證明維持 ready/stable。
<!-- build-cache-maintenance-v1:end --> <!-- memchain-llm-provider-operations-v1:start -->隱私邊界: 盤點只輸出本地路徑、大小、工具鏈版本、binary hash 與聚合容量;不會讀取或列印密文 payload、MemChain 記錄、金鑰、節點身分、路由、客戶端位址、DNS、目的地或社交圖譜。
可選認知 worker 服務商維運
SuperNode 認知 worker 是可選功能,預設關閉。只應在信任角色明確的處理節點上啟用。
最小本地服務商設定
[memchain.supernode]
enabled = true
[[memchain.supernode.providers]]
name = "local-ollama"
type = "openai_compatible"
api_base = "http://127.0.0.1:11434/v1"
api_key = ""
model = "llama3.2"
max_tokens = 1000
temperature = 0.3
[memchain.supernode.routing]
fallback = "local-ollama"
[memchain.supernode.privacy]
default_level = "structured"
allow_full_for = []
也支援 api_key = "$ENV_VAR"。不要把秘密寫入已提交的設定。
OpenAI 相容 endpoint 寫法
以下三種寫法都會解析到同一個 Chat Completions endpoint:
https://provider.examplehttps://provider.example/v1https://provider.example/v1/chat/completions
當 type = "anthropic" 時可省略 api_base;目前 runtime 使用 Anthropic 官方 Messages endpoint。
失敗與資源行為
- 模型成功回應在 JSON 解析前限制為 8 MiB;非成功診斷回應限制為 64 KiB。
- 傳輸、API、解析與空回應失敗會讓該服務商進入 30 秒單調時鐘冷卻,而不是永久停用。
- HTTP 429 的
Retry-After會在 1-300 秒範圍內執行;缺失時使用 30 秒。 - 路由器可以切換至其他健康服務商,並在冷卻結束後自動重新考慮失敗服務商,不需要排程任務。
重新啟動前執行 aeronyx-server validate -c /etc/aeronyx/server.toml。本文行為已進入目前 main 原始碼;已安裝節點必須重新建置或升級至包含此變更的版本。
<!-- memchain-llm-provider-operations-v1:end -->隱私邊界:儲存和 relay 節點仍是節點盲的。啟用的認知 worker 與外部服務商會看到設定隱私層級允許的 prompt。保持
default_level = "structured";除非已取得處理完整內容的明確同意,否則allow_full_for應為空。