Curiosity got the better of me. I've seen so many articles talking about Bitcoins lately that I wanted to get a better handle on how it worked. So I bought some, sold some, and bought some stuff with it.
And so, in this two part series:
- Part 1 (this part) -- I'll take you through some of the theory
How it works
The easiest part to understand is that the Bitcoin system operates as a peer-to-peer network without centralised servers. The obvious advantage of peer-to-peer is that it's difficult to shut down.
Supply and demand creates a market for Bitcoins as per a traditional financial system. There is no central authority issuing money, and there are no financial regulations offering any sort of protection to those using or trading Bitcoins. The system is designed to "drip in" new currency on regular intervals to mimic the normal action of economic growth within a traditional monetary system.
Most articles about Bitcoins talk about the process of "mining". The Bitcoin network does is indeed made up of a peer-to-peer network of "mining" servers, but what this "mining" software is doing is actually running the network itself.
Each Bitcoin transaction gets recorded in a decentralised transaction log. For example, if I give you 1 BTC ("BTC" being a non-official, but commonly used quasi-ISO 4217 code) that transaction gets recorded in this log file.
This recording process is not like a giant distributed SQL database. There is no "INSERT INTO TRANSACTIONS" and "UPDATE ACCOUNT SET BALANCE=..." in this arrangement.
The decentralised transaction log -- and this is the part I'm going to gloss over -- is a massive hashed and mashed together lump of data. Putting stuff into the log is very computationally expensive. However, unlike a SQL server database where you can make transactions disappear with a quick "DELETE FROM", because everything is so tangled in the Bitcoin log you can't do this.
The distributed Bitcoin log is known as the "blockchain".
Thus the design of the Bitcoin system is to represent in a "superdistributed" fashion every transaction that's ever occurred ever. If you have a wallet on your computer containing Bitcoins (which I'll show in), you yourself have a copy of this log file. (Your computer doesn't partake in the maintenance and distribution of the log -- it just holds a copy. Also, the log file has superfluous information trimmed out -- i.e. work is done to make the size managable from a systems architecture perspective.)
The actual cryptographic process that goes into the maintenance of this log is not important. The two things to remember that are is that a) putting things in the log requires considerable computing horsepower, and b) once a transaction is there, you can't modify or remove it because all the transactions are tied into a chain of dependencies.
Two things conspire to make the system globally reliable. Firstly, "considerable computing horsepower" means that it's not possible to go back and create a new, fake blockchain with any improper transactions that you so desire. (It would simply take too long to do this.) Secondly, the superdistributed nature of the blockchain means that you cannot attack one part of the system without having to attack the entire system, including all of the end users.
All of this is, in fact, pretty cool.
Anyway, the log keeping/blockchaining process is so computationally expensive that a reward for partaking in this work (and making the whole system work), the mining servers are given some Bitcoins for participating in this work. In this sense, "mining" is a bit of a misnomer -- it's actually commission given for work done, although there is an element of luck to it.
Using the USD-BTC exchange rate as of the time of writing, about $4,650 of value is added every ten minutes into the system.
Mining is now not regarded as being a decent way of getting into the Bitcoin system -- it requires considerable effort and specialist hardware to get started. Plus, you will likely spend more on electricity than you would extract from the process.
The easiest thing to do -- which I did, and I'll cover in-- is transfer some "proper" currency to a Bitcoin exchange and buy them.
Once you have some Bitcoins, you can send them anywhere in the system using an address.
This requires a "wallet" -- this being a piece of software that runs on your desktop or smartphone that connects into the peer-to-peer Bitcoin network. (And as such it's similar to how the various BitTorrent clients work.)
So if you wanted to transfer some money to me, I would give you an address to send them to. To help increase my anonymity, I would likely create an address just for that one single transaction. You would instruct your wallet to transfer money to that address.
That transaction is broadcast into the Bitcoin system. Eventually that distinct transaction gets written into the entire blockchain. Because the whole arrangement is based on the assumption that "the more computationally expensive the better", that process actually takes a long time. There is little immediacy in this system.
Eventually that transaction will come down to the receivers wallet, along with the transaction log. The wallet is then able to report an up-to-date balance, together with a list of transactions that built up the balance.
How about anonymity? The system is designed to be secure, not necessarily anonymous. It is in theory possible to trace back any transaction to an actual person. The "problem" with the design is that all the transactions get mashed up into the entire decentralised blockchain which is copied everywhere. This stops is being a properly anonymous system -- there is nowhere to hide anything.
Be careful of this point as I've seen a good number of articles talk about how Bitcoin is anonymous. It's not.
You can buy things with Bitcoins. If you're somewhat naughty, Bitcoins are the preferred currency on the infamous Silk Road website, a website you can supposedly buy things like drugs and firearms.
There is a wiki listing merchants where you can buy normal, socially-acceptable goods and services. But, these are essentially entirely "meh". Chances of an online merchant that you actually want to use accepting them are slim to none.
But that isn't really the point. Bitcoins aren't about buying and selling -- the system is about moving money around outside of the purview of authorities. This comes back to the idea that it's about cash -- it's the digital equivalent of a fat envelope stuffed with dollar bills.
Of course, to turn Bitcoins to and from actual cash in an untraceable way puts me in mind of the Office Space scene where Peter, Samir, and Michael are looking up what "money laundering" means in the dictionary. Standard Nerds like you and I aren't going to be partaking in that sort of shenanigans, I'm sure.
Perhaps another way to look at it for those of us amongst us who aren't quite so "Breaking Bad" is that it's a good way of sending money around electronically without having to use PayPal et al. (Of course, there is no consumer protection of any kind with Bitcoins.)
For me, I emerged with a feeling that Bitcoins are an interesting social and technical experiment -- immensely clever and gloriously geeky -- but in its current incarnation little more than that.
A large part of the problem is that the attention that it's receiving is now actively detracting from the principle of it. The more attention the system is receiving, the more out of control the prices are getting. I decided to write this piece seven days ago. In that single week, the price went from about USD 100 to USD 180.
It's turning into a bubble of monumental size.
If the prices were more stable, I would actually use it.
In the end, I bought and sold some Bitcoins for the sole reason I could write a ZDNet article on it. Owning Bitcoins just so you can blog about is likely in the top two or three reasons for bothering. Until the prices settle down at least.
What do you think? Post a comment, or talk to me on Twitter: @mbrit.
Image credit: Wikimedia