Saturday, April 13, 2013

Open discussion on Bitcoin

I've been hearing a lot of stories lately about Bitcoin, and while I don't fully get it, I'm currently on the side of people who think it's ultimately going to wind up being a very technically innovative Ponzi scheme. I'm not making this post to argue about that. Realizing there are a lot of cheerleaders for Bitcoin out there, this post will be heavily moderated. Sales pitches for Bitcoin will not be approved, nor will posts calling me names, although pro-Bitcoin posters are welcome as long as they can contribute to explaining the either the technological details or the details of economic distribution. A lot of the purpose of writing this post is to foster some technical discussion and assemble my thoughts about how it works.

Bitcoin is an "alternative currency," which is something political Libertarians are always saying we need. It is meant to be decentralized, not controlled by any one government or individual. At the present time, one Bitcoin is worth around $100, down from a high last week of around $200. I am personally not particularly interested in getting involved with Bitcoin, either by trading my dollars for bitcoins and spending the bitcoins, or by speculating on buying low/selling high, or by mining for them. However, with my computer science degrees I'm mildly interested in working out exactly how the system works. I found a FAQ page, and I found the original technical paper by Satoshi Nakamoto, but I still don't have a full handle on it yet. Eventually I'm probably going to have to download the open source code and look at it, but I'm still trying to decide if that's worth my while.

Here's my extremely broad, and probably not entirely correct bird's eye view of how it's meant to work. There is a search space of very very large strings, serving as unique identifiers for individual bitcoins. They are meant to be like a gold standard, in the sense that there is a finite supply of valid identifiers, so after a certain point new money can never be "minted." The algorithm ensures that there can never be more than 21 million bitcoins in existence. These coins are discovered or "mined" by performing a complex search algorithm. Once you discover a coin's unique ID for the first time, you "own" that coin.

Question 1: I realize this probably can't possibly happen given the size of the search space, but in theory, how is concurrency handled? Suppose two miners simultaneously discover the same bitcoin. Without central arbitration of some sort, who decides who "owns" this bitcoin?

Once I own a bitcoin, I can use it to buy goods and services. This transaction is validated by creating a public record that the money changed hands. It will then be a matter of record, in some open source fashion, that you no longer own the coin, and the seller now owns it. If I have one coin I can't just keep "spending" this coin over and over again, because there will be a record proving that it wasn't mine.

Question 2: Is there no centralized database that has records of who owns each bitcoin, or fraction of a bitcoin? If not, how is it handled if two sets of records disagree?

What strikes me is that Bitcoins have been compared to Napster or Torrent, in the sense that they are distributed networks of data. But it's not really like that, because there is no limit to how many people can illegally "own" a copy of a song or movie on their computers. It's more like if Napster had some terms of service requiring each person to promise to delete their local copy of a song every time they passed it to somebody else. And obviously that wouldn't happen.

I'm genuinely interested in the answers to these questions. I'll keep reading the paper and probably figure it out eventually. But since I do believe in decentralizing work, I figured I'd take advantage of the smart friends I have and get them to help me figure it out too. Please comment.

I repeat: This is meant to be a technical discussion. Heavily moderated to keep out Bitcoin salesmen, and people who want to expound at length on untested political theories.


  1. This comment has been removed by the author.

  2. Stupid blogger. Somehow I accidently a comment. I've left more messaes on your G+ page. That's way easier.

    Q1: The block chain can diverge for a bit. Eventually one side will win, as other miners attempt to solve the next block.

    Q2: Records cannot disagree. The block chain is the record. All nodes share it. It is validated down to it's root.

    The ownership comes into the game because each wallet has a private key which is used to sign the transaction. The "owner" is the private key. No other nodes know this. Unless somebody steals your wallet: which is basically, stealing your private key.