From 916f2625b57182066da77238dc50584f79be44b0 Mon Sep 17 00:00:00 2001 From: Sam Richards Date: Thu, 22 Feb 2024 16:59:54 -0600 Subject: [PATCH] docs: add purpose base content --- .../version-v1.x/installation.md | 2 +- .../versioned_docs/version-v1.x/overview.md | 2 +- .../versioned_docs/version-v1.x/purpose.md | 54 ++++++++++++++----- 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/website/versioned_docs/version-v1.x/installation.md b/website/versioned_docs/version-v1.x/installation.md index c05381b310..91c1ddc77c 100644 --- a/website/versioned_docs/version-v1.x/installation.md +++ b/website/versioned_docs/version-v1.x/installation.md @@ -2,7 +2,7 @@ title: Installing MACI description: How to install MACI sidebar_label: Installation -sidebar_position: 3 +sidebar_position: 4 --- # Installation diff --git a/website/versioned_docs/version-v1.x/overview.md b/website/versioned_docs/version-v1.x/overview.md index 8307ecad9c..a82d816a4d 100644 --- a/website/versioned_docs/version-v1.x/overview.md +++ b/website/versioned_docs/version-v1.x/overview.md @@ -2,7 +2,7 @@ title: MACI Overview description: High-level overview of the MACI codebase sidebar_label: Overview -sidebar_position: 2 +sidebar_position: 3 --- # MACI Overview diff --git a/website/versioned_docs/version-v1.x/purpose.md b/website/versioned_docs/version-v1.x/purpose.md index b8e17d5e1c..7e60b70c38 100644 --- a/website/versioned_docs/version-v1.x/purpose.md +++ b/website/versioned_docs/version-v1.x/purpose.md @@ -7,28 +7,54 @@ sidebar_position: 2 # Why MACI Matters -- Voting is important -- What a voting process needs -- Why bother with blockchain voting? +To understand the promise of on-chain voting and the purpose of MACI, we highly recommend reading [Vitalik's post on blockchain voting](https://vitalik.eth.limo/general/2021/05/25/voting2.html). He provides an overview of the incredible potential of e-voting and why blockchains are an excellent technology to implement e-voting solutions on top of. -## The potential of e-voting and blockchain voting +Below we attempt to summarize some of the points layed out in that post: -To understand the promise of on-chain voting, we highly recommend reading [Vitalik's post on blockchain voting](https://vitalik.eth.limo/general/2021/05/25/voting2.html). He provides a high-level overview of the incredible potential of e-voting and why blockchains are an excellent technology to implement e-voting solutions on top of. +## Security requirements of a voting system -To summarize Vitalik's a +Any voting system requires some crucial security properties: -## Security requirements of a voting system +- **Correct execution**: the result (tally of votes) must be correct, and the result must be guaranteed by a transparent process (so that everyone is convinced that the result is correct) +- **Censorship resistance**: anyone eligible to vote should be able to vote, and it should not be possible to interfere with anyone's attempt to vote or to prevent anyone’s vote from being counted +- **Privacy:** you should not be able to tell which candidate someone specific voted for, or even if they voted at all +- **Coercion resistance:** you should not be able to prove to someone else how you voted, even if you want to + +## Voting systems + +Looking at various approaches to implement a voting system, we can see how they compare across these properties. + +### In-person voting systems + +In short, it's hard to know for sure how current voting systems operate. Governments and corporations spend lots of resources into ensuring their integrity, but ultimately the processes are not fully auditable so we must trust that these security properties are being enforced. + +| | In-person | +| --------------------- | --------- | +| Correct execution | πŸ€·β€β™‚οΈ | +| Censorship resistance | πŸ€·β€β™‚οΈ | +| Privacy | πŸ€·β€β™‚οΈ | +| Collusion resistance | πŸ€·β€β™‚οΈ | - +### Blockchain voting systems -### IRL +Blockchains provide two key properties: correct execution and censorship resistance. In terms of execution, the blockchain accepts inputs (transaction) from users, correctly processes them according to some pre-defined rules, and returns the correct output. No one is able to change the rules. Any user that wants to send a transaction, and is willing to pay a high enough fee, can send the transaction and expect to see it quickly included on-chain. - +By default, however, Blockchain voting faces challenges. Ethereum, like most blockchains, is completely transparent - all transaction data is public, so there is no privacy. This makes bribery very easy as a result: someone can easily show a receipt that proves how they voted. The process may even be able to be automated via smart contracts to make collusion entirely trustless. -### Blockchain voting +| | In-person | Ethereum | +| --------------------- | --------- | -------- | +| Correct execution | πŸ€·β€β™‚οΈ | βœ… | +| Censorship resistance | πŸ€·β€β™‚οΈ | βœ… | +| Privacy | πŸ€·β€β™‚οΈ | ❌ | +| Collusion resistance | πŸ€·β€β™‚οΈ | ❌ | - +### Blockchain voting systems (with ZKPs) -### Blockchain voting with ZKPs +Enter zero-knowledge proofs (ZKPs), and voting systems like MACI. With ZK, you can have private on-chain voting but maintain public on-chain results that are verifiable by anyone. - +| | In-person | Ethereum | Ethereum w/ ZK | +| --------------------- | --------- | -------- | -------------- | +| Correct execution | πŸ€·β€β™‚οΈ | βœ… | βœ… | +| Censorship resistance | πŸ€·β€β™‚οΈ | βœ… | βœ… | +| Privacy | πŸ€·β€β™‚οΈ | ❌ | βœ… | +| Collusion resistance | πŸ€·β€β™‚οΈ | ❌ | βœ… |