Skip to content

Instantly share code, notes, and snippets.

@omidraha
Created April 23, 2018 04:23
Show Gist options
  • Save omidraha/a839dbb1e505ab124c325d5e0a348580 to your computer and use it in GitHub Desktop.
Save omidraha/a839dbb1e505ab124c325d5e0a348580 to your computer and use it in GitHub Desktop.
Blockchain voting system

Blockchain Voting System

How current system works

  • Users are allowed to vote after their identity is confirmed by an authority.
  • Votes are collected and counted by an authority.
  • The person who has the most votes, have the power for ~4 years, then we vote again.

Problems

  • The elected person can become irresponsible and corrupt within the ~4 year period and the citizens can't do much about this, they just have to wait until the ~4 years will expire.
  • A lot of money are spent for election campaigns because everybody is trying to get power for ~4 years.

How the new system works

  • Users are allowed to vote after their identity is registered in blockchain and confirmed by an authority.
  • Votes are stored anonymously on a blockchain.
  • It's possible to check if an user voted, but it's impossible to check for whom he gave his vote.
  • Votes are "realtime" (a new block is mined every XX minutes) and can be displayed on a billboard in the center of the town, so the elected person will watch it every day and work hard to maintain people's trust.
  • Users are allowed to change their vote every week (Sunday).
  • If the user didn't changed or updated his vote for X weeks, the vote is expired and deleted. That way the citizens will be more active (also this fixes the problem with dead users)

Problems

  • How to implement: It's possible to check if an user voted, but it's impossible to check for whom he gave his vote ?

  • How to implement users?

    • Authentication: biometric or just a key give by an authority. It must be very simple and secure for non technical users.
    • New user creation - new people who reach 18 years
    • Anybody must be able to verify if the user who voted is a real person (prevent flood from corrupted central authority who has the ability to create new users)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment