Live Private Voting
Generate a real Groth16 vote proof and submit it on-chain
This flow now reads the deployed contracts on Polkadot Hub testnet, generates a browser-side proof with the bundled circuit artifacts, and submits the proof to the live `PrivateVoting` contract.
Proof Inputs
Paste the Merkle proof bundle issued for your allowlisted identity. The address stays local in the browser; the contract only sees the proof, the proposal, and the vote.
On-chain Merkle root
Loading...Execution Readiness
Connected wallet
Not connected yet
Submission requirements
1. Proposal must still be active.
2. Merkle path and nullifier must match the on-chain root.
3. Wallet must be on the Polkadot Hub testnet EVM chain.
Operator Notes
The proof bundle requires 20 Merkle path elements and 20 path indices because the voting circuit is compiled for a depth-20 tree.
The proving assets are synced into `frontend/public/circuits` automatically during `npm run dev` and `npm run build`, so the browser always uses the repo’s latest circuit artifacts.