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.

Revisions

  1. moldcraft created this gist Mar 20, 2016.
    30 changes: 30 additions & 0 deletions blockchain-voting.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,30 @@
    # 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)