Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第三者検証ガイド

この章は、検証ページでダウンロードした bundle.zip と対応する公開 repository snapshot を使い、第三者がローカルに行える最小監査手順をまとめます。 /verify 画面の最終判定を完全に再現する手順ではなく、下表の不変条件を確認する手順です。

公開 snapshot に関する注意 すべての Step には、検証対象リリースと対応する公開 repository snapshot が必要です。 加えて、ZIP の admission と展開を行う Step 3 以降には、ダウンロード済み ZIP が必要です。

bundle.zip 単体では揃わないもの(検証材料として ZIP に入らないもの):

  • GET /api/sessions/:sessionId/finalizations/:finalizationId/verification が返す claimed tally (presentation.tally)、verification.checksverification.steps
  • 投票者端末に残る投票意図、乱数、投票レシート
  • /verify の Recorded-as-Cast 判定に使う session-scoped な自票 receipt / root-at-cast proof state と、サーバー側の整合性評価結果
  • 自票 inclusion 用のビットマップ証明
  • 有効化されている場合の第三者 STH ソース照合

public-input.json には zkVM 入力として提示された各投票の index、commitment、Merkle path が含まれます。 この範囲は PoC の設計意図に沿っています。 配布対象アーカイブ の構成も参照してください。

この部の章

想定読者と前提

  • 想定読者:配布された bundle.zip を独立にローカル監査したい第三者
  • 前提:Ubuntu 系 Linux と jqunzip などの基本 CLI、対応する公開リポジトリ snapshot へのアクセス。 詳細は はじめに を参照してください。

この部で扱わないもの

  • /verify UI 最終判定の完全再現と、投票者端末のローカル証跡を使った Cast-as-Intended 検証(必要な材料は上の「bundle.zip 単体では揃わないもの」を参照)
  • AWS インフラのデプロイと運用手順

関連する章

この章は bundle.zip のローカル監査に絞ります。 範囲外の作業は次のページを参照してください。

最低限確認する不変条件

項目合格条件
STARK レシートverifier-service verifystatus: "success"
receipt と journal の結合receipt 内の journal bytes を現行 contract で decode した全 proof-bound field が journal.json と一致
投票の除外有無excludedSlots == 0 かつ missingSlots == 0 かつ invalidPresentedSlots == 0
期待投票数整合totalExpected == treeSize
処理投票数totalVotes > 0
集計合計整合journal.jsonverifiedTally の合計が validVotes と一致
公開入力の基本整合性public-input.json が現行 contract に沿い、入力数、root、重複検査が成立
公開監査アーティファクトelection-manifest.jsonclose-statement.json の自己整合と相互整合が成立
入力整合性inputCommitment の再計算値が journal.json と一致