安全性と信頼境界
公開検証可能性と頑健性は別の軸である。このスタックは公開検証可能である。勝った見積が最小値だったことも、決済で価値が保存されたことも、誰でも確かめられる。一方、配備中のエンジンは説明責任の段階の第 1 段にある。逸脱は検出され、プロトコルは止まる。この両方を言うのが、このページの目的である。
出典: zkpi/ACCOUNTABILITY.md, qomm/BINDING.md, oclob/docs/THREAT_MODEL.md, defmi/ZKPI_WIRE.md, defmi/REVIEW.md
攻撃者
- 注文を読み、それを見て自分の注文を前後に並べる運営者や順序付けノード。
- share(秘密分散の分け前)を盗む、誤った計算をする、結果が不利なときだけ止まる MPC ノード。
- 同じ予約を二度使う、結果を見てから決済を拒む、または過去の通信を再送する参加者。
- DeKYX の資格を別の市場や別の期間へ持ち込む保有者。
- DeFMI に古い root(状態の要約値)、別の市場の資産、改変した指図を送る提出者。
- 公開板、約定、通信量、タイミングを見ている外部の観測者。
- 離散対数を破れるだけ長く commitment(値を固定して隠した値)を持ち続ける者。
委員会のパラメータ
説明責任の段階
7 台のうち 1 台が逸脱したとする。外の世界は最終的に何を知り得るか。
| 段 | 得られるもの | 必要なもの |
|---|---|---|
| 1. abort(中断)付き安全性 | 出力は正しい。さもなければ出力がない | dishonest majority(不正な多数派)でもよい |
| 2. 責任者を特定できる abort | …加えて、正直な参加者は誰の責任かを知る | dishonest majority でもよい |
| 3. 公開で責任者を特定できる abort | …加えて、transcript(通信の記録)を読む誰もがそれを知る | 掲示板(bulletin board) |
| 4. 公開の説明責任 | …加えて、審判者が transcript だけから判定を下せる | 掲示板 |
| 5. 頑健性 | abort が起きない。正直な参加者は何があっても出力を得る | honest majority |
各仕組みがどの段にあるかを、分けて書く。リポジトリはかつて、これらをすべて「attribution(責任の帰属)」と呼んでいた。
- 配られた share: 第 4 段、ただし境界の部分だけ。 メイカーは配る share ごとに署名する。だから、後で別の share を主張するノードがいれば、そうしたことを誰でも示せる。範囲は 1 メッセージであり、プロトコル全体ではない。
- ノードがエンジンに入れる値: 通信路の上では第 0 段。いまは回路の中で検査できる。 参加者ごとの入力検査は、配られた値と違う値を入れたノードの名を挙げる。追加のラウンドは 1 つ。以前の版では、検査の係数をノードが先に読める commitment から導いていた。証明を書く途中で、ノードが検査に引っかからない誤差を選べることが分かった。いまはチャレンジを入力段階の後に引く。判定は修復ではない。
- MPC 本体: 第 1 段。 MP-SPDZ の malicious 安全性が保証するのは、逸脱が少なくとも検出されることである。検出であって、責任の特定でも、止まらないことでもない。
- 頑健な復元: 第 5 段。9 ノードで実装し、実行した。 n ≥ 4t+1 では share が Reed–Solomon 符号をなし、次数 2t の積を直接訂正できる。だから Berlekamp–Welch 復号器が、分割処理、チェックポイント、参加者の除外の代わりになる。2 台の機械、2 つの独立したビルドで計測した。嘘つきが 1 台でも 2 台でも、止まらずに正しい答えを出し、犯人の名を挙げた。費用は乗算 1 回・参加者 1 人あたり体の元 18.2 個で、配備中のエンジンは 64.2 個を使う。頑健でないもの: 前処理、二重シェア分散、出力の開示、入力段階。重要なのは入力段階であり、それには参加する機関があと 2 つ要る。
- quote proof(見積が正しく計算されたことの証明)は別の軸にある。 これが失敗すれば、答えが誤っていたことは分かる。どのノードが誤らせたかは分からず、答えも手元に残らない。
論証の全体は説明責任のページにある。エンジン内の Reed–Solomon 復号器、9 ノードでの第 5 段、dishonest majority に耐える費用、そして不正をする側としてのテイカー。
検証者が検証するもの、しないもの
本体(製品版)のトランザクションには、提出された証拠が丸ごと載っている。各 Avalanche 検証者は独立に次を検査し、通れば状態遷移を原子的に適用する。3-of-7 の Ed25519 承認、型付きの zkPI、完全な quote proof、共同で組み立てた 2 本の範囲証明、テイカーの価格限度、資産の連結、DvP の関係式、チェーンとレールのドメイン、期限、連番、直前の状態 root、nullifier(二重使用を防ぐ使用済み印)。
匿名性は他人の通信量で決まる
2 つの計測が、別の側から同じことを言っている。周囲に他の決済がない note ring(おとりを含めた候補集合)では、ring の大きさがどうであれ、使われた note(受取人を隠した残高の単位)を確実に名指しできる。使われるのは最新の note であり、それより新しいおとりは存在し得ないからである。adaptor signature による PvP も、進行中の swap が 1 件だけなら、相手の脚を確実に名指しできる。どちらの構成も、自分を他人の通信の中に隠すものであり、通信がなければ何もしない。違うのは交換比率である。つまり、一定量の疑いを買うのにどれだけの通信量が要るかが違う。新しさを揃えたおとり規則は、決済 16 件分の通信量で名目の 1/R に達する。市場ごとの handle(市場ごとに別の識別名)は、進行中の swap が k 件で 1/k に達する。なお PvP の観測者にはタイミング情報を与えていない。prepare の到着を見ている現実の観測者は、これより有利である。
何度も開かれる commitment
メイカーの値付け規則の commitment は、一度開いて終わりではない。規則が生きている間ずっと置かれ、見積のたびに開かれる。しかも仕組みはオークションである。Rivinius らは、計算量的な束縛は commitment の寿命とともに弱まると指摘する。いつか離散対数を破った者は、他の当事者の入力を検出されずにずらせる。「オークションでは、これは他者の入札を下げるのに使い得る」。これはまさにこのスタックの形である。だからこれは、ここに限って耐量子 commitment を求める、文献上もっとも強い論拠である。量子計算機は要らず、時間さえあればよい。
計測した代替案は二つある。VOLE-in-the-Head commitment はランダムオラクルだけに依拠するが、一度しか開けない(最初の開示後は Δ が公開になる)。RFQ では係数が、まだ届いていない依頼に依存するので、開示を先にまとめて済ませることもできない。格子(BDLOP)commitment は何度でも開けるが、1 回あたり数キロバイトかかる。未解決の問いは、先行研究のページに書いたとおり、F_p 上でランダムオラクルだけに依拠し、何度も開ける commitment である。
この問いのうち、署名と鍵交換の半分は移行が進んでいる。8 リポジトリすべてで、ハイブリッドの Ed25519 + ML-DSA-65 と X25519 + ML-KEM-768 を採用した。1 台のホストで受入済みで、2026-09-07 に 8 リポジトリすべての main に統合した。状況、サイズ、古典のまま残すものは耐量子化のページにある。
意図的に信頼境界へ入れないもの
TEE(信頼実行環境)を入れない。CPU 製造者の attestation 鍵、エンクレーブの実装、マイクロアーキテクチャのサイドチャネルを、信頼境界に加えない。OCLOB の脅威モデルは、Tesseract 型の設計に対してこれを明示している。スタック全体で同じ立場をとる。
防御しないもの
- 3 台以上の MPC ノードが結託して秘密を復元すること。
- 侵害された参加者の端末。
- 公開の価格帯別の板からの推測。参加者が 1 人しかいない価格帯では、その参加者の数量が差分から漏れる。
- 公表された約定からの推測。大口注文の存在は推測され得る。
- ネットワーク層のメタデータ。IP アドレス、接続時刻、再送間隔、パケット数。匿名化ネットワークは含めていない。固定周期と中継ホップが隠すのは、あるスロットが本物だったかどうかである。誰が接続しているかは隠さない。
- 相場操縦、見せ玉、市場外での価格操作。暗号はこれらを裁定しない。
- 全ノードの停止や分断のもとでの liveness の保証。設計は fail closed(異常時は止まる側に倒す)である。平文への切り替えはなく、依頼は暗号化した永続キューで待つ。
- 送金者が知る送金内容と、時刻・候補群・市場・予約の周辺情報から生じる関連付け。
- メモリ上のレート制限器。再起動で初期化され、インスタンス間で合算されない。レビュー文書では、これを唯一の防御と呼んだ文の隣に、そう記録してある。