# Architecture Course ## Voting in a small informal group **Use case:** A local community group (e.g. neighborhood association, local cooperative, etc.) needs to pass a couple resolutions and have a clear tally of votes by the end of the week. All members of the app are all able to vote so you'll want to restrict membership to community members. Scale: less than 500 people Time: Deadline vote by end of week Secrecy: Vote content does not need to be hidden - How will you keep external people from voting - How will you count all the votes to get final tallies in an eventually consistent system? **Note:** The focus here is on voting, not identity. We'll get to identity management later. ## #2: Voting in a National Election? A nation wants its election to achieve new levels of transparency and accountability for people to have confidence in the integrity of the election process. Functional requirements: - Only approved voters can vote - People can check that their vote was cast/counted - External parties can audit the election - You cannot see who voted for what Scale: many millions of people Time: Deadline votes cast on election day Secrecy: Votes are anonymous (you cannot see who voted for what). - How can you make sure only valid voters can vote? - How do ensure each person can only vote once? - How do you tally all the results on an eventually consistent system?