Root docs
Repository viewer
Legacy docs parity surface
Back to repository viewer
Repository document
ZK Threat Extension
zk-threat-extension.md
Boundary
This route preserves legacy markdown access inside the Next.js surface. The raw repository file remains authoritative.
Open raw fileZK Threat Extension
This note extends the main threat model for the additive PrivateDAO zk stack.
The deployed governance program is unchanged. These threats apply to the off-chain Circom, Groth16, registry, and reviewer-verification layer that now accompanies the live protocol.
Scope
Covered zk surfaces:
zk/circuits/private_dao_vote_overlay.circomzk/circuits/private_dao_delegation_overlay.circomzk/circuits/private_dao_tally_overlay.circom- setup artifacts under
zk/setup/ - proof and public-signal artifacts under
zk/proofs/ - zk registry under
docs/zk-registry.generated.json
Additional Threat Classes
Circuit / verifier drift
Risk:
- a proof verifies, but the reviewer is looking at stale or mismatched circuit artifacts
Mitigation:
docs/zk-registry.generated.jsonbinds each layer to its source, sample input, proof, public signals, proving key, and verification keynpm run verify:zk-registryrejects missing or mismatched registry paths and signal counts
Public-signal tampering
Risk:
- a proof package is presented with altered public outputs to misrepresent what was actually proven
Mitigation:
npm run verify:zk-negativemutates public outputs and confirms verification rejectionnpm run verify:zk-consistencyrecomputes the sample public signals through SDK helpers and checks they match the stored outputs
Proof-object tampering
Risk:
- a proof object is modified while the surrounding review package stays intact
Mitigation:
npm run verify:zk-negativealso mutates proof coordinates and requires rejection- the cryptographic manifest makes proof drift tamper-evident at the repository level
Registry / document drift
Risk:
- zk docs, generated registry, and reviewer artifacts drift apart over time
Mitigation:
npm run build:zk-registrynpm run verify:zk-registrynpm run verify:generated-artifactsnpm run verify:review-surface
Setup artifact substitution
Risk:
- the wrong verification key or proving key is paired with a circuit or proof package
Mitigation:
- the registry records the exact setup paths per circuit
- the cryptographic manifest fingerprints the verification keys
- zk verification commands use the exported verification keys directly from the tracked artifact tree
Sample witness misrepresentation
Risk:
- reviewers are shown proofs without a clear mapping back to witness assumptions
Mitigation:
- each circuit has a committed sample input under
zk/inputs/ npm run zk:allrebuilds the full proving path from those sample inputsdocs/zk-evidence.mdanddocs/zk-stack.mdmap each layer to its witness and public signals
Residual ZK Risks
The current zk stack remains intentionally bounded:
- it is off-chain today and not yet an on-chain verifier integration
- Groth16 trusted setup assumptions apply
- the tally layer currently proves a bounded reveal sample, not a full hidden on-chain tally replacement
- zk does not make treasury execution private
- zk does not remove metadata leakage from transaction timing or wallet activity
Reviewer Verification Path
The minimum zk review path is:
npm run build:zk-registry
npm run verify:zk-registry
npm run verify:zk-consistency
npm run verify:zk-negative
npm run zk:allThis is intended to make the zk surface reviewer-verifiable instead of claim-based.