However, to avoid going off-track, I think one point has been missed in all of these comparisons between Bitcoin and tulips. That is, blockchain technology.
If I am to believe what I read about blockchain technology is that it cannot be tampered with without that tampering being recognised almost instantly.
I can dive into this a bit, bear with me because there's no easy way to explain it thoroughly. Bitcoin is a blockchain, effectively a decentralised ledger that keeps a public immutable history of transactions. Only the holder of the secret private key for an address can create a new ledger entry spending from that address. There is no central controlling authority or company, all nodes on the network are equal peers, and the system is open, so anyone can become a node on the network, anyone can create their own addresses ready to receive bitcoin transactions without permission (i.e. accounts are not assigned).
The fact that such a system can be used as a monetary system is kind of secondary, but also not, because the fact that bitcoins are worth something is a necessary incentive in the system to ensure there are miners - I am still skeptical of the companies that are claiming they will use blockchain tech without the monetary aspect.
Each node can see every transaction in the whole history of bitcoin, that means they can derive the current balance of any address and know that any coins spent form that address are valid.
Transactions are grouped in blocks, and a block is appended to the blockchain on average every 10 minutes. There are some nodes that make the data available in the form of a website, so we can effectively browse the whole blockchain, for example:
Here is block #497275 on blockchain.info: https://blockchain.info/block/000000000000000000a0f386afac6d3049936453d3562559dd670257f432619f
Here is the same block on blockexplorer.com: https://blockexplorer.com/block/000000000000000000a0f386afac6d3049936453d3562559dd670257f432619f
You could run a wallet app, it will connect to other nodes and it will receive the same block.
You can look at any block or any transaction on either of those websites, and they'll be the same.
What bitcoin does is ensure that all nodes agree on what each block is, that it contains valid transactions and that it can't be changed after the fact, without anyone being in charge or any node being more important than any other. It sounds simple, but this was a really hard computer science problem to solve, many thought it was impossible.
You can see on both of the pages linked above that the first transaction in the block has an ID of 3caa2b0ac41dc124ae50d76981258fcb98068aae8b44b7aca30e715f232344d5 which is the special transactoin that the miner who solved the block gets to award themselves, it contains the allowed reward of 12.5 bitcoins, and the transaction fees from all of the other transactions included in the block, which was about 0.7btc. In this case, the miner chose to send 13.06 odd btc to address 1AM2fYfpY3ZeMeCKXmN66haoWxvB89pJUx and 0.13 to 15J3Ra72YSpe2hdLBjpMH1iKXJMJ55F2mJ (not sure why they split it between two addresses, but that was their choice).
This is now for all intents and purposes unchangeable history, that is stored on every node in the network. Why is it unchangeable? you can see on the page that the block has a hash of 000000000000000000a0f386afac6d3049936453d3562559dd670257f432619f. A hash is a result of a mathematical function where the output is apparently random for any given input. The function can't be reverse engineered, and the same input always gives the same result. Try it out here:
Put in "bitcoin is tulips" as the input and you'll always get the hash: D392C4B3D4150E6A526FB6E2F7D7EC0C09054CC32A8A721BFCC57A5BA9828CB7
try changing the input by only one character and see how much the hash changes
Now, try and find any input starting with "bitcoin is tulips" that gives a hash starting with as many zeros (000000000000000000) as the bitcoin block hash above. The only way to do it is trial and error, and you'll never do it even if you spend the rest of your life at it. This is what the miner had to do to solve the block - to make it acceptable to all other nodes on the network. They had to find the 'nonce', meaning what value needs to be added to all transactions to give a hash with the required difficulty (the required number of leading zeroes).
I tried a few, and found that a nonce of 21 i.e. the input string "bitcoin is tulips21" at least gives a hash with one leading zero:
042CEB2CBF6091FAD61404E68229773862F9847FB37EE29803924E1D7FC7C403 but find one that gives a hash starting with 000000000000000000 and I'll give you all my bitcoins, because you never will.
Here's a really important point: the input being hashed for each block, contains the hash of the previous block, so if you try to change the transaction data in any block, you would need to re-solve the nonce for the hash for that block AND every block after it. Re-doing the work is infeasible.
This is a lot to get your head around, I know, but it works, and a public decentralised immutable database should have many more uses than as a ledger for money. Property rights, prove of existence of any data at a given time, provenance. It's also a provably fair random number generator, future hashes are unpredictable random numbers that can't be rigged, which could be used to determine the winner of any lottery.
It feels like trying to predict twitter, facebook and netflix in the 90s when the internet was as simple as "an open network that transfers information across the globe". Now we have an open network that transfers value across the globe, and provides an immutable transaction history and it's equally as hard to predict exactly what it will be used for when all is said and done.