MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to enable secure, private, and collusion-resistant voting on blockchain networks, ensuring that individual votes cannot be bought, sold, or coerced. Developed by the Privacy & Scaling Explorations (PSE) team at the Ethereum Foundation, it combines zero-knowledge proofs (zk-SNPs) and public-key cryptography to create a system where a central coordinator can process votes and prove the final tally's correctness without revealing any individual voter's choice. This makes it a foundational tool for on-chain governance, quadratic funding, and any application requiring a trust-minimized, verifiable decision-making process.
MACI (Minimal Anti-Collusion Infrastructure)
What is MACI (Minimal Anti-Collusion Infrastructure)?
A cryptographic protocol for secure, coercion-resistant voting and decision-making on blockchain networks.
The core mechanism of MACI relies on a trusted coordinator who manages the voting process. Voters submit encrypted votes using the coordinator's public key, and only this coordinator can decrypt them for final tallying. To prevent coercion or vote-buying, MACI allows voters to change their vote in a final key-changing ceremony, rendering any previously promised vote invalid. The coordinator's actions are constrained by cryptographic proofs; they must generate a zk-SNP (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) that proves the final result was computed correctly from all valid, encrypted votes, without any tampering or censorship.
MACI's primary application is in decentralized governance and quadratic funding mechanisms, such as those used by Gitcoin Grants. In these contexts, it prevents "whale" voters or coalitions from unduly influencing outcomes through financial collusion. By ensuring vote secrecy and allowing for last-minute changes, it protects voters from retaliation and makes vote-selling economically non-viable. The protocol's security model assumes the coordinator is honest but curious—they can see individual votes but are prevented from altering the result due to the publicly verifiable zk-SNP.
Implementing MACI involves several key components: a set of smart contracts for state management and proof verification, a client-side application for vote submission and key management, and the coordinator's service for processing. While powerful, it introduces complexity and requires users to manage cryptographic keys actively. The development of 1/1 and 1/N trust models and projects like clr.fund and Vocdoni demonstrate ongoing efforts to enhance its accessibility and decentralize the coordinator role further, solidifying its position as the standard for anti-collusion in blockchain-based voting systems.
Etymology and Origin
The term **MACI** is a deliberate and descriptive acronym that reveals its core cryptographic and game-theoretic purpose.
The acronym MACI stands for Minimal Anti-Collusion Infrastructure. It was coined by Vitalik Buterin in a 2018 blog post titled "Minimal anti-collusion infrastructure," which outlined the foundational concept. The name is a direct description of its goal: to provide a minimal framework—meaning the simplest possible set of cryptographic primitives—specifically designed to be anti-collusion, preventing coordinated vote-buying or bribery in decentralized voting systems. The term infrastructure positions it as a base layer upon which applications, particularly quadratic funding and voting mechanisms, can be securely built.
The intellectual origin of MACI is deeply rooted in the challenges of on-chain governance and quadratic funding. Early decentralized voting mechanisms were vulnerable to obvious forms of collusion, where a voter could cryptographically prove how they voted to a third party in exchange for a bribe. Buterin's proposal synthesized concepts from zk-SNARKs (for privacy and proof correctness) and a central coordinator model (for anti-collusion enforcement) into a novel cryptographic protocol. It was a direct response to the need for collusion-resistance, a property absent from simpler blockchain voting schemes.
The development of MACI from concept to implementation was primarily driven by the team at Privacy & Scaling Explorations (PSE), a research group within the Ethereum ecosystem. Key contributors, including Barry Whitehat and Kobi Gurkan, evolved the theoretical design into a practical system, with the first major production use case being clr.fund, a decentralized quadratic funding platform. This implementation history solidifies MACI's origin as an Ethereum-centric solution to a universal blockchain governance problem, establishing its terminology in the lexicon of cryptographic voting.
How MACI Works: A Step-by-Step Mechanism
A detailed walkthrough of the cryptographic protocol that enables collusion-resistant, privacy-preserving voting on a blockchain.
MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol that enables secure, private, and collusion-resistant voting on a blockchain. Its primary mechanism involves a central coordinator who uses a private key to process encrypted votes, ensuring that only valid, non-duplicate votes are tallied while preserving voter anonymity. This prevents bribery and coercion, as voters cannot prove how they voted to a third party, even if they wanted to. The system's integrity is secured through zk-SNARKs, which allow the coordinator to prove the correctness of the tallying process without revealing any private voter data.
The process begins with user registration. Each participant generates a public-private key pair and submits their public key to a smart contract, registering it with the coordinator. This establishes their identity for the voting round. When casting a vote, a user encrypts their choice (e.g., a candidate index) using the coordinator's public key and submits this encrypted message, along with a zk-SNARK proof, to the contract. This proof verifies that the vote is valid according to the rules of the poll (e.g., for a registered user) without revealing the vote's content.
The coordinator's processing phase is the core of MACI's anti-collusion guarantee. Only the coordinator, who holds the corresponding private key, can decrypt the votes. They download all encrypted messages, decrypt them, and process the results according to a first-come-first-served rule for each voter's latest valid vote. Critically, the coordinator then generates a zk-SNARK proof (often called a tally proof) that attests to the correctness of this entire process: that every counted vote was from a registered user, that no votes were altered, and that the final tally correctly reflects the latest valid votes.
Finally, the coordinator publishes the final tally and the accompanying zk-SNARK proof to the smart contract. Anyone can verify this proof to be mathematically convinced that the result is correct, without needing to trust the coordinator or see any individual voter's data. This creates a verifiably correct outcome where the coordinator's role is necessary for privacy but cannot manipulate the result without the fraud being detectable. The system's security relies on the coordinator being unable to reveal how a specific individual voted, breaking the linkability required for effective bribery or coercion.
Key Features and Cryptographic Properties
MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to prevent collusion and ensure coercion-resistance in blockchain-based voting and governance systems. It combines zero-knowledge proofs, public-key cryptography, and a central coordinator to protect voter privacy while enabling verifiable, tamper-proof results.
Coercion-Resistance
A core property where a voter cannot prove to a third party how they voted, even if they want to. This prevents vote buying and coercion by making any proof of a specific vote cryptographically impossible. The system ensures that a coerced voter can later change their vote without the coercer knowing.
- Key Mechanism: Uses a key-change message that allows voters to change their public key, invalidating any previous vote commitment.
- Result: Attackers cannot trust a voter's claim about their vote, eliminating financial incentives for coercion.
Privacy-Preserving Tallying
Votes are encrypted and processed in a way that reveals only the final result, not individual voting choices. This is achieved through homomorphic encryption and zero-knowledge proofs (ZKPs).
- Process: The central coordinator collects encrypted votes, processes them, and generates a ZKP that proves the tally was computed correctly without decrypting individual ballots.
- Outcome: Complete voter anonymity is maintained, as on-chain data only contains encrypted messages and validity proofs, not plaintext votes.
Universal Verifiability
Any observer can cryptographically verify that the published election result is the correct sum of all valid votes, despite the process being private. This trust is not placed in the coordinator but in the cryptographic proofs.
- Components:
- Message Processing Proof: Proves all valid messages were included in the final state.
- Tallying Proof: Proves the result is correctly computed from that final state.
- Audit: Participants and third parties can verify the ZKPs published on-chain to ensure integrity.
The Central Coordinator
A necessary, semi-trusted entity that processes messages and computes the tally. While it is trusted for liveness (to process messages), it is not trusted for correctness or privacy.
- Role: Receives encrypted votes, applies them in order, and generates validity proofs.
- Trust Model: The coordinator cannot:
- Censor votes (provable due to on-chain message queue).
- Alter votes (provable via ZKPs).
- Reveal a voter's choice (votes remain encrypted to the coordinator).
Quadratic Voting & Funding
A primary application where MACI ensures the anti-collusion properties of Quadratic Voting (QV) and Quadratic Funding (QF). These mechanisms aim to reflect the strength of preference rather than just binary choices.
- Quadratic Voting: The cost of casting n votes for a single option scales quadratically (
cost ∝ n²), preventing whale dominance. - Quadratic Funding: A method to fund public goods where matching funds are distributed proportionally to the square of the sum of square roots of contributions.
- MACI's Role: Prevents collusion (e.g., sybil attacks or bribery) that would otherwise break the economic assumptions of QV/QF.
Cryptographic Primitives
MACI is built from a specific stack of cryptographic tools that work in concert.
- Public-Key Encryption (PKE): Used for encrypting votes to the coordinator's key. (e.g., ECIES).
- Digital Signatures: Voters sign their encrypted messages to prove authenticity.
- Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge (zk-SNARKs): Generate the proofs for correct message processing and tallying. This is the most computationally intensive component.
- Merkle Trees: Often used to efficiently commit to the state of the system and allow for inclusion proofs.
Ecosystem Usage and Implementations
MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to ensure the integrity of on-chain voting and governance by preventing collusion and bribery. Its primary implementations focus on enabling secure, private, and coercion-resistant decision-making.
Limitations & Trade-offs
While powerful, MACI introduces specific constraints:
- Finality Delay: Requires a challenge period after voting ends to allow for fraud proofs, delaying result finalization.
- Coordinator Trust Assumption: The coordinator must be trusted to participate (decrypt and process votes) but not to cheat.
- Complexity & Cost: Generating ZK proofs for large vote sets is computationally expensive, leading to high gas costs for on-chain verification.
Comparison: MACI vs. Traditional On-Chain Voting
A technical comparison of privacy, collusion resistance, and cost characteristics between MACI-based voting and standard on-chain voting systems.
| Feature | MACI (Minimal Anti-Collusion Infrastructure) | Traditional On-Chain Voting |
|---|---|---|
Voter Privacy | ||
Collusion Resistance | ||
Vote Buying Prevention | ||
On-Chain Data Footprint | Only final result & ZK proof | All individual votes & signatures |
Gas Cost Per Vote | ~$10-50 (ZK proof generation) | < $1 (simple transaction) |
Vote Finality Delay | Requires a finalization period | Immediate after block confirmation |
Cryptographic Primitives | ZK-SNARKs, Public Key Encryption | Digital Signatures (e.g., ECDSA) |
Central Coordinator Role | Required for processing |
Security Considerations and Trust Assumptions
MACI is a cryptographic protocol designed to make on-chain voting and decision-making processes collusion-resistant and coercion-resistant, while preserving privacy. Its security model relies on a specific set of cryptographic primitives and trust assumptions.
Central Coordinator Role
The Coordinator is a semi-trusted entity responsible for processing encrypted votes and generating a zero-knowledge proof of correct tallying. While they cannot alter votes due to the public key infrastructure (PKI) and zk-SNARKs, they must be trusted for liveness (to process votes) and to not collude with users before the vote ends to break privacy. This is a single point of failure for availability, not for result integrity.
Cryptographic Primitives
MACI's security is built on three core cryptographic components:
- Elliptic Curve Cryptography (ECC): Used for key generation and message encryption between users and the Coordinator.
- zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge): Prove the Coordinator performed the tally correctly without revealing any individual vote.
- Merkle Trees: Efficiently manage the state of the user registry and message processing. The security of the entire system depends on the cryptographic hardness of these primitives.
Collusion & Coercion Resistance
MACI is designed to resist two key attacks:
- Collusion Resistance: A voter cannot cryptographically prove how they voted to a third party (e.g., a briber), because the final vote is determined by their last valid message, which they can always change secretly before the deadline.
- Coercion Resistance: A coercer cannot verify if a voter obeyed their command, for the same reason. This property depends on users having a secure channel to submit their final, decisive vote.
Trusted Setup Ceremony
The zk-SNARK circuits used by the Coordinator require a trusted setup ceremony to generate proving and verification keys. Participants in this ceremony must be trusted to discard the toxic waste (secret randomness). If compromised, a malicious actor could create false proofs of the tally. This is a one-time, system-wide trust assumption. Projects often use large, multi-party ceremonies (like Perpetual Powers of Tau) to minimize this risk.
On-Chain vs. Off-Chain Components
MACI splits trust across the blockchain and off-chain servers:
- On-Chain (Trustless): Smart contracts store encrypted messages and the final verification key. They verify the Coordinator's zk-SNARK proof, ensuring the result's computational integrity.
- Off-Chain (Trusted): The Coordinator's server holds the private decryption key and performs computation. Users must trust its availability and initial key management. This hybrid model reduces on-chain costs but introduces the Coordinator trust assumption.
Implementation Risks & Audits
Like any complex cryptographic system, MACI's security in practice depends on correct implementation. Key risks include:
- Cryptographic library bugs in ECC or zk-SNARK operations.
- Logical flaws in the smart contracts or circuit design.
- Side-channel attacks on the Coordinator's server.
- Denial-of-Service attacks preventing vote submission. Rigorous security audits (e.g., by entities like ABDK, SECBIT) and bug bounty programs are critical for production deployments.
Common Misconceptions About MACI
Clarifying frequent misunderstandings about the Minimal Anti-Collusion Infrastructure (MACI), a critical tool for secure on-chain voting.
No, MACI does not guarantee complete anonymity; it provides collusion resistance and privacy through cryptographic techniques, not anonymity. While an external observer cannot link a vote to a specific user, the system's coordinator (a trusted but auditable party) can decrypt and process votes. MACI's primary goal is to prevent vote buying and coercion by making it cryptographically infeasible for a voter to prove how they voted to a third party, even if the voter wants to. This is achieved using zero-knowledge proofs and public-key cryptography, ensuring the final tally is correct without revealing individual ballot choices to the public.
Technical Deep Dive
Minimal Anti-Collusion Infrastructure (MACI) is a cryptographic protocol designed to prevent collusion and ensure coercion-resistance in blockchain-based voting and decision-making systems. This section explores its core mechanisms and implementation.
Minimal Anti-Collusion Infrastructure (MACI) is a cryptographic protocol that ensures collusion resistance and coercion resistance in on-chain voting by using zero-knowledge proofs (ZKPs) and a trusted coordinator. It works by having users submit encrypted votes to a smart contract, which only a central coordinator can decrypt and process. The coordinator then generates a ZK-SNARK proof that the final tally is correct according to the rules, without revealing any individual's vote. This prevents vote-buying, as a user can privately change their vote before the final tally, and ensures the integrity of the result is publicly verifiable.
Key Process:
- Key Generation: Users generate a public/private key pair.
- Vote Submission: Votes are encrypted with the coordinator's public key and posted on-chain.
- Processing: The coordinator decrypts votes, processes them, and generates a ZK-SNARK proof of correct execution.
- Publication: The final result and the validity proof are published on-chain.
Frequently Asked Questions (FAQ)
Essential questions and answers about the Minimal Anti-Collusion Infrastructure (MACI), a cryptographic system for secure and coercion-resistant voting on blockchain.
MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol that enables secure, private, and coercion-resistant voting on a blockchain. It works by using a central coordinator to aggregate encrypted votes, apply a zero-knowledge proof (zk-SNARK) to prove the tally was computed correctly, and then publish only the final result. This prevents vote-buying and coercion because a voter cannot cryptographically prove how they voted to a third party, even though the coordinator could theoretically decrypt individual votes. The system's security relies on the assumption that at least one coordinator in a set is honest during the key ceremony.
Get In Touch
today.
Our experts will offer a free quote and a 30min call to discuss your project.