Skip to content

Commit

Permalink
docs: incorporate post background section into intro docs
Browse files Browse the repository at this point in the history
  • Loading branch information
samajammin committed Feb 26, 2024
1 parent 4e24e41 commit a747d80
Showing 1 changed file with 16 additions and 22 deletions.
38 changes: 16 additions & 22 deletions website/versioned_docs/version-v1.x/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ sidebar_position: 1

**Minimal Anti-Collusion Infrastructure (MACI)** is an open-source public good that serves as infrastructure for private on-chain voting.

MACI is an application that allows users to have an on-chain voting process with greatly increased collusion resistance. A common problem among today’s on-chain voting (or public good funding) processes is how easy it is to bribe voters into voting for a particular option. Since all transactions on the blockchain are public by default, without MACI, voters can easily prove to the briber which option they voted for and therefore receive the bribe rewards.
MACI is an Ethereum application that provides privacy and collusion resistance for on-chain voting, both in a [quadratic](https://vitalik.eth.limo/general/2019/12/07/quadratic.html) and non-quadratic fashion. A common problem among today’s on-chain voting (or public good funding) processes is how easy it is to bribe voters into voting for a particular option. Since all transactions on the blockchain are public by default, without MACI, voters can easily prove to the briber which option they voted for and therefore receive the bribe rewards.

MACI counters this problem by using encryption and zero-knowledge proofs (zk-SNARKs) to essentially hide how each person voted while still publicly revealing the final vote result. User’s cannot prove which option they voted for, and therefore bribers cannot reliably trust that a user voted for their preferred option. For example, a voter can tell a briber that they are voting for option A, but in reality they voted for option B. There is no reliable way to prove which option the voter actually voted for, so the briber has less incentive to pay voters to vote their way.
MACI counters this problem by using encryption and zero-knowledge proofs (zk-SNARKs) to hide how each person voted while still publicly revealing the final result. User’s cannot prove which option they voted for, and therefore bribers cannot reliably trust that a user voted for their preferred option. For example, a voter can tell a briber that they are voting for option A, but in reality they voted for option B. There is no reliable way to prove which option the voter actually voted for, so the briber has less incentive to pay voters to vote their way.

Applications like [clr.fund](https://clr.fund/) build atop MACI to increase
user privacy and discourage collusion or bribery for public goods funding.
Expand All @@ -24,36 +24,30 @@ user privacy and discourage collusion or 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 voter should be able to 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.
| Property | Description |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| 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 can 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, ECDH encryption, 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.
The participants of a MACI voting process are: 1) the voters and 2) a trusted coordinator. The coordinator is in charge of setting up the system, deploying polls, and computing the tally of the votes. Through smart contracts and ZK-proofs, MACI ensures that everything is done in a fair manner. 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.

## Background

MACI was originally proposed by Vitalik Buterin in [this ethresear.ch
post](https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413). For a general overview, the history and the importance of MACI, see [Release Announcement: MACI 1.0](/blog/maci-1-0-release) by Wei Jie, one of the creators. He also created a helpful [overview of MACI video](https://www.youtube.com/watch?v=sKuNj_IQVYI). Kyle Charbonnet wrote a great [Technical Introduction to MACI 1.0](/blog/maci-1-0-technical-introduction) that provides a walkthrough on how MACI operates.
post](https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413) and has been maintained and improved since thanks to support from the Ethereum Foundation. For a general overview, the history and the importance of MACI, see [Release Announcement: MACI 1.0](/blog/maci-1-0-release) by Wei Jie, one of the creators. He also created a helpful [overview of MACI video](https://www.youtube.com/watch?v=sKuNj_IQVYI). Kyle Charbonnet wrote a great [Technical Introduction to MACI 1.0](/blog/maci-1-0-technical-introduction) that provides a walkthrough on how MACI operates.

## Credits

Expand All @@ -79,7 +73,7 @@ MACI is a public good infrastructure that is supported by the [Ethereum Foundati
- [daodesigner](https://github.com/daodesigner)
- [0xjei](https://github.com/0xjei)

**Currently, MACI is maintained and continuously improved by a core development team:**
**Currently, MACI (v1.2.0 and beyond) is maintained and continuously improved by a core development team:**

- [ctrlc03](https://github.com/ctrlc03)
- [samajammin](https://github.com/samajammin)
Expand Down

0 comments on commit a747d80

Please sign in to comment.