Bitcoin is a really interesting idea and has been in the news a lot recently with the bankruptcy of Mt Gox. I want to write a brief overview of how it works. Most of the material is drawn from here and here.
Challenges of a digital currency. We want to design a currency with several properties:
- Security. At any given time, each unit of money is clearly assigned to one entity, and only that entity can spend the money.
- Reliable. If A pays B, then B is sure that A actually has the money. In other words, A can’t spend money that he doesn’t have.
- No inflation. There a finite supply of money so that it doesn’t dilute in value. Moreover the supply of money is determined a priori and can not be altered by political pressure.
- Democratic and global. Any one in the world can participate and there’s no central bank that one has to go through.
- Minimal cost of transaction.
Main ideas of Bitcoin. Bitcoin is an attempt at creating such a currency. Its main ideas are:
- Complete transparency. The entire life history of every bitcoin (all the transactions it’s been through and all the owners) are openly recorded on personal computers around the world. The protocol is such that all the records are in agreement so there’s no possibility of dispute. Each bitcoin has a unique ID so everyone knows exactly where money is moving.
- Anonymity. Transparency for bitcoin but anonymity for the users. Each user is identified by an ID and a public/private key pair. But there’s no linkage from public identity with the IDs.
- Public key cryptography. If Alice wants to give bitcoin X to Bob. She issues a public statement, “I, Alice, give X to Bob”. Any one can use Alice’s public key to verify that this is the actual statement. Moreover, only some one with access to Alice’s private key is capable of generating such a statement.
- Decentralized verification. The Alice issues the statement “I, Alice, give X to Bob”, many computers around the world (miners) verify in their own records that Alice owns X and Alice hasn’t given X away yet. If a miner verifies it, it gives an “Ok” signal to the world. If sufficiently many miners verifies the statement, then it’s updated in all the public records and the transaction goes through.
- Proof of work. To ensure that only legit computers verify statements, each computer is required to perform some mindless calculations that are known to be computationally hard. The idea is that in order for some one to rig the verification, he would have to invest so much computational power as to be unprofitable.
How to steal bitcoins. The way to steal bitcoins from Alice is to steal Alice’s private key and then issue statements “I, Alice, give X to Y” where Y is some random entity you create. Apparently at several bitcoin exchanges, many users save their private keys at the exchange and when someone hacked the database, millions of coins were “lost”. Of course bitcoins are never truly lost since all of its life history is recorded. But it can be moved around from owners to owners (like counterfeit money) so that it’s hard to repay the original owner.
- Securing private keys is a major concern and challenge. Any string on a computer can potentially be hacked and stolen. It’s no different from difficulty with securing credit card info in Amazon, Paypal, etc. Loses are inevitable, but the bitcoin exchanges and “insurance” companies can offer protection/reparation for cost. So I don’t think this is a deal-breaker.
- If bitcoins become wide-spread there is going to be a significant computational cost in verifying all the transactions. Can we harness this computation to solve useful problems rather than mindless hash-functions?
- What determines the real value of a bitcoin? Since there’s no government or bank behind it, the exchange value of a bitcoin (versus $ or goods) is going to be determined entirely by public perception. Will this settle into some stable equilibrium in the long term, or will there be wild fluctuations if it remains a source of speculation?