Users and miners in each region will continue to work without being aware of being isolated from each other.
This is incorrect. It would become quickly obvious that something significant had happened, since the average block time would double to 20 minutes (if the hash power split exactly in half). If only a small portion of the hash power were isolated, then anyone on the isolated portion would likely see their average block time increase significantly.
That's a good point. It's statistical though and using it as a programmatical way to determine a split would be wrong.
I suppose we need to frame the context of this scenario. There is a network split and no human decision can be taken while this happens. Highly improbable but otherwise we couldn't have such a split happening in the first place. Maybe a more probable scenario is if there is a bug that introduces a different behavior for half of the nodes.
We would have two versions of the blockchain - which for all matter and purposes - are both valid.
According to the protocol the longer one (the one with more total work) would be the valid one. Anyone communicating on the isolated network with less hash power would have the "invalid" blockchain. As long as they are aware of this, they can treat any transactions that they send or receive as unconfirmed until the network isolation has ended.
Yes - but they are not allowed to communicate.
All the transactions that happened in the orphan chain will be considered invalid causing loss to the merchants that sold goods.
This is incorrect. The transactions that happened in the orphan chain will be considered unconfirmed. It is extremely likely that they will confirm in the future blocks on the correct blockchain. It is only if someone manages to accomplish a double spend on the "valid" blockchain while the network is split that some transactions from the isolated netowrk may become "invalid". This would be difficult to accomplish since the attacker will be stuck on the isolated network.
Right. I forgot that orphaned transactions simply return to the mem pool.
Not to mention that double spends can happen at will in this scenario if someone has a connection to both networks.
If it is possible to connect to both networks, then it is possible to relay blocks between bloth networks. Therefore, there won't be a split blockchain.
It could be possible for a mischievous person whereas the common person is unprepared especially if this is the result of a deliberate attack.
In conclusion, the current design of Bitcoin does not cover the scenario of an Internet split.
It would handle it reasonably well. Probably a lot better than many other global financial and communications services.
Hard to say. There are human factors to consider too.
It goes beyond the need to recover a blockchain.
In what way?
You would need to cherry pick the double spends.
There would be no good blockchain
Yes there would.
From a definition point of view, the longest chain is the good one. But this is still unpleasant to the victims of the double spends.
and recovering would require manually stitching the blockchain together.
No, it wouldn't. Such a thing isn't even possible with a proof-of-work system.
The system actually does it automatically by rerolling orphaned transactions. The manual part would be the result of customer complaints. People who are not happy with the result will call their merchants.
Is this what you want to tackle?
I hope not, because this would be a waste of time.
Note that Satoshi already answered most of this back in July 2010:
It's hard to imagine the Internet getting segmented airtight. It would have to be a country deliberately and totally cutting itself off from the rest of the world.
Any node with access to both sides would automatically flow the block chain over, such as someone getting around the blockade with a dial-up modem or sat-phone. It would only take one node to do it. Anyone who wants to keep doing business would be motivated.
If the network is segmented and then recombines, any transactions in the shorter fork that were not also in the longer fork are released into the transaction pool again and are eligible to get into future blocks. Their number of confirmations would start over.
If anyone took advantage of the segmentation to double-spend, such that there are different spends of the same money on each side, then the double-spends in the shorter fork lose out and go to 0/unconfirmed and stay that way.
It wouldn't be easy to take advantage of the segmentation to double-spend. If it's impossible to communicate from one side to the other, how are you going to put a spend on each side? If there is a way, then probably someone else is also using it to flow the block chain over.
You would usually know whether you're in the smaller segment. For example, if your country cuts itself off from the rest of the world, the rest of the world is the larger segment. If you're in the smaller segment, you should assume nothing is confirmed.
I don't see why it is so hard to do a double spend though. You don't have to be connected to both network. You need to know people who are and then ask them to broadcast the transaction for you.