{"id":17590815,"url":"https://github.com/advaita-saha/zk-voting","last_synced_at":"2026-03-02T09:02:51.826Z","repository":{"id":237431118,"uuid":"623133295","full_name":"advaita-saha/zk-Voting","owner":"advaita-saha","description":"Anonymous Voting system build with the power of Zero-knowledge cryptography","archived":false,"fork":false,"pushed_at":"2023-04-16T17:37:32.000Z","size":5019,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-15T18:19:53.212Z","etag":null,"topics":["circom","circomlib","cryptography","merkle-tree","snarkjs","voting-application","zero-knowledge","zk-snarks"],"latest_commit_sha":null,"homepage":"","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/advaita-saha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-03T19:04:22.000Z","updated_at":"2025-05-26T16:28:38.000Z","dependencies_parsed_at":"2024-05-01T18:52:40.444Z","dependency_job_id":null,"html_url":"https://github.com/advaita-saha/zk-Voting","commit_stats":null,"previous_names":["advaita-saha/zk-voting"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/advaita-saha/zk-Voting","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advaita-saha%2Fzk-Voting","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advaita-saha%2Fzk-Voting/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advaita-saha%2Fzk-Voting/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advaita-saha%2Fzk-Voting/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/advaita-saha","download_url":"https://codeload.github.com/advaita-saha/zk-Voting/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/advaita-saha%2Fzk-Voting/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29996278,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["circom","circomlib","cryptography","merkle-tree","snarkjs","voting-application","zero-knowledge","zk-snarks"],"created_at":"2024-10-22T04:43:19.892Z","updated_at":"2026-03-02T09:02:51.782Z","avatar_url":"https://github.com/advaita-saha.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Annonymous Voting System built with zk-SNARKS\n\n![alt text](img/dia.png)\n\nPaper-based voting (like the Elections) is a very expensive way of voting. I have no exact data, but it costs billions of dollars, and it is always in the air that somebody cheated it.\nA blockchain-based system costs only a fraction of this price, and it is super secure because the blockchain is public and everybody can track everything on it.\nThe only thing that is untrackable is that who voted to which party thanks to the zero-knowledge proof. So, blockchain-based voting seems like the holy grail of voting.\n\n## How does it work?\n\nThe voting system registers the voters list and create a polling system. When the voter comes to the system the, it generates a ticket for them which they can use only once to vote.\nThe ticket is a zero-knowledge proof which proves that the voter is in the voters list and it is not used before. The ticket is generated by the voter's private key and the public key of the system.\n\u003c/br\u003e\n\u003cimg src=\"img/term.png\" width=\"500\"\u003e\n\u003c/br\u003e\nWhen the voter comes to the polling system, it downloads the ticket from the system.\nThe system verifies the ticket and then the voter can vote to a party. The vote is also a zero-knowledge proof which proves that the voter is in the voters list and it is not used before and it is a valid vote.\n\n## How to run the project\nInstall dependencies if you haven't already\n\n- Clone this repository and then run the following commands\n```bash\nnpm i\nnpm run start-poll\nnpm run download-ticket\nnpm run vote\n```\nThere are many other commands in the `./package.json` file. You can run them by typing `npm run \u003ccommand-name\u003e`.\n\n- To clean the existing build files\n```bash\nnpm run clean\n```\n\n### Installing dependencies\n\n- Install rust\n```bash\ncurl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh\n```\n- Install circom\n```bash\ngit clone https://github.com/iden3/circom.git\ncd circom\ncargo build --release\ncargo install --path circom\n```\n- Install snarkjs\n```bash\nnpm install -g snarkjs\n```\n\n- Others command that are important\n```bash\nnpm run build\nnpm run setup\nnpm run generate-solidity\n```\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvaita-saha%2Fzk-voting","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadvaita-saha%2Fzk-voting","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvaita-saha%2Fzk-voting/lists"}