Polygon ZKVote is a voting platform for growing the web3.0 community.Polygon ZKVote is used to protect the privacy of voter using Zero Knowledge.
This application allows anyone to create new voting process or to vote on already existing processes. In order to vote users need to register their identity using Discord. Registration is done with the use of Semaphore smart contracts. User’s IdentityCommitment is stored on chain, but their identity remains private. When casting a vote, proof of registration is created and verified by Semaphore smart contract. Users are not allowed to vote on the same voting process twice. Double voting is disabled with the use of external nullifiers (voting process id). Nullifier hash (hash of external nullifier and identity nullier) is stored on chain and checked every time voting happens, which prevents double voting.
This application can be used by DAOs as a governance tool. DAO members can vote on important decisions without revealing which voting option they chose. This privacy aspect is really important as it prevents discrimination and possible conflicts inside DAO. Polygon ZKVote can essentially be used for any big public decision, where keeping privacy is important.
Currently this demo is only for POC. Here we are using Discord server as authorization to create DAO,joined DAO and create identity. In future this will be replace by other authentication system.Users only get access to the voting page and get voting rights after the user is verified by Discord role.
ZK proof generated while casting vote. So it will take sometime to complete transactions.
Polygon Scan URL:- https://mumbai.polygonscan.com/address/0xb8590db0744d508168d0dae4f0ae4368fc3e10de
Demo:- https://vimeo.com/741542407
- Login - Login with Discord to generate ZK identity. (Transaction done by Relay)
- Create DAO - Discord server's admin has access to create DAO. Also include the Discord role so that, members belonging to that role can join DAO and participate in the voting process. (Transaction done by Relay)
- Join DAO - Use DAO identity to join DAO (Transaction done by Relay)
- Create Proposal - DAO's Admin can create proposal.
- Add Voter - DAO's Admin can add voter to proposal
- Start Poll - DAO's admin can start poll
- Cast Vote - Voter belongs to DAO can cast vote- Use ZK for voting (Transaction done by Relay)
- End Poll - DAO's admin can end poll
- View Result - Any voter can see voting result. (Transaction done by Relay)