多者実行
分散させるのは実行と証言であって、判断ではありません。意見の食い違いは情報を持たないが、実行の食い違いは情報を持つからです。この道が耐えられる上限は ⌊(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 を物理的なラベルに印刷し、チェーンの外に、一緒には鋳造し直せない錨を置くことです。
これは脆弱性ではありません——署名が指し示すのは鍵であって、主体ではありません。それをはっきり述べることのほうが、直すことより重要です。

