[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.”
- A question and answer choices are published to the community
- Each answer choice is associated with a unique 5-letter “voting-address prefix.”
- The question, possible answer choices (w/ corresponding “voting-address prefixes) and a blockheight-deadline (+ n confirmations) are publicly posted.
- 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.
- 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 (+ n confirmations) has passed.
- One-Bitcoin equals one-vote.
- 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.
- The answer choice with address balances exceeding 50% of total coins cast as votes is deemed the winner.
- 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 (+ n 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.
- Anyone can post a voting question so long as sufficient notice is provided.
- 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 (+ n 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 n 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