コンテンツにスキップ

Prover

Prover は、一般ユーザーが自分の証明書を受け取り、ゼロ知識証明を添付するためのWebアプリケーションです。

主な機能

  • PDF証明書の読み込み: ドラッグ&ドロップまたはファイル選択
  • ZK証明の生成: ブラウザ内でゼロ知識証明を計算
  • WebAuthn署名: 生体認証による電子署名
  • 証明付きPDFの出力: 証明データを埋め込んだPDFをダウンロード

技術スタック

項目技術
FrameworkNext.js 14
LanguageTypeScript
ZK Librarysnarkjs (WASM)
PDF Processingpdf-lib
AuthenticationWebAuthn / FIDO2

開発

セットアップ

Terminal window
cd prover
npm install
npm run dev

開発サーバーが http://localhost:3000 で起動します。

ビルド

Terminal window
npm run build
npm run start

静的エクスポート(GitHub Pages用)

Terminal window
npm run build:export

out/ ディレクトリに静的ファイルが出力されます。

証明生成フロー

1. PDFをアップロード
2. PDF内容のSHA3-512ハッシュを計算
3. ZK回路にハッシュを入力
4. ブラウザ内でZK証明を生成(WASM)
5. WebAuthnで電子署名
6. 証明データをPDFに埋め込み
7. 証明付きPDFをダウンロード

多言語対応

Proverは日本語と英語に対応しています。

  • src/i18n/ja.json - 日本語
  • src/i18n/en.json - 英語

右上の言語切り替えボタンで変更できます。

公開アセット

public/ ディレクトリには以下のファイルが含まれます:

ファイル説明
commitment.wasmZK回路のWASMバイナリ
commitment_final.zkey証明生成用ZKey
vkey.json検証鍵(年度別にも対応)

環境変数

変数名説明デフォルト
NEXT_PUBLIC_BASE_PATHベースパス/
BASE_PATH静的エクスポート用/

トラブルシューティング

証明生成が遅い

  • 初回はWASMファイルのダウンロードと初期化に時間がかかります
  • 2回目以降はキャッシュにより高速化されます
  • 推奨: 安定したネットワーク環境で使用

WebAuthn署名が失敗する

  • ブラウザがWebAuthnをサポートしているか確認
  • HTTPS環境(またはlocalhost)でのみ動作
  • 生体認証やセキュリティキーが利用可能か確認