Voting on public chains like Ethereum comes with the problem of anonymity. Wallet Addresses are prone to chain analysis at the same time some voting motions are only possible if the public address of the person is linked with a real world Identity, one example being public election of local leaders.
For voting to happen on any kind of motion, there are 2 requirements:
The smart contract needs to know all eligible public addresses that can vote on this motion
The votes should be anonymous, i.e reading the public ledger of ethereum no one should be able to figure out who voted for whom.
The Point 2. is a very big problem! How do u provide anonymity while voting on a public blockchain, this is what Votium aims to solve via ZK SNARKS.
Votium provides a framework { zKCircuits + Smart Contracts } for people to make their voting motions on top of it.
The below diagrams explains the difference between traditional voting on Ethereum { or any other public blockchain } vs anonymous voting via Votium.
Traditional Voting:
You send your vote to the smart contract, everyone knows what you have voted, you are suspectible to chain analysis and at the same time this limits the kind of voting you can have on the chain! You can’t do an election or any kind of voting that requires the voting key to be linked with some sort of centralised identity.

Voting via Votium:
Instead of sending your vote to the smart contract, you generate a ZK Proof on ur system, this proof can prove to the smart contract that you are eligible to vote, it tells it what your vote is but at the same time doesn’t reveal your voter id. You relay your vote through a relayer which basically passes your vote to the smart contract, this makes your vote completely anonymous on a public chain as the smart contract can verify whether a vote is legit or not but it can’t figure out who has voted via it!
