🧪 This is a draft for an Anonymous voting dApp designed to facilitate anonymous and secure voting. By leveraging the Semaphore protocol for zero-knowledge proofs and the Gelato Relay network for transaction relaying, this dApp ensures voter privacy, data integrity, and resistance to censorship.
⚙️ Built using NextJS, RainbowKit, Hardhat, Wagmi, Viem, and Typescript.
-
✅ Anonymous Voting: Uses Semaphore protocol to enable anonymous voting through zero-knowledge proofs.
-
🪝 Secure and Transparent: Ensures votes are securely recorded on the blockchain and visible for verification without compromising voter identities.
-
🧱 Decentralized Transaction Relaying: Utilizes Gelato Relay to submit transactions, adding a layer of anonymity by obfuscating the voter's wallet address.
To get started follow the steps below:
- Install dependencies if it was skipped in CLI:
git clone https://github.com/your-username/enigmA-vote.git
cd enigmA-Vote
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 packages/hardhat/hardhat.config.ts.
- On a second terminal, deploy the test contract:
yarn deploy
This command deploys a test smart contract to the local network. The contract is located in packages/hardhat/contracts and can be modified to suit your needs. The yarn deploy command uses the deploy script located in packages/hardhat/deploy to deploy the contract to the network. You can also customize the deploy script.
- On a third terminal, start your NextJS app:
yarn start
Visit your app on: http://localhost:3000. You can interact with your smart contract using the Debug Contracts page.