Thursday, June 30, 2011

We the Processors

In a recent, insightful blog post, Paul Bohm points out,
"Bitcoin isn't just a currency but an elegant universal solution to the Byzantine Generals' Problem, one of the core problems of reaching consensus in Distributed Systems."
He mentions several applications of this problem, including domain name registration, the problem solved by Namecoin.

But, after reading his article, it occurred to me that there is another, arguably even more important application of the insight that Bitcoin's underlying protocol can be used to solve a wide range of distributed consensus problems:  Specifically, the problem of secure, trustable electronic voting in public elections.

Most secret-ballot voting systems are plagued by the problem that the voter always has to trust somebody to do their job right:  The people who count the paper ballots, the designer of the touch-screen voting machine or optical-scan ballot counter, election officials who aggregate results from different districts, or the website operator in the case of online voting, and even the other voters themselves (not to vote multiple times).  It is devilishly hard to devise a voting system in which the voter doesn't have to trust any authorities, and in which the ballots remain anonymous, and no one gets more than their fair share of votes.

However, if we are willing to redefine "fair share" to mean, everyone gets to vote with a weight that is proportional to their hashing power, than a Bitcoin-based protocol can solve the electronic voting problem.

The idea is simply this:

  1. The Bitcoin protocol is extended to allow blocks to be "tagged" with a payload of auxilliary fields (in addition to the usual Merkle tree, block ID, etc.).
  2. When an election is scheduled, it is declared in advance that the winner will be decided based on which candidate's name appears most often in the tags in the block chain, within a certain predefined range of (future) block numbers.
  3. Each miner, as it is hashing block candidates, optionally extends the block being hashed with the name of their preferred candidate.  When a nonce is found that gets a winning hash, that block is submitted to the network and gets added to the longest chain.
  4. Also, a mining pool can act similarly to a political party, and pre-declare which candidates it is supporting in which races, and include their names in the blocks for all of the get_work data that the pool distributes to its miners.  The miners can then choose to mine for whichever pool's stated slate of candidates best reflects their own preferences.  (Or, of course, they can also still mine random nonce subspaces on their own, and hope to get lucky.)
When the election is over, and the chain length has moved safely beyond the end of the voting period, everyone simply counts up the names on the consensus longest chain, and sees who won each race (you could hold elections for several offices and/or ballot issues simultaneously).

Obviously, since the search process is probabilistic, the result will not reflect precisely the wishes of the electorate, but, within the bounds set by the law of large numbers, it will with high probability be very close to the ideal distribution of votes, as long as a large enough range of blocks is included within the "voting period."

Of course, this system is not a "one person, one vote" democracy, but rather a sort of meritocracy, based on the notion that the amount of computing power one commands is a measure of the strength of one's decision-making ability.  Instead of working for "we, the people," such a system would work for "we, the processors."

Such a shift in political power obviously would entail certain risks, but, at least in this framework the voting system itself can be trusted - unlike the situation in our present system, in which the average person never even knows for sure whether the election system counts votes honestly, so has diminished incentive to participate.  With "Votecoin" (a possible name for this new system), every well-informed person knows that the system works fairly (and they can inspect the source code for their miner, if they wish), and so has a strong incentive to working hard to build up their hashing power so as to best support their favored candidate.

I believe that people's confidence in the underlying integrity of the voting system is key for producing strong participation in elections, and helps to create a polity that is much more actively involved in their political system, and more invested in its success.  Therefore, I think that to make such an advance in election technology would not weaken the principles of democracy, but rather would enormously increase its effectiveness.

Oh, and by the way - since anyone in the world can participate in the Bitcoin network, this approach to holding elections implies governance with global jurisdiction.  Since we don't yet have one world government of physical nations, this could be, for now, just the virtual "government" of the Bitcoin City itself - the worldwide community of Bitcoin users.  Some of us like to say that we don't need a government, but someday, we may in fact need to make important consensus decisions as a community - such as (someday) planning an upgrade to an improved, more secure protocol - which will require having a reliable method to poll the entire community for its views.

In any event, anyone who would like to help the author develop experimental prototype "Votecoin" software is invited to email me at michael.patrick.frank@gmail.com.

6 comments:

  1. There are better Crypto-anarchism voting systems out there that do not have the "processing problem".

    voting was one of the first crypto movements, currency came latter with the influx of libertarian loons.

    ReplyDelete
  2. I'm using a different crypto product right now :D :D :D

    ReplyDelete
  3. How do they achieve anonymity while preventing duplicate voting?

    ReplyDelete
  4. They septate the key from the vote via some really complicated random process.

    Keys, like voters, must be registered to ensure that only eligible people vote.

    ReplyDelete
  5. So, you have to trust the voters not to create fake registrations, and the registrars to verify registrations correctly. As I said, you still have to trust *somebody*. With Bitcoin-based voting, you don't have to trust *anybody*.

    ReplyDelete
  6. As pointed out, the Bitcoin network buys you near-complete decentralization and lack of trust. But this comes with the price of defining reality as whatever the greatest computing power says it is.

    Is this really a trade you want to make in an election? An election *already* forces you to trust a centralized authority - whatever organization is filling the position! If you can't trust them to conduct the election with one of the many cryptographic voting schemes which offer all the usual guarantees of anonymity and verifiability, then why do you trust them to accept the results and do as the Bitcoin election directs them to?

    There aren't very many elections where one doesn't trust a central authority to subsequently act, and those can usually be expressed more naturally. (Bitcoin is an 'election' about money, Namecoin is an 'election' about what IPs associate with what domains, but is that really a useful point of view?)

    ReplyDelete