Is the ultimate answer to the title of this thread 'yes, its a delusion'?
In a trustless system, it seems that without some centralising force which ensures consensus will converge (either through an incentive based game theory, or through trusted checkpointing), there is no guarantee that it won't diverge.
My question: am I missing something? Is there a trustless way to ensure convergence without a mining incentive?
I suppose if you are all by yourself then you should converge instantly all the time unless you are flawed, e.g. schizophrenic. With two or more independent parties involved, the whole trick is keeping the rift-raft out of your way. Unless you know/trust each and every other party via a secure/reliable channel convergence might always be questionable. The real question is, "Can we do business for now with a system that might fail us someday?" The apparent answer is yes. On the other hand, this is no reason to stop trying to improve the system.
Weighting the risks of two systems against each other is well worth the effort. Compare today's modern cash transaction verses a Bitcoin transaction. Um, hmm, we agree to exchange cash for something. The provider of the something and the payer agree to the details of transaction, e.g. the something and an amount of cash are exchanged in a public location (for safety). During the exchange (or even shortly there after; before we part company), an announcement is made that the value of the cash has changed (rare but not unheard of and usually announced in advance but you get the idea); is it just too bad for the provider or payer (depending on the direction of the value change)? The things that can go wrong vary. The cash might be flawed. Etc. If we want to transact remotely then things get more complicated. Convergence (or
Durability, the "D" in the ACID
https://en.wikipedia.org/wiki/ACID properties, is tricky to guarantee. In Bitcoin, effectively today there are a few levels of durability recognized; when the transaction first is broadcast around the network (is this a little like pulling one's wallet and showing sufficient funds? no, it's more than that but it's not quite like handing it over either ... weird). A little later it might show up in a proposed block (which is a lot better but not quite 100% durable yet) -- (is this a little like handing over the cash but it being dropped on the floor or something while being examined for counterfeit?) If the proposed block is orphaned by another longer chain then we got to see if our transaction is in the usurper and if not then wait -- (is this like someone watching the transaction saying it looks good to me but someone else bombing in and saying wait a minute there's more to the story?) The provider and payer stand around looking at each other wondering, "Are we ok? Is anyone else going to come along and wreck our deal with some other news? When is it safe for them to walk away? After awhile enough "news"/blocks pile on that it seems pretty unlikely anyone is going to undo the chain and we walk away. If we're wrong and it is undone even years later then the provider of the something takes the loss. The payer got the something and paid in good faith. The onus is on the provider to further secure the value they received, e.g. deposit the cash into a bank for safe keeping (ha!) or exchange it into something else, e.g. other goods/services. Go buy a piece of land or some precious metal but know that those things aren't necessarily durable forever either.
When aliens arrive with computing power beyond our imagining, they could calculate a replacement chain and wreck everything. Even without that, someone could be calculating a shadow chain and pop it out to give Bitcoin a very bad day; I know, I know, they can't keep up with the rest of the miners unless they have more hashing power. Restarting the calculation of a shadow chain each time the shadow gets too far behind and then waiting until you get "lucky" and then popping it out is a problem. When a transaction leaves the mempool because it appeared in the chain is the moment it becomes vulnerable to durability failing. The client has to watch forever and retransmit *any* time later if the shadow chain appears and takes over.
Despite all the noise about 6 blocks being somehow enough, there's nothing special in the code for it;
https://blockchain.info/charts/n-orphaned-blocks shows a spike of 7 blocks being orphaned. Even longer chains can be orphaned; what's to stop it?
If a shadow chain pops up that is really long, e.g. 20 blocks, then how will the community respond? Better hurry, the code took it at face value and is plowing forward. Change the code to set the maximum length of a orphaned chain at 6 blocks? When the network is partitioned due to something bad; each side of the partition will be calculating chains and only when the links (hours, days, weeks later) are reestablished can the longest chain be detected. E.g. China cracks down and physically partitions the network (perhaps due to rising military tensions); if/when they reconnect then one side or the other is going to have the longest chain. It doesn't even take a big network partition; all it takes is a burst of bad luck; two miners just happen to find long chains independently at the same time. It does *not* take 10 minutes to find a block. It can happen in a split second. Yes, the odds are long of finding six (or any arbitrary number) or more blocks in a chain in a very short amount time but if/when it happens then it will be ugly.
Please explain how Bitcoin avoids this nightmare (besides just hoping to avoid a run of bad luck).
None of this really addresses the possibility of someone exploiting the system maliciously per se. Does an exploitable hole really exist right now or not? If so then is anyone actively attempting to exploit it?