第三者検証ガイド
リポジトリ非公開に関する注意 本リポジトリ(
stark-ballot-simulator)は現時点で非公開です。ソースコードへのアクセスが必要な手順(verifier-serviceのビルド、imageId-mapping.jsonの参照、election-manifest.json/close-statement.jsonの整合確認、inputCommitment再計算)は、リポジトリが公開されるまで実行できません。 ソースコード不要の手順(bundle.zipの展開、journal.jsonの完全性チェック)は、ダウンロード済みの ZIP のみで実行可能です。
この章は、アプリの検証ページでダウンロードした bundle.zip を使って、第三者がローカルで行える最小監査手順をまとめたものです。
この章の手順だけで /verify 画面の最終判定を完全再現するわけではありません。ここで確認できるのは主に次の 5 点です。
receipt.jsonに対する STARK レシート検証journal.jsonに対する除外件数・集計整合の確認journal.jsonに対するtotalExpected == treeSizeの確認election-manifest.json/close-statement.jsonの公開監査アーティファクト整合確認public-input.jsonに対するinputCommitment再計算
一方で、UI の最終判定に関わる次の材料は bundle.zip 単体では通常そろいません。
- 掲示板の包含証明 / 整合性証明
- 自票 inclusion 用のビットマップ証明
- 有効化されている場合の第三者 STH ソース照合
この章で扱う範囲
- 検証ページから取得した
bundle.zipのローカル検証 - Ubuntu 環境での Rust セットアップ
verifier-serviceを使った STARK レシート検証journal.jsonの完全性チェック(excludedSlotsやtotalExpectedなど)- 公開監査アーティファクト(
election-manifest.json/close-statement.json)の整合確認 public-input.jsonに対するinputCommitment再計算
この章で扱わない範囲
- アプリケーション本体のビルド・デプロイ
- AWS インフラや非同期 finalize の運用トラブル対応
- アプリを一から複製して再現実行するための手順
上記の調査が必要な場合は、次のページを参照してください。
- チェック一覧(チェック ID と判定ロジック)
- API エンドポイント一覧(手動検証に使う API 契約)
- 検出メカニズム(改ざんシナリオごとの失敗パターン)
- 非同期プローバー(非同期 finalize の処理と障害調査導線)
最低限確認する不変条件
| 項目 | 合格条件 |
|---|---|
| STARK レシート | verifier-service verify が status: "success" |
| 投票の除外有無 | excludedSlots == 0 かつ missingSlots == 0 かつ invalidPresentedSlots == 0 |
| 期待投票数整合 | totalExpected == treeSize |
| 公開監査アーティファクト | election-manifest.json と close-statement.json の自己整合・相互整合が成立 |
| 入力整合性 | inputCommitment の再計算値が journal.json と一致 |