build private onchain voting
MACI is the best fit when the user asks for private onchain voting because it directly targets vote privacy, collusion resistance, and verifiable public tallies. Semaphore complements it for private group membership and anonymous signaling, but it is not a complete governance/tally stack by itself.
Also available as JSON · Markdown
Recommended stack
MACI
Use MACI for private, coercion-resistant voting with encrypted votes, coordinator-managed tallying, zk proofs, and public verifiable results.
Semaphore
Use Semaphore for anonymous group membership, private eligibility checks, or simpler anonymous signaling where full MACI tally infrastructure is not required.
The Graph
Index poll configuration, signup/message events, proof submissions, and final tallies for dashboards and agent-readable governance state.
Considered and excluded
- railgun — Useful for private token flows, but it is not a voting or anti-collusion governance protocol.
- aztec — Useful for private smart contracts, but MACI is the direct fit for coercion-resistant voting with verifiable tallies.
Risks
- MACI privacy and collusion resistance depend on an honest coordinator and safe coordinator key handling.
- Production rounds require correct zkey artifact selection, deployment configuration, and voter eligibility policy.
- Semaphore alone prevents identity disclosure and double-signaling but does not provide MACI's full tally/coordinator workflow.
- Indexing governance events can leak timing or participation metadata if dashboards are designed carelessly.
Next steps
- Choose whether the product needs full MACI private voting or a simpler Semaphore anonymous signaling flow.
- Define voter eligibility policy, Sybil resistance, poll duration, vote options, quadratic/non-quadratic mode, and result-publication requirements.
- Generate and secure coordinator keys, then choose test or ceremony zkey artifacts based on the deployment stage.
- Deploy a local or testnet poll and verify merge, prove, submit-onchain, and tally publication end to end.
- Add an indexer and dashboard that reports poll state without overstating voter privacy guarantees.
What the agent receives
The intent page exposes the same structured recommendation shape agents should use: matched intent, stack roles, readiness scores, difficulty, risks, next steps, and registry version.
{
"intent": "I want private onchain voting or private DAO governance",
"matched_intent": "build-private-onchain-voting",
"recommended_stack": [
{
"slug": "maci",
"name": "MACI",
"role": "supporting_protocol",
"readiness_score": 94,
"integration_difficulty": "high",
"reason": "Use MACI for private, coercion-resistant voting with encrypted votes, coordinator-managed tallying, zk proofs, and public verifiable results."
},
{
"slug": "semaphore",
"name": "Semaphore",
"role": "wallet_and_identity",
"readiness_score": 85,
"integration_difficulty": "medium",
"reason": "Use Semaphore for anonymous group membership, private eligibility checks, or simpler anonymous signaling where full MACI tally infrastructure is not required."
},
{
"slug": "the-graph",
"name": "The Graph",
"role": "indexing_and_data",
"readiness_score": 80,
"integration_difficulty": "medium",
"reason": "Index poll configuration, signup/message events, proof submissions, and final tallies for dashboards and agent-readable governance state."
}
],
"excluded_candidates": [
{
"slug": "railgun",
"reason": "Useful for private token flows, but it is not a voting or anti-collusion governance protocol."
},
{
"slug": "aztec",
"reason": "Useful for private smart contracts, but MACI is the direct fit for coercion-resistant voting with verifiable tallies."
}
],
"risks": [
"MACI privacy and collusion resistance depend on an honest coordinator and safe coordinator key handling.",
"Production rounds require correct zkey artifact selection, deployment configuration, and voter eligibility policy.",
"Semaphore alone prevents identity disclosure and double-signaling but does not provide MACI's full tally/coordinator workflow.",
"Indexing governance events can leak timing or participation metadata if dashboards are designed carelessly."
],
"next_steps": [
"Choose whether the product needs full MACI private voting or a simpler Semaphore anonymous signaling flow.",
"Define voter eligibility policy, Sybil resistance, poll duration, vote options, quadratic/non-quadratic mode, and result-publication requirements.",
"Generate and secure coordinator keys, then choose test or ceremony zkey artifacts based on the deployment stage.",
"Deploy a local or testnet poll and verify merge, prove, submit-onchain, and tally publication end to end.",
"Add an indexer and dashboard that reports poll state without overstating voter privacy guarantees."
],
"generated_with": "composewith.eth",
"registry_version": "2026.06.10-8752c9d"
}