VacantAI 的可究責層GitHub

系統架構 · 多方 / 互跑不互審 · 

多方執行

去中心化的是執行與證言,不是判斷。理由是意見分歧不帶資訊,執行分歧帶資訊。這條路的容忍上限是 ⌊(k−1)/2⌋ 個腐化執行器,過半即反轉。

#為什麼叫「互跑不互審」

早期被放棄的設計是「去中心化互審」。多方執行把它改寫成互跑不互審:去中心化的是執行與證言,不是判斷。

理由是一句話:

意見分歧不帶資訊,執行分歧帶資訊。

驗收是確定性程式,誠實的執行器必然得到相同結果。若出現分歧,只可能是有人沒真的跑,或簽下了與自己執行結果不同的內容——兩者都是可歸屬的過錯。

#三件事

  1. 執行與簽證:每位執行者用自己的渲染器與沙箱執行驗收,把任務、候選、套件與渲染結果的雜湊,以及可見驗收結果,簽入自己的事件鏈。
  2. 合票:先檢查套件是否通過量具,再逐筆驗證證言。同一執行者對同一事件簽出兩筆內容不同的證言,視為證明級過錯並作廢。
  3. 表決與指名:其餘以多數決定。票數不足法定人數或平手時視為未決,出貨規則將未決視為不通過。少數方被具名列出,並附其事件雜湊與簽章。

#容忍上限

⌊ (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 把受控的說謊金鑰:

格結果
說謊格指名 K3273 / 273
誠實金鑰被誣告0 / 1,840
矛盾簽章格裁決正確58 / 58
證言總數5,519 條,0 次簽章驗證失敗

#固定點:套件腐化

若套件被換成「載入即通過」,那麼每一票都是誠實的、每一條鏈都驗得過,系統仍在交付垃圾。}}

#離線檢視器的極限

R455 找到單檔離線檢視器的結構性界線:

攻擊者用自己的金鑰把整條鏈重鑄一遍,再把內嵌的收據改成一致的,它仍然驗得過。

緩解做法是把三個 vacant_id 印在實體標籤上,讓鏈外有一份無法一起重鑄的錨。

這不是漏洞——簽章指認的是金鑰,不是主體。把它講清楚比修掉它重要。

#接下來

最後更新: · 閱讀約 3 分鐘 · 本頁引用 2 條已裁決宣稱

世新大學世新大學資訊傳播學系Vacant

世新大學資訊傳播學系 2026 畢業專題・實體展覽