/ovote

Offchain Voting with Onchain Trustless Execution https://github.com/aragonzkresearch/research/blob/main/ovote/ovote.pdf

Primary LanguageSolidityGNU General Public License v3.0GPL-3.0

ovote Circuits Contracts

Research project

OVOTE: Offchain Voting with Onchain Trustless Execution

This repo contains the OVOTE circuits and contracts, compatible with the ovote-node and ovote-clientlib. All code is in early stages.

More details on the OVOTE circuits and contracts design can be found at the OVOTE document.

OAV: Onchain Anonymous Voting

Reusing the same census created for OVOTE, users can vote onchain anonymously.

In OAV, voters generate a zkSNARK proof in their browsers proving that they know the private key which public key is in the Census MerkleTree and that they generated a valid signature over the vote value with that key.

Test

  • Circuits
    • Needs installed: circom, nodejs (version: >16)
    • Install the dependencies: npm install
    • Run the tests: npm run test
  • Contracts
    • Needs installed: foundry
    • Run the tests: forge test