How to implement a voting system using Bitcoin

The sentence “Bitcoin is to money as to what internet is to communication” frequents forums, discussions and bitcoin websites. Although I believe this wholeheartedly, the truth is that we can only make educated guesses at how this is going to happen, if this is going to happen at all. One obvious case, and the case I am rooting for, is that Bitcoin will continue to grow in value and be used as the standard international payment option. Unfortunately Bitcoin might face some problems and might be overthrown by alternative crypto-currencies with improvements on the current Bitcoin model. What will definitely remain is the revolutionary crypto-currency concept in some form or another with a vast number of applications.

While standing in the queue to register as valuable voting member to society, I wondered how crypto-currency might assist in such a voting process. I came up with an simple idea to implement a voting system using Coloured coins.

Coloured coins, although not currently implemented in Bitcoin, introduces the ability to label a set of coins and to keep track of their movement. This allows for arbitrary units, such as bonds or stock, to be represented by an arbitrary amount of bitcoin. These units can then partake in transactions with the same ease as Bitcoin. By using Coloured coins a voting system might be implemented as follows:

  1. A bitcoin is used to represent the population of a country with coloured coin.
  2. When citizens register to vote, the government pays out an equal fraction of this bitcoin, a vote, to each citizen. For a tech savvy or paranoid person, this can be accomplished by providing the government with a wallet address of their choice. For the rest of the population, the government may generate the necessary wallets. The latter option is more open to corruption. Further metadata, such as the person’s age and hometown, might also be added to the coin fraction.
  3. When the voting period starts, a bitcoin wallet is generated for each party and made public.
  4. The citizens vote by paying their vote into the wallet of a party. The government might assist the less tech savvy person with dedicated voting hardware/software.
  5. Finally, the election results are obtained from the blockchain.

With this system each vote is recorded on the blockchain and therefore all the necessary information regarding the election is publicly available. It would be quite easy for the public to follow the progress and results of an election by viewing the blockchain.


I think Zimbabwe prefers to count votes on paper.

With the decentralised, public and tractable nature of Bitcoin, such a voting system might combat some corruption, although corruption can still take place during the registration period. The voting process after registration would be quite robust, trustworthy and would produce easily automated and verifiable results.

Please comment below if you find improvements or have additional ideas.


  1. 1
    Greg Maxwell on Monday 11 November, 09:28 AM #

    Sadly, this idea will not work. Bitcoin is not a jamming proof network. Miners select the transactions they choose, and especially when you use well known public addresses it is vulnerable to censorship.

    The scheme described would allow the Bitcoin miners to pick the outcome of your election, not your public.

    • 2
      Rob on Friday 14 February, 12:45 PM #

      Presuming each political faction has enough friendly miners ready to mine its transactions, there should be no censorship issue, Greg.

  2. 3
    Simon Streicher on Monday 11 November, 09:52 AM #

    It seems like a big problem for this system would be the fact that votes can be transferred, thereby allowing someone to buy votes.

    You can also easily proof you are the owner of a certain wallet and therefore be bribed to vote a certain way even in a case where transferring votes are not allowed somehow.

    Also, this will only work on a system where miners cannot overthrow the outcome.

Leave a comment

Leave a Reply