Bitcoin Voting System Overview

Originally written by @arikan on Github. Translated in Bahasa by me.

Pull request on ideas and implementation are welcome.

I'm reposting both languages here for introduction to overview.


Simple and secure voting system with Bitcoin

A schema designed to utilize Bitcoin cryptocurrency for secure and simple electronic voting. In the heart of the schema lies the Blockchain, so all the processes of the system are open to public audition.


  • All actors of the election should be able to have a Bitcoin account.
  • All actors of the election should be able to secure their voting computer.


  • Election Authority
  • Candidate
  • Voter


  • Block Chain: Bitcoin public transaction list
  • 0.00000001 Bitcoin: the smallest unit of Bitcoin
  • BTC: Abbreviation for Bitcoin currency


  1. Election Authority declaration:

    • Election Authority publicly announces its Bitcoin address.
  2. Voter registration:

    • Voters show a valid ID and provide their Bitcoin address to Election Authority, who sends them 0.00000001 BTC in return.
    • All voter Bitcoin addresses are publicly listed in the Blockchain.
    • To carry out citizens' right to vote anonymously, the Election Authority keeps the IDs to prevent double registration but does not keep a record of association between the IDs and the provided Bitcoin addresses.
  3. Candidate registration:

    • Candidates provide a valid ID and their Bitcoin address to Election Authority, who sends them 0.00000002 BTC in return.
    • All Candidate Bitcoin addresses are publicly listed in the Blockchain.
    • As opposed to Voter registration, Election Authority stores and publicly announces a record of association between each candidate ID and their provided Bitcoin address.
    • Candidates are obliged to announce their Bitcoin addresses.
  4. Starting the election:

    • Election starts when Election Authority sends 0.00000001 BTC to all the Voters' Bitcoin addresses publicly listed in the Blockchain.
  5. Voting:

    • Voters send 0.00000001 BTC to their preferred candidate's Bitcoin addresses publicly listed in the Blockchain.
  6. Ending the election:

    • Election ends when all voting transactions are processed for each candidate in the Blockchain.
    • If time limit is put in place, Election Authority must declare the election start and end date and time.
    • If this is a time limited election, any vote before the start datetime and after end datetime is considered invalid.
  7. Election result:

    • Election result is obtained by counting all valid voting transactions from the registered voting addresses to the registered candidate addresses in the Blockchain.
    • Any other transaction after the first 0.00000001 BTC transaction from the Voter to the Candidate is considered disqualified.
    • The whole process from the registrations to the voting and counting the results is open to audition by anyone.


This basic schema can be implemented today with the existing Bitcoin infrastructure. One can develop applications and interfaces for better user experience of this system. Please send your comments and questions on issues and feel free to fork the repository and send pull requests.


Sistem pengundian selamat dan mudah dengan Bitcoin

Kaedah kerja menggunakan matawang kripto Bitcoin sebagai sistem pengundian yang selamat dan mudah. Di dalam kaedah ini juga menggunakan algoritma Blockchain agar semua proses adalah terbuka kepada semua Rakyat.


  • Kesemua aktor pengundian harus mempunyai satu akaun Bitcoin (wallet).
  • Kesemua aktor pengundian harus menggunakan komputer untuk mengundi.


  • Pihak Berkuasa Pengundian (SPR)
  • Calon
  • Pengundi (Rakyat)


  • Block Chain: Senarai awam transaksi Bitcoin
  • 1 Satoshi (0.00000001 Bitcoin): Unit terkecil matawang Bitcoin
  • BTC: Singkatan matawang Bitcoin


  1. Deklarasi Pihak Berkuasa Pengundian:

    • Pihak Berkuasa Pengundian mengumumkan alamat Bitcoin secara terbuka.
  2. Pendaftaran pengundi:

    • Pengundi menyediakan ID dan alamat Bitcoin yang sah kepada Pihak Berkuasa Pengundian, seterusnya menyalurkan 1 Satoshi kepada pengundi tersebut.
    • Semua alamat Bitcoin calon akan dipaparkan secara terbuka di dalam Blockchain.
    • Untuk mengekalkan privasi pengundi, Pihak Berkuasa Pengundian menyimpan ID untuk mengelakkan pendaftaran berganda, tetapi tidak menyimpan rekod yang berkaitan dengan ID dan alamat Bitcoin yang diberikan.
  3. Pendaftaran calon:

    • Calon menyediakan ID dan alamat Bitcoin yang sah kepada Pihak Berkuasa Pengundian, seterusnya menyalurkan 2 Satoshi kepada calon tersebut.
    • Semua alamat Bitcoin calon akan dipaparkan secara terbuka di dalam Blockchain.
    • Dalam hal calon, Pihak Berkuasa Pengundian akan menyimpan rekod berkaitan ID dan alamat Bitcoin calon, dan berkuasa untuk memaparkan kedua-duanya secara terbuka.
    • Calon calon wajib mengumumkan alamat Bitcoin mereka.
  4. Pilihan raya:

    • Pilihan raya bermula apabila Pihak Berkuasa Pengundian menyalurkan 1 Satoshi kepada semua alamat Bitcoin pengundi.
    • Alamat Bitcoin pengundi boleh disemak di Blockchain.
  5. Pengundian:

    • Pengundi akan melakukan pemindahan/transaksi 1 Satoshi kepada alamat Bitcoin calon yang dipilih.
    • Proses transaksi Satoshi boleh disemak di Blockchain.
  6. Pengakhiran proses pengundian:

    • Proses pengundian akan berakhir apabila semua transaksi telah diproses dan disahkan oleh Pihak Berkuasa Pengundian.
    • Had masa juga boleh di gunakan dalam proses ini.
    • Jika had masa ditetapkan, Pihak Berkuasa Pengundian harus mengumumkan waktu mula dan akhir pengundian tersebut.
    • Jika pengundian ditetapkan had masa, apa-apa undi sebelum dan selepas had masa di kira tidak sah.
  7. Election result:

    • Keputusan pengundian diputuskan dengan mengira semua transaksi yang sah daripada alamat pengundian menggunakan Blockchain API.
    • Apa-apa transaksi selepas 1 Satoshi yang disalurkan adalah dikira tidak sah.
    • Semua proses-proses di atas daripada proses pendaftaran adalah terbuka kepada semua Rakyat.


  • Ikut proses sebenar PRU Malaysia
  • Cari isu berbangkit dalam kaedah ini


  • Kaedah asas ini boleh dilaksanakan menggunakan infrastruktur Bitcoin yang sedia ada.
  • Sumbangan kepada teknologi boleh dilakukan dengan membina sebuah aplikasi sistem antara muka untuk pengalaman pengguna yang baik.
  • Anda boleh menyumbang dengan memberi pendapat dan soalan berkaitan isu-isu berbangkit.
  • Adalah digalakkan untuk fork repositori dan hantar pull request.


The MIT License (MIT)

More info

Aiman Baharum

More about this blog

Kuala Lumpur, Malaysia

Subscribe to Knowledge Log

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!