← back to projects
BUILDING TypeScript

NullVote (SUI)

Anonymous DAO governance voting on SUI via Groth16 ZK proofs. Hackathon MVP — privacy-preserving on-chain ballots.

nullvote-sui
TypeScriptMoveGroth16Circom

The hypothesis

DAO governance suffers when voters self-censor under public ballot reveal. A Groth16-based nullifier proof on SUI lets eligible voters cast a single ballot without revealing which option they picked, while the contract can still tally results in real time and prevent double-voting.

Stack & architecture

What I learned

ZK on SUI is more pleasant than on EVM thanks to Move’s resource model — nullifier registration and ballot tally collapse into a single object update without the gas-and-storage gymnastics. The hard part is keeping the trusted-setup story honest for the eligibility tree.