歷史記錄 · 2026-07-20¶
重大重構里程碑¶
2026-07-20 ─ pinning 架構 A′ 定案:技術棧 Go→TypeScript、簽章 SignedPayload 化、DMCA 入輪(pinning-service.md/部署資訊 open-4wd-pinning.md 全面改寫)¶
決策檔:D-20260720-01
實作前實查主 repo 程式碼發現三缺口:①「OrbitDB peer」職責純 Go 無解——LedgerCheckpointEvent 走帳本自身 OrbitDB 複寫(topic=帳本 address、自訂 heads/entry-fetch 協定、Admission v1),語意只在主 repo TS 碼,kubo 看不懂帳本;②bootstrap 門口 kubo 站不了(瀏覽器只會 /ws//wss+自訂 DHT /open4wd/kad/1.0.0,kubo 走 /ipfs/kad/1.0.0);③/pin//unpin 簽章位元組未定義、無 timestamp/nonce 重放防護。裁決=A′(考量主 repo 可調整+最大化去中心化):容器仍三顆,自建 image 只剩 app(TS)=vendored 主 repo ledger+peer-discovery+key-manager 棧的 ledger-peer(真 OrbitDB peer+bootstrap+檢查點原生訂閱)兼管理 API;kubo/cluster 用上游官方 image;Go 退場(TS 節點反正必存在,單語言消滅位元組對拷、砍 fork 門檻)。BOOTSTRAP_PEER_PRIVKEY 歸 app(kubo 僅 keygen 工具);circuit relay 收編 app 選配(RELAY_ENABLE 預設開)=孤兒歸位。簽章=SignedPayload 正規形(sha256(dagCbor({nonce,payload,signer,timestamp}))、payload.type: 'pinning-pin'|'pinning-unpin' 域分隔、±30s+nonce 去重)。授權=白名單∪信譽閾值(讀自家 derive 的 DerivedState、不依賴外部)。配額記帳=cluster pin metadata 唯一事實來源(零獨立 DB、重啟不丟帳)。DMCA notice API 入輪(DMCA_ENABLE 預設關;新 env SMTP_URL/DMCA_AGENT_EMAIL)。新 env 另有 LEDGER_DB_ADDRESS/RELAY_ENABLE;PVC 三顆(+app-pvc)。改寫檔:程式架構/pinning-service.md(全檔、章節號保留)/部署資訊/open-4wd-pinning.md(目錄樹 TS 化、env 表、runbook、CI 鏈)/程式架構/dmca.md(mgmt-api 稱名→pinning 管理 API)。同日 DMCA 細部裁決(多輪問答定案):①notice 儲存=節點本地 level(原「OrbitDB collection」用語廢除——個資絕不進 content-addressed 供應面、需真刪除/歸檔抹除、level 已在依賴樹零新增引擎且無原生模組;dmca.md §3 改題、pinning-service.md §9 同步)②admin decision 補 hold action(權利人訴訟通知攔停自動 restore)③反通知恢復=每日掃描制(waitingPeriodEndDate+14 工作日跳週六日、逾期未攔停自動 re-pin、宕機補跑、admin 可提前)④收件防濫用補同信箱冷卻+全域寄信速率上限(限流於寄信之前)⑤DMCA_ENABLE 僅限單一實例掛載⑥備份=app-pvc 快照必做+加密匯出指令(AES-GCM、存放自決、不內建寄信排程)。定案的維運語意:DMCA=各維運者私有法務窗口(不同步=設計特性);節點內 pin/unpin 全自動、全網下架清單永遠走主 repo git PR 人工軌;社群節點 unpin 即滿足法遵、官方因兼營主站實務跟進發版層。現行公開權威=程式架構/pinning-service.md+部署資訊/open-4wd-pinning.md+程式架構/dmca.md;跨 repo 決策記錄=工作區內部文件(未入 repo)伺服器元件依賴分析 §10.10+§10.9 主 repo 待辦 9–12(client PinningProvider 接線/getGatewayUrl=<nodeUrl>/ipfs/<cid> 規則/bootstrap/list.txt 建檔/relay 宿主歸屬)。