多方執行
去中心化的是執行與證言,不是判斷。理由是意見分歧不帶資訊,執行分歧帶資訊。這條路的容忍上限是 ⌊(k−1)/2⌋ 個腐化執行器,過半即反轉。
#為什麼叫「互跑不互審」
早期被放棄的設計是「去中心化互審」。多方執行把它改寫成互跑不互審:去中心化的是執行與證言,不是判斷。
理由是一句話:
意見分歧不帶資訊,執行分歧帶資訊。
驗收是確定性程式,誠實的執行器必然得到相同結果。若出現分歧,只可能是有人沒真的跑,或簽下了與自己執行結果不同的內容——兩者都是可歸屬的過錯。
#三件事
- 執行與簽證:每位執行者用自己的渲染器與沙箱執行驗收,把任務、候選、套件與渲染結果的雜湊,以及可見驗收結果,簽入自己的事件鏈。
- 合票:先檢查套件是否通過量具,再逐筆驗證證言。同一執行者對同一事件簽出兩筆內容不同的證言,視為證明級過錯並作廢。
- 表決與指名:其餘以多數決定。票數不足法定人數或平手時視為未決,出貨規則將未決視為不通過。少數方被具名列出,並附其事件雜湊與簽章。
#容忍上限
⌊ (k − 1) / 2 ⌋
過半數串通時,結果會反轉,誠實者反而被指名,而且機制本身不知道自己落在門檻的哪一邊。
| 掃描批次 | 過半後的誣告率 |
|---|---|
| r446(371 題 × 5 候選) | 0.175 |
| r443(91 題 × 5 候選) | 0.374 |
#模擬掃描:加人不如換規則
200 格掃描(r446 371 題 × 5、r443 91 題 × 5,k ∈ {1, 3, 5, 7},腐化比例 0–70%,五種攻擊):
| 發現 | 數字 |
|---|---|
| 固定腐化比例下,k 從 1 到 7,交付率一字不變 | 串謀 67.39%、破壞 0% |
| k=3/法定人數=2,缺一票 | 1-1 平手 → 未決、不指名 |
#真跑:R453 與 R454
#R453 跨機器一致性
| 規模 | 368 任務 × 5 候選 = 1,840 個候選 |
| 環境 | macOS + Linux(k=2) |
| 結果 | 可見驗收標籤在兩台機器上 1,840 / 1,840 一致;兩條鏈都驗得過 |
| 限制 | Windows 排除(沙箱建不起來) |
#R454 說謊的指名
k=3,1 把受控的說謊金鑰:
| 格 | 結果 |
|---|---|
| 說謊格指名 K3 | 273 / 273 |
| 誠實金鑰被誣告 | 0 / 1,840 |
| 矛盾簽章格裁決正確 | 58 / 58 |
| 證言總數 | 5,519 條,0 次簽章驗證失敗 |
#固定點:套件腐化
若套件被換成「載入即通過」,那麼每一票都是誠實的、每一條鏈都驗得過,系統仍在交付垃圾。}}
#離線檢視器的極限
R455 找到單檔離線檢視器的結構性界線:
攻擊者用自己的金鑰把整條鏈重鑄一遍,再把內嵌的收據改成一致的,它仍然驗得過。
緩解做法是把三個 vacant_id 印在實體標籤上,讓鏈外有一份無法一起重鑄的錨。
這不是漏洞——簽章指認的是金鑰,不是主體。把它講清楚比修掉它重要。

