Skip to content
This repository has been archived by the owner on Dec 4, 2023. It is now read-only.

Shuta-syd/zk-voting-app-for-eth-global

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zk-voding-app

要件定義

  • ユーザ作成 / ウォレットアドレスの接続(Auro Wallet)
  • 投票機能 (まずはYES / NOだけでその後に複数個の回答を用意する、選択式)
    • Private Params -> ユーザ情報 / 回答 / 2重投票の結果?
    • バッチ処理(まとめてユーザトランザクションをオンチェーンに刻む)
      • 有人投票結果に加えて無人投票結果を織り交ぜてオンチェーンに刻む。それにより、有人の結果の秘匿性を高めることができる
        • この場合、無人投票結果をYes / Noまたは複数回答を用意して1つの回答に傾かないようにする。理由は、1つに傾くと有人投票結果がバレてしまうか
      • 無人投票結果はランダム生成であり、プロバイダーはそれらを特定することはできない
  • オンチェーンに刻まれる情報は「最終の投票結果」「ウォレットアドレス」のみ

On-Chain values

  1. yes: Yesの合計数
  2. no: noの合計数
  3. public key: 1ユーザを特定であることを示すkey(emailを暗号化?)****

処理フロー

  1. ユーザ作成
  2. 投票もしくは題目作成
  3. バッチ処理(キューにZKPが蓄積される。有人無人は問わない)
  4. スマートコントラクトでバッチ処理で送信されたZKPが改竄されていないかをsnarkjsでverifyする
  5. verify完了後にオンチェーンに刻まれる

疑問点

  • 2重投票をどのような仕組みで防止するのか

ウォレット

use case

  • ゼロ知識証明を利用してユーザが本人であることを第三者に証明する
  • 暗号化された投票履歴を証明する

https://minaprotocol.com/blog/10-zkapps-use-cases-on-mina-protocol