Minimum Anti-Collusion Infrastructure
Minimum Anti-Collusion Infrastructure (MACI) is a base layer for bribery-resistant, secure, and private digital voting.
The documentation here pertains to version 1.0, temporarily located in the v1 branch.
Applications like clr.fund build atop MACI to increase privacy and discourage bribery for public goods funding.
MACI offers the following guarantees:
- Collusion resistance: no-one except a trusted coordinator should be certain of the validity of a vote, reducing the effectiveness of bribery.
- Receipt-freeness: no-one voter prove (besides to the coordinator) which way they voted.
- Privacy: no-one except a trusted coordinator should be able to decrypt a vote.
- Uncensorability: no-one — not even the trusted coordinator — should be able to censor a vote.
- Unforgeability: only the owner of a user's private key may cast a vote tied to its corresponding public key.
- Non-repudiation: no-one may modify or delete a vote after it is cast, although a user may cast another vote to nullify it.
- Correct execution: no-one — not even the trusted coordinator — should be able to produce a false tally of votes. Under the hood, MACI uses Ethereum smart contracts and zero-knowledge proofs. It inherits security and uncensorability from the underlying Ethereum blockchain, ensures unforgeability via asymmetric encryption, and achieves collusion resistance, privacy, and correct execution via zk-SNARK proofs.
Although MACI can provide collusion resistance only if the coordinator is honest, a dishonest coordinator can neither censor nor tamper with its execution.
Note that MACI presumes an identity system where each legitimate member controls a unique Ethereum private key.
MACI was originally proposed by Vitalik Buterin in this ethresear.ch post.
Credits
- Barry WhiteHat
- Cory Dickson
- Chih-Cheng Liang
- Han Jian
- Kendrick Tan
- Kirill Goncharov
- Kobi Gurkan
- Koh Wei Jie