Skip to content

Commit

Permalink
docs: add purpose base content
Browse files Browse the repository at this point in the history
  • Loading branch information
samajammin authored and ctrlc03 committed Feb 26, 2024
1 parent a70764d commit 916f262
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 16 deletions.
2 changes: 1 addition & 1 deletion website/versioned_docs/version-v1.x/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: Installing MACI
description: How to install MACI
sidebar_label: Installation
sidebar_position: 3
sidebar_position: 4
---

# Installation
Expand Down
2 changes: 1 addition & 1 deletion website/versioned_docs/version-v1.x/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
54 changes: 40 additions & 14 deletions website/versioned_docs/version-v1.x/purpose.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 | 🤷‍♂️ |

<!-- TODO add markdown table of my voting presentation -->
### 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.

<!-- TODO add markdown table of my voting presentation -->
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 | 🤷‍♂️ ||

<!-- TODO add markdown table of my voting presentation -->
### 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.

<!-- TODO add markdown table of my voting presentation -->
| | In-person | Ethereum | Ethereum w/ ZK |
| --------------------- | --------- | -------- | -------------- |
| Correct execution | 🤷‍♂️ |||
| Censorship resistance | 🤷‍♂️ |||
| Privacy | 🤷‍♂️ |||
| Collusion resistance | 🤷‍♂️ |||

0 comments on commit 916f262

Please sign in to comment.