ZK Local Groth16 Verification - 2026-05-22
zk-local-groth16-verification-2026-05-22.md
Boundary
This route preserves legacy markdown access inside the Next.js surface. The raw repository file remains authoritative.
Open raw fileZK Local Groth16 Verification - 2026-05-22
Purpose
This packet records a fresh local verification pass for the PrivateDAO ZK companion circuits. It is intended for reviewers who need to distinguish verified ZK proof artifacts from marketing language.
Verified Scope
- Vote overlay circuit:
zk/circuits/private_dao_vote_overlay.circom - Delegation overlay circuit:
zk/circuits/private_dao_delegation_overlay.circom - Tally overlay circuit:
zk/circuits/private_dao_tally_overlay.circom - Verification keys:
zk/setup/*_vkey.json - Proof/public inputs:
zk/proofs/*.proof.jsonandzk/proofs/*.public.json
Command
npm run zk:verify:sampleEquivalent direct script:
bash scripts/zk/verify-sample.shResult
Executed on 2026-05-22 after the Testnet custody hardening commit:
[zk] verifying proof: private_dao_vote_overlay
[INFO] snarkJS: OK!
[zk] verifying proof: private_dao_delegation_overlay
[INFO] snarkJS: OK!
[zk] verifying proof: private_dao_tally_overlay
[INFO] snarkJS: OK!
[zk] verification passedWhat The Vote Circuit Proves
The current vote overlay circuit enforces:
voteis binary:0or1- voter
weightis at leastminWeight commitment = Poseidon(vote, salt, voterKey, proposalId, daoKey)nullifier = Poseidon(voterKey, proposalId, daoKey)eligibilityHash = Poseidon(voterKey, weight, daoKey)
This provides a real Groth16 companion proof path for vote validity, nullifier continuity, and eligibility binding.
Boundary
This is a local Groth16 verification packet for shipped circuit artifacts. It does not claim that Solana on-chain verifier CPI enforcement is complete. The stricter production lane remains tracked separately by:
docs/zk/enforced-runtime-evidence.mddocs/zk/external-closure.generated.mddocs/zk-capability-matrix.md
Reviewer Interpretation
Reviewers can verify that PrivateDAO has real ZK circuits, keys, proofs, public inputs, and a repeatable proof verification command. Runtime wallet captures and on-chain verifier enforcement remain distinct closure gates and should not be conflated with this local proof-verification pass.