Git Product home page Git Product logo

zkvote-node's Introduction

zkvote: Using ZK-SNARK to Implement Decentralized Anonymous Voting on p2p Network

zkvote is a powerful tool for anonymous voting. It uses a cryptographic function called a ZK-SNARK to keep the voter from revealing its identity. It is also built on a peer-to-peer network so that no single entity or authortity can control the access or result of the voting. Moreover, zkvote utilizes a developing standard called Decentralized Identifier (DID) and Verifiable Credential (VC) to prove the validity of the identity.

How it Works?

  1. Generate keypair
    • Use zkvote-web to generate keypair / DID / identity commitment
    • Doesn't support import at this moment
    • Store in browser localStorage
  2. Propose/Join
    • Proposer
      • Use zkvote-web to propose a new subject to be voted on
    • Joiner
      • Use zkvote-web to join an existing subject
  3. Exchange VC
    • Joiner sends its identity commitment to proposer via other network
      • For example: email, SMS...
    • Proposer receives the identity commitment of the joiner from the network
    • Proposer generates a verifiable credential (VC) for joiner and sends it to joiner. This VC includes:
      • Subject hash
      • identity commitment of joiner
      • Signature of issuer
      • public key of issuer
    • Joiner receives the VC
  4. Vote
    • Proposer
      • Generates the proof that corresponds to the subject
      • Uploads the proof and the VC to zkvote-node
    • Joiner
      • Verify the VC for the subject
      • Generates the proof that corresponds to the subject
      • Uploads the proof and the VC to zkvote-node
  5. Open
    • Use zkvote-web to see the latest result

Contribution

See this document for more technical details

zkvote-node's People

Contributors

kimiwu123 avatar ccniuj avatar jtobkin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.