This is the final project work of the Encode Club Solidity Bootcamp. The objetive of this project was to make a Ballot contract, that we got from the Solidity documentation examples and worked with during our classes, and implement anonymous voting features on it, using Zero Knowledge Proofs.
The project used the Semaphore protocol on the contract and on the off-chain part, to generate anonymous identities and groups, which made the anonymous voting possible.
Before you begin, you need to install the following tools:
- Node (>= v18.17)
- Yarn (v1 or v2+)
To get started, follow the steps below:
- Clone this repo & install dependencies
git clone https://github.com/dutragustavo/super-secret-zkballot.git
cd super-secret-zkballot
yarn install
- Run a local network in the first terminal:
yarn chain
This command starts a local Ethereum network using Hardhat. The network runs on your local machine and can be used for testing and development. You can customize the network configuration in hardhat.config.ts
.
- On a second terminal, deploy the test contract:
yarn deploy
- On a third terminal, start your NextJS app:
yarn start
Visit your app on: http://localhost:3000
.
This project was made by the Team 1 of the Encode Club Solidity Bootcamp: