Decentralized Blockchain Voting Explained

[Patent Pending]

Cryptovoter: Shareholder-style Blockchain Voting

(previously known as Easy Vanity Voting)

Abstract:

A simple, trustless, decentralized (p2p), shareholder-style blockchain voting system achieved through voter generated vanity bitcoin addresses.

Characteristics:

  • Shareholder-style: one-bitcoin-one-vote (as opposed to one-person-one-vote)
  • Decentralized (p2p)
  • Transparent
  • Zero-trust
  • Users retain complete control over 100% of their coins
  • Anyone can create a poll, vote and audit results.
  • Theoretically, anyone could even implement the vote results (so long as any modified code was released open-source with binaries compiled using verifiable gitian builds).
  • Based on Bitcoin blockchain
  • Psuedo-anonymous
  • Auditable
  • Adjustable to resist double-spends (double-votes)
  • Compatible with proxy voting pools
  • Possibly, compatible with cumulative voting (to protect minority voting rights)
  • Possibly, compatible with a modified form of instant run-offs

 

Summary of System:

Cryptovoter is a decentralized voting system that allows anyone to propose, cast and audit votes using end-user generated vanity addresses, where total votes cast equals total coins sent to each voter’s self-controlled “vanity-voting address.”

  1. A question and answer choices are published to the community
  2. Each answer choice is associated with a unique 5-letter “voting-address prefix.”
  3. The question, possible answer choices (w/ corresponding “voting-address prefixes) and a blockheight-deadline (+ n confirmations) are publicly posted.
  4. Before voting, each voting coinholder creates a unique, self-controlled “vanity-voting address” where the first 5-bits of said generated address match the posted 5-letter “voting-address prefix” corresponding to their desired vote choice.
  5. During the voting period, each voting coinholder sends as many coins as they can/want to their self-controlled “vanity-voting address” until the blockheight-deadline (+ confirmations) has passed.
  6. One-Bitcoin equals one-vote.
  7. At the blockheight-deadline (+ n confirmations), address balances for all addresses matching the applicable “voting-address prefixes” and meeting confirmation requirements are tallied and compared.
  8. The answer choice with address balances exceeding 50% of total coins cast as votes is deemed the winner.
  9. In the event no answer choice has address balances exceeding 50% of total coins cast as votes, a subsequent run-off election can be held between the top two vote choices.

 

Detailed Explanation

  • Any member from the community can propose a poll which contains: (i) a question, (ii) possible answer choices, which are each associated with a unique 6-letter “voting address prefix” and (iii) a blockheight-deadline (+ confirmations).
    • Anyone can post a voting question so long as sufficient notice is provided.
      • The community determines if sufficient notice is provided, as results are non-binding.
    • The “voting-address prefix” uses the format “1Qxxyy”
      • xx = voting question identification number (i.e., 11, 37, 69, etc…)
      • yy = voting question answer choice (i.e., AA, BB, CC, etc…)
        • The number zero (0) cannot be used as a Base58Check encoded Bitcoin address so 0-10 and multiples of 10 are unavailable as Question ID numbers.
        • The uppercase letters I and O cannot be used as Base58Check encoded Bitcoin addresses so II and OO are unavailable as answer choice options.
        • The ZZ answer choice can be used as a default “None of the above or Protest vote”
      • Examples:
        • “1Q11AA7TJr2k24F59EfcYYQFUvmuuNreiu” would represent Question 11, answer choice AA for a particular voter.
        • “1Q11BB9xjfyqsfchkRxyBGxheaT81bGA26” would represent Question 11, answer choice BB for a particular voter.
      • The blockheight deadline is the deadline to submit votes
        • “n confirmations” is the amount of confirmations required after the deadline for a vote to count and is required to resist double-spend (double-vote) attacks.
        • User can move their coins to other addresses as soon as the blockheight deadline (+ n confirmations) has been reached.
  • Using the command-line Bitcoin Vanity address generator, each end-user voter creates their own “vanity-voting address” where the first 6 bits of such address contain a 6-letter “voting address prefix” corresponding to the answer choice they want to vote for.
    • This private key of this voter generated “vanity-voting address” is subsequently imported into the voters personal wallet file before casting the vote.
    • Generating this “vanity-voting address” takes between 5-20 minutes on a midrange laptop (as of 01-2014).
    • Open-source command-line generator: https://en.bitcoin.it/wiki/Vanitygen
  • To cast votes, the voter sends as many coins as they want/own to their personal “vanity-voting address.”
    • Anyone can vote while still retaining complete control over their coins.
    • Rather than one-person-one-vote, this system embraces one-Bitcoin-one-vote which shifts voting power to those with a bigger stake in the outcome.
  • At the predetermined blockheight-deadline (+ confirmations), the balances for all “vanity-voting addresses” with “voting address prefixes” that correspond to each answer choice are tallied and compared.
    • Only balances at the blockheight-deadline with the required confirmations count.
  • The voting question and answer choices could be added to the block-chain prior to a vote by sending a one-way payment to a hex address describing said votes.
  • The answer choice containing more than 50% of total cast votes (as measured by coin balances) is declared the winner. 
    • In the event no answer choice receives more than 50%, a subsequent run-off election is held between the top two answer choices.

 

Cryptovoter (Vanity Voting )Proof-of-Concept can be found here.

Cryptovoter (Vanity Voting) Manual Instructions can be found here.

Original post can be found here.

BCI Labs, Inc – CryptoVoter – Official Bitcoin sCrypt Website – The Other Bitcoin – BTCS Dev Blog