Skip to content
@PriVote-Project

PriVote

Private on-chain voting solution

Stargazers


Logo

Privote

On-chain Private Voting Mechanism
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Constituents
  3. Problems We Solve
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Product Name Screen Shot

Privote is a decentralized voting mechanism that allows users to vote on-chain in a private and secure manner. It uses Maci protocol made by PSE team to ensure that votes don't leak and are not tampered with. The project is open-source and anyone can contribute to it. Privote enables users to create various types of private polls and vote on them. It also provides various types of auth mechanisms like Anon-Aadhar (aadhar based verification from India), WorldCoin-auth, NFC (can be used in IRL events like ethglobal hackathons), etc, enabling holding of various interesting polls without revealing the choice of voters.

(back to top)

Built With

(back to top)

Constituents

Privote is made up of the following components:

  • Frontend - The UI for Privote that allows users to create different types of polls and handle voting procedure smoothly.
  • Maci-Docker - The docker image for the Maci protocol flow to publish votes easily. Users publishing votes from the frontend can use this docker image to publish votes in few commands. Privote deploys the Maci-Docker image on a server and uses it to provide users options to publish votes on-chain directly from the frontend.
  • Contracts - The smart contracts for Privote on which the whole voting mechanism is based. The contracts integrate
    • Maci - The protocol for private voting
    • Chainlink - Uses Chainlink CCIP to enable usage of Privote from multiple chains.
    • Anon-Aadhar - Aadhar based verification for Indian users
    • WorldCoin - WorldCoin based verification for global users
    • NFC - NFC based verification for IRL events like EthGlobal hackathons

Problems We Solve

  1. On-chain Vote Visibility:
  • Problem: Traditional on-chain voting mechanisms expose voter choices publicly, which can lead to voter hesitance and resistance due to privacy concerns.
  • Solution: We utilize the Maci protocol for private voting, ensuring that votes remain confidential and only the final tally is revealed.
  1. Lack of Ways to Avoid Bad Actors (Multiple Voting, etc.):
  • Problem: Traditional on-chain voting mechanisms lack ways to prevent bad actors from voting multiple times or manipulating the voting process. People can create multiple wallets, etc, to dodge the system.
  • Solution: We use various auth mechanisms like Anon-Aadhar, WorldCoin-auth, NFC, etc, to ensure that only legitimate users can vote as per the rules auth of organizers.
  1. Bribery and Coercion:
  • Problem: Traditional on-chain voting mechanisms are susceptible to bribery and coercion, as voters can be forced to reveal their choices as can be verified on-chain.
  • Solution: With Privote, voters can vote privately, ensuring that their choices remain confidential and cannot be verified on-chain, leaving no incentive for bribers or coercers.
  1. Lack of Cross-chain Compatibility:
  • Problem: With advent of various L2s and other chains, chain limitation have got real, people having tokens on different chains can't interact with dapps on other chains.
  • Solution: We use Chainlink CCIP to enable usage of Privote from multiple chains, enabling users to vote from any chain they have tokens on.

Roadmap

  • More Auth Mechanisms We will be integrating more on-chain authentication mechanisms like Open Passport to make the dApp more generic.

  • Further Plans Other Features: Make things more automated, UI more inclusive, etc.

  • Vote Without Wallet There may be a market for paid polling through this mechanism that allows users to directly vote with NFC, etc., without the need for funds.

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

Your Name - @lordforever - shashanktrivedi1917.com

Project Link: https://github.com/Privote-project

(back to top)

Acknowledgments

We extend our deepest gratitude to the mentors from EthSingapore, Maci, Chainlink, Worldcoin, and all the other organizations who generously shared their time, expertise, and guidance throughout this journey. Your support was invaluable in helping us navigate challenges, refine our ideas, and ultimately bring this project to fruition.

Thank you for inspiring us and pushing us to reach our full potential. We are truly grateful for the opportunity to have learned from such talented and passionate individuals.

(back to top)

Popular repositories Loading

  1. privote-contracts privote-contracts Public

    Solidity 1

  2. privote-frontend privote-frontend Public

    TypeScript 1 1

  3. .github .github Public

    1

  4. maci-docker maci-docker Public

    TypeScript

Repositories

Showing 4 of 4 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…