MACI Documentation
MACI (Minimal Anti-Collusion Infrastructure) is a cryptography-based on-chain voting system that provides privacy protection and anti-collusion capabilities through zero-knowledge proofs.
Quick Navigation
New to MACI? Read What is MACI to understand core concepts, then follow the Quick Start Guide to create your first vote.
Need to integrate into your app? Check out SDK Installation and Complete Examples.
Want to understand technical details? Start with Protocol Overview to learn how MACI works.
Learning by Role
Application Developers
You want to integrate MACI voting functionality into your application:
- What is MACI - Understand basic concepts
- Quick Start - Run your first example in five minutes
- SDK Installation - Configure development environment
- Create Round - Learn to create voting rounds
- Voting Guide - Implement user voting flow
Protocol Researchers
You want to understand MACI’s cryptographic mechanisms and design philosophy:
- Protocol Overview - Overall architecture
- Core Concepts - Key components and data structures
- Cryptography - EdDSA, Poseidon, ZK proofs
- Privacy Protection - Identity anonymization and anti-collusion design
- Message Flow - Lifecycle of voting messages
Contract Developers
You want to understand MACI contract implementation or perform secondary development:
- Architecture - Contract system architecture
- Registry Contract - Operator and round management
- AMACI Contract - Anonymous voting implementation
- Workflow - Complete voting lifecycle
Operators
You want to run a MACI Operator node:
- Protocol Overview - Understand operator responsibilities
- Message Flow - Learn message processing
- Workflow - Understand processing timing and requirements
Core Components
Smart Contracts
- Registry - Manages operator registration and voting round creation
- AMACI - Anonymous voting contract instance, handles user registration and voting
SDK and Tools
- @dorafactory/maci-sdk - TypeScript client SDK
- @dorafactory/maci-operator - Operator system
- maci-crypto - Rust cryptography library
Zero-Knowledge Circuits
ZK circuits implemented using Circom, supporting Groth16 and PLONK proof systems.
Use Cases
- DAO Governance - Community proposals and protocol parameter voting
- Quadratic Funding - Gitcoin Grants-style public goods funding
- Organization Elections - Internal elections and representative selection
- Token Voting - Weighted voting based on token holdings
Technical Resources
- Minimal anti-collusion infrastructure - Original proposal
- MACI anonymization - Anonymization design
- GitHub Repository - Source code and examples
Getting Help
Having issues? Check GitHub Issues or submit a new issue.