Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

MACI

MACI is a protocol for secure on-chain voting that uses zero-knowledge proofs and cryptographic techniques to prevent coercion and vote buying.
Chainscore © 2026
definition
BLOCKCHAIN GOVERNANCE

What is MACI?

A cryptographic protocol for secure, coercion-resistant voting on blockchain.

MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to enable secure, private, and coercion-resistant voting on blockchain networks, primarily for applications like quadratic funding and decentralized governance. It ensures that a single, trusted coordinator can tally votes correctly while preventing voters from proving how they voted to third parties, which mitigates bribery and collusion. The system leverages zero-knowledge proofs (ZKPs) to allow the coordinator to prove the integrity of the vote tallying process without revealing individual votes.

The core mechanism of MACI involves a three-phase process: key submission, voting, and message processing. First, users generate a keypair and register their public key. When casting a vote, they encrypt their choice using the coordinator's public key. The coordinator then processes all encrypted votes in a batch, using their private key to decrypt them, apply the voting logic (e.g., quadratic funding calculations), and produce a final tally. Critically, the coordinator also publishes a zk-SNARK proof that verifies the entire process was executed correctly according to the protocol rules, without leaking any private voter data.

MACI's security model is based on the assumption of at least one honest participant—the coordinator. While the coordinator has the technical ability to censor votes, they cannot forge or alter votes without detection due to the public verifiability of the zk-SNARK proof. This creates a trust-minimized system where the coordinator's role is to provide compute resources and maintain liveness, while cryptographic guarantees ensure the outcome's correctness. The protocol's design makes it economically irrational to attempt large-scale collusion, as successful coercion would require compromising every individual voter's private key.

The primary application of MACI is in decentralized autonomous organization (DAO) governance and public goods funding mechanisms like Gitcoin Grants. In quadratic funding, MACI ensures that contributors cannot prove their donation patterns to projects, preventing sybil attacks and collusion where donors and projects might conspire to extract matching funds. By making votes private and un-provable, MACI aligns the economic incentives of the voting mechanism with the desired outcome of honest preference expression, moving beyond simple token-weighted voting.

Implementing MACI involves significant technical complexity, including managing key management for users, handling state updates, and generating the requisite zero-knowledge proofs, which can be computationally expensive. Projects like clr.fund and Ethereum's PSE (Privacy & Scaling Explorations) group have built production implementations. Ongoing research focuses on reducing the trust assumptions further, such as exploring decentralized coordinator networks or multi-party computation (MPC) to eliminate the single coordinator role entirely.

etymology
TERM ORIGIN

Etymology

The term MACI is an acronym with a specific technical lineage, originating from research into secure and scalable blockchain-based voting.

MACI stands for Minimal Anti-Collusion Infrastructure. The name was coined by Ethereum researcher Vitalik Buterin in a 2018 blog post, "An overview of quadratic voting and related mechanisms: collusion, bribery and the "antitragedy of the commons"". It was conceived as a cryptographic framework to enable applications like quadratic funding and decentralized governance while providing strong, on-chain guarantees against two primary threats: coercion (where a user is forced to vote a certain way) and collusion (where users are bribed to vote a specific way).

The "Minimal" in MACI refers to its design philosophy of achieving these anti-collusion properties with the fewest possible trust assumptions and cryptographic components. The core mechanism relies on a central, non-colluding coordinator—a role that is kept honest through cryptographic proofs (specifically, zk-SNARKs) that allow anyone to verify the coordinator processed all messages correctly. This creates a minimal, verifiable layer of infrastructure rather than a complex, multi-party system.

The term's etymology reflects its foundational purpose in blockchain governance. It is not merely a voting system but an infrastructure layer designed to be anti-collusion by construction. This distinguishes it from simpler voting smart contracts, which are transparent and thus vulnerable to bribery and voter retaliation. MACI's name has become synonymous with a class of privacy-preserving, coercion-resistant voting protocols, most famously implemented in projects like clr.fund for quadratic funding and various DAO governance experiments.

how-it-works
MECHANISM

How MACI Works

An explanation of the cryptographic mechanisms that enable MACI to provide coercion-resistance and privacy in blockchain-based voting.

Minimum Anti-Collusion Infrastructure (MACI) is a cryptographic protocol that secures on-chain voting and decision-making by making votes private and coercion-resistant. It prevents vote buying and voter coercion by ensuring that even the voter themselves cannot cryptographically prove how they voted to a third party. This is achieved through a combination of zero-knowledge proofs (ZKPs), public-key cryptography, and a trusted coordinator who processes votes off-chain.

The process begins with a key ceremony, where each participant generates a public-private key pair, registering their public key with a smart contract. When casting a vote, a user encrypts their choice with the coordinator's public key and submits it on-chain, along with a ZKP that validates the vote's format and signature. Crucially, users can change their vote by submitting a new, valid message, with only the final vote being counted, which thwarts coercion attempts that demand proof of a specific vote.

The coordinator is a semi-trusted entity responsible for the protocol's privacy guarantees. After the voting period ends, the coordinator downloads all encrypted votes, decrypts them using its private key, and performs an off-chain tally. To prove the tally's correctness without revealing individual votes, the coordinator generates a zk-SNARK proof (a type of ZKP) that attests to the proper execution of the aggregation logic. This proof is then published on-chain, allowing anyone to verify the final result's integrity.

MACI's security model assumes the coordinator is honest but curious; it may try to learn individual votes but cannot alter the result without detection due to the public verifiability of the zk-SNARK proof. The system's resilience against collusion stems from the unforgeable signature scheme and the inability to prove vote content. Since a user's final message invalidates previous ones and the coordinator's decryption key is required to read votes, neither voters nor external adversaries can reliably demonstrate voting behavior.

key-features
MACI

Key Features

Minimal Anti-Collusion Infrastructure (MACI) is a cryptographic protocol that prevents collusion and bribery in blockchain-based voting. It ensures votes are private, final, and verifiably correct.

01

Privacy-Preserving Voting

MACI uses zero-knowledge proofs (zk-SNARKs) to hide individual votes while proving the final tally is correct. Voters submit encrypted messages to a central coordinator, who processes them and publishes only the final result and a validity proof.

  • Key Benefit: Prevents voter coercion and vote-buying, as no one can prove how an individual voted.
02

Collusion Resistance

The protocol's core defense against bribery. A voter can submit a key-change message to change their public key, nullifying any prior vote commitments made to a briber.

  • Mechanism: Even if a voter reveals a signed vote to a third party, they can later change their key and re-vote secretly, making the prior proof worthless.
03

Central Coordinator Role

A semi-trusted entity that processes all encrypted votes. The coordinator is required for performance but cannot tamper with results.

  • Responsibilities: Aggregates messages, generates the final tally, and produces a zk-SNARK proof of correct execution.
  • Trust Assumption: The coordinator can only censor messages, not alter valid votes, and its actions are publicly verifiable.
04

Universal Verifiability

Anyone can cryptographically verify that the election was conducted correctly without trusting the coordinator.

  • Process: The coordinator publishes the final state root, result, and a zk-SNARK proof.
  • Outcome: Verifiers check the proof against the initial setup and on-chain data, ensuring all valid votes were counted and no invalid votes were added.
05

Quadratic Voting & Funding

A primary application of MACI is for quadratic voting (QV) and quadratic funding (QF) mechanisms, which democratize funding allocation.

  • How it works: Voters distribute voice credits; the cost of influence increases quadratically, favoring broad consensus over whale dominance.
  • MACI's Role: Ensures the QV/QF process is resistant to collusion and Sybil attacks, preserving its egalitarian intent.
06

On-Chain Components

MACI uses smart contracts for coordination and verification.

  • Key Contracts: Poll.sol for vote collection, MessageProcessor.sol for tallying, and Tally.sol for result verification.
  • Process Flow: Voters submit encrypted messages to the poll contract. After voting ends, the coordinator processes messages off-chain and submits the proof to the tally contract for verification.
security-considerations
MACI

Security Considerations

MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to prevent collusion and coercion in blockchain-based voting and funding mechanisms, such as quadratic funding. Its security relies on several core cryptographic and operational components.

01

Cryptographic Primitives

MACI's security is built on public-key cryptography and zero-knowledge proofs (ZKPs). Each user encrypts their vote with a coordinator's public key. The coordinator processes votes off-chain and publishes a ZK-SNARK proof to the blockchain, proving the tally is correct without revealing individual votes. This ensures end-to-end verifiability and ballot secrecy.

02

Trusted Coordinator Role

A central coordinator is required to decrypt and process votes. While the coordinator cannot alter votes due to ZK-proofs, they possess the power to censor messages. This introduces a trust assumption and a potential single point of failure. The protocol mitigates this by allowing the coordinator to be replaced and by making censorship publicly detectable on-chain.

03

Resistance to Collusion & Bribery

A primary goal is to make vote buying and coercion economically irrational. Key mechanisms include:

  • Private Voting: Voters can change their vote before the deadline, nullifying any prior commitments to a briber.
  • Key Change Messages: Users can change their public key, invalidating any proof of how they voted for a previous key.
  • Lack of Proof: A voter cannot cryptographically prove how they voted to a third party, breaking the trust required for bribery.
04

Implementation & Operational Risks

Security depends heavily on correct implementation and operation.

  • Client-Side Security: Users must protect their private keys; a compromised key allows vote manipulation.
  • Coordinator Setup: The initial trusted setup for the ZK-SNARK circuits must be performed securely.
  • Data Availability: All messages and proofs must be reliably posted to the blockchain for public audit.
  • Front-running: While messages are encrypted, the act of sending a message is public, which could be exploited in some scenarios.
05

Verification & Auditing

Any observer can verify the election's integrity without trusting the coordinator. This is done by:

  • Checking that all on-chain messages are included in the processing.
  • Verifying the ZK-SNARK proof attesting to correct state transition and tally computation.
  • Reconstructing the Merkle root of the state to ensure consistency. This provides universal verifiability.
06

Comparison to Fully Trustless Systems

MACI introduces a semi-trusted coordinator to achieve properties that are currently impractical in fully trustless on-chain voting. The trade-off is accepting this role for strong anti-collusion guarantees. Alternatives like simple encrypted on-chain votes lack coercion resistance, while fully homomorphic encryption (FHE) based systems are not yet performant for large-scale use.

examples
PRACTICAL APPLICATIONS

Examples and Use Cases

MACI (Minimal Anti-Collusion Infrastructure) is a cryptographic protocol designed to enable secure, coercion-resistant voting on blockchain. Its primary use cases are in governance and funding mechanisms where preventing collusion and vote-buying is critical.

04

The Technical Architecture

MACI's security relies on a specific cryptographic stack:

  • ZK-SNARKs: Generate a proof that votes were tallied correctly without revealing them.
  • Public Key Encryption: Messages (votes) are encrypted to a central coordinator's key.
  • State Merkle Tree: Tracks user keys and nullifiers to prevent double-voting.
  • Coordinator: A semi-trusted party that processes messages but cannot alter valid votes due to the ZK proof.
05

Key Cryptographic Primitives

Understanding MACI requires familiarity with its core components:

  • Message: An encrypted command (e.g., publish a public key, cast a vote).
  • State Leaf: Represents a user in the system, containing their public key and vote option.
  • Nullifier: A unique hash that prevents a user from signing multiple messages for the same poll.
  • Verification Key: Used by anyone to verify the ZK-SNARK proof of correct tallying.
06

Limitations & Considerations

While powerful, MACI has inherent trade-offs:

  • Coordinator Role: Requires a semi-trusted party to process messages, though they cannot cheat undetectably.
  • Complexity: High cryptographic overhead makes it more complex than simple snapshot voting.
  • Cost: Generating ZK-SNARK proofs for large voter sets can be computationally expensive.
  • Finality Delay: Votes are only revealed and tallied after the voting period ends and proofs are generated.
VOTE PRIVACY & COLLUSION RESISTANCE

Comparison: MACI vs. Traditional On-Chain Voting

A technical comparison of Minimal Anti-Collusion Infrastructure (MACI) and standard on-chain voting mechanisms, highlighting core cryptographic and architectural differences.

Feature / PropertyMACI (Minimal Anti-Collusion Infrastructure)Traditional On-Chain Voting

Vote Privacy

Collusion Resistance

Cryptographic Foundation

ZK-SNARKs & Public Key Encryption

Digital Signatures (e.g., ECDSA)

Vote Linkability

Final tally only; individual votes are encrypted

Fully transparent; all votes are public

Coercion Resistance

High (votes can be changed before finalization)

Low (votes are immutable and public)

On-Chain Data

Encrypted commands & ZK proof of correct tally

Plaintext vote data

Gas Cost per Vote

~200k-500k gas (for encryption & proof verification)

~50k-100k gas (for a simple transaction)

Required Trust

Trust in a centralized coordinator for processing (but not for integrity)

Trust in the decentralized network's consensus

MACI

Common Misconceptions

Minimum Anti-Collusion Infrastructure (MACI) is a cryptographic system for secure voting, but its complexity leads to widespread misunderstandings about its guarantees and limitations.

MACI is neither a blockchain nor a standalone voting application; it is a cryptographic protocol and a set of smart contracts that can be deployed on a blockchain to create collusion-resistant voting systems. It provides a framework where a central coordinator uses zero-knowledge proofs (specifically zk-SNARKs) to aggregate and process votes off-chain, then posts a single proof to the chain to validate the entire process. This makes it a trusted execution layer for voting, not the underlying ledger or the end-user interface.

MACI

Frequently Asked Questions

Minimum Anti-Collusion Infrastructure (MACI) is a cryptographic protocol for secure, coercion-resistant voting on blockchain. These questions address its core mechanisms, applications, and limitations.

Minimum Anti-Collusion Infrastructure (MACI) is a cryptographic protocol that enables secure, coercion-resistant voting on a blockchain by preventing vote buying and collusion. It works by using a central coordinator to aggregate encrypted votes and publish a zero-knowledge proof (zk-SNARK) that the tally was computed correctly, without revealing individual votes. Users submit encrypted votes to a smart contract, and only the coordinator, who holds a private key, can decrypt them for final tallying. The system's security relies on the coordinator's inability to tamper with votes without detection, as any malicious action would invalidate the publicly verifiable zk-SNARK proof.

ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team