Repolode
TrustLevel

TrustLevel/ZK-Voting-App

投票者がゼロ知識証明でメンバーシップを証明し、投票内容を匿名に保てる、Cardano上のプライバシー保護型オンチェーン投票アプリです。

スター
5
フォーク
4
未解決の Issue
0
最終コミット
一昨日

これは何?

ZK Voting Appは、Cardanoブロックチェーン上で動作する投票アプリケーションです。主催者はイベントを作成し、参加者をメールで招待して、投票用コントラクトをオンチェーンに公開します。参加者はブラウザー上でSemaphoreのIDを生成し、公開コミットメントを登録したうえで、Groth16のゼロ知識証明を添えて投票します。この証明によって、投票者が登録済みグループに属していることを示し、二重投票を防ぐ一度限りのnullifierを含めます。そのため、投じられた票から投票者を特定することはできません。

投票方式は、1人1票のシンプル投票と、決められたポイントを選択肢に配分する加重投票に対応しています。バックエンドが投票トランザクションを作成して送信するため、投票者はウォレットもADAも必要ありません。イベントはCardano MainnetまたはPreprodテストネットで実施でき、主催者はイベント作成時にネットワークを選択します。投票期間の終了後、集計結果はオンチェーンで確認できます。

リポジトリは、Aikenスマートコントラクト、SQLiteとLevelDBを使うNestJSバックエンド、Next.jsフロントエンド、トランザクションビルダー、ZK証明モジュールで構成されています。

主な機能

  • 01Semaphoreを基盤とするGroth16ゼロ知識証明による匿名投票
  • 02一度限りのnullifierで二重投票を防止
  • 03シンプル投票と加重投票に対応
  • 04投票者はウォレットもADAも不要で、バックエンドがトランザクションを送信
  • 05Cardano上で最終集計結果を誰でも検証可能

ユースケース

  • 参加者を限定し、投票内容を非公開にしたまま拘束力のあるグループ投票を実施する
  • オンチェーンで改ざんを検知できる結果を求める組織が、会員投票を開催する
  • Preprodテストネットで、費用をかけずに匿名のオンチェーン投票を試す

クイックスタート

  1. 1

    すべてのワークスペースをインストールする

    npm install
  2. 2

    環境変数を設定する(バックエンドにはBlockfrostキーと、資金が入ったリレーウォレットが必要です)

    cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local
  3. 3

    バックエンドをポート3000で起動する

    cd src/backend && npm run start:dev
  4. 4

    フロントエンドをポート3002で起動する

    cd src/frontend && npm run dev

使う前に知っておきたいこと

  • ローカルで実行するには、Blockfrost APIキーと、資金が入ったPreprodリレーウォレットが必要です。
  • Mainnetでは、主催者が約15 ADAと手数料を負担し、投票者1人あたり1.3 ADAのデポジットが必要です。
  • 先にGitHub用のSSHキーを設定するか、git URLをHTTPSに書き換える設定をしないと、インストールに失敗することがあります。

収録されている特集

トピック

#zero-knowledge#cardano#blockchain#voting#privacy#semaphore#groth16#typescript

よくある質問

ZK-Voting-App とは?
投票者がゼロ知識証明でメンバーシップを証明し、投票内容を匿名に保てる、Cardano上のプライバシー保護型オンチェーン投票アプリです。 ZK Voting Appは、Cardanoブロックチェーン上で動作する投票アプリケーションです。主催者はイベントを作成し、参加者をメールで招待して、投票用コントラクトをオンチェーンに公開します。参加者はブラウザー上でSemaphoreのIDを生成し、公開コミットメントを登録したうえで、Groth16のゼロ知識証明を添えて投票します。この証明によって、投票者が登録済みグループに属していることを示し、二重投票を防ぐ一度限りのnullifierを含めます。そのため、投じられた票から投票者を特定することはできません。
ZK-Voting-App は無料で使えますか?ライセンスは?
ZK-Voting-App は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
ZK-Voting-App は今もメンテナンスされていますか?
活発にメンテナンス中。ZK-Voting-App の最終コミットは 2026年11月4日 です。
ZK-Voting-App は何に使えますか?
参加者を限定し、投票内容を非公開にしたまま拘束力のあるグループ投票を実施する オンチェーンで改ざんを検知できる結果を求める組織が、会員投票を開催する Preprodテストネットで、費用をかけずに匿名のオンチェーン投票を試す
ZK-Voting-App のインストール方法は?
すべてのワークスペースをインストールする: npm install 環境変数を設定する(バックエンドにはBlockfrostキーと、資金が入ったリレーウォレットが必要です): cp src/backend/.env.example src/backend/.env && cp src/frontend/.env.example src/frontend/.env.local バックエンドをポート3000で起動する: cd src/backend && npm run start:dev フロントエンドをポート3002で起動する: cd src/frontend && npm run dev
ZK-Voting-App はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/TrustLevel/ZK-Voting-App

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト