Ask n nerds to explain what Bitcoin is, and you'll get n + 1 answers. It could be a commodity, a currency, a pyramid scheme, or a payment system. To further complicate matters, here's my opinion: Bitcoin is a database.
Bitcoin's blockchain is an append-only log store containing financial transactions. Anyone can write a transaction to the blockchain; all you need to do is follow the rules of the protocol and pay a small fee. You're only supposed to use the Bitcoin blockchain to store financial transactions, but I argue that this is an unenforceable rule.
There are two reasons that Bitcoin can't be restricted to store only financial data:
- It's easy to hide binary data inside of structured data.
- Miners don't mind storing binary data in the blockchain.
Steganography is the art of hiding messages inside other data. You can store messages inside JPEG images, MP3 files, and of course Bitcoin transactions! As a trivial example of this, I could send bitcoins to the address,
1MeetMeAtTheDropoffAt9PMXXXXYmheM8. Yes, that's a valid Bitcoin address! To a computer, this looks just like any other Bitcoin address. That said, it would be possible to write a program to sniff out textual-looking Bitcoin addresses. Of course, if you really want to hide a message in a Bitcoin address, you can simply encrypt the message; that way, it will look like a normal Bitcoin address to anyone without the decryption key. Hiding data is very easy, but detecting hidden data is not!
Bitcoin developers seem to agree that Bitcoin is for payments, and that non-payment uses of the blockchain should be discouraged. The problem is that these rules are enforced by miners, not by developers. Mining is a zero-sum game, and each miner is trying out-compete the others to mine blocks and collect transaction fees. Data transactions, just like financial tranctions, can contain fees (which are paid to miners). Is a miner going to refuse a data transaction that has a nice fee, just on principle? I don't think so; by throwing away a transaction like this, they are leaving money on the table that some other miner can snatch up.
I believe that Bitcoin was intended to be a payment system. However, the system that actually exists is instead a world-writable database.