What would happen if there were two "disjoined" versions of bitcoin with the same popularity? Right now, we have one accepted version of Bitcoin (the software) and most miners and full nodes are using some versions of that.

However, what can very well happen is some split within Bitcoin developers over some detail - say, halving time, block size, minimal fee, better hashing/encrypting algorithms after some successful cryptographic attack, you name it. (It happens with open source projects.)

Imagine this happened and there were two "versions" of bitcoin, that accept different blocks as valid - for the worst case scenario, imagine that the sets of valid blocks are suddenly disjoined (what is accepted for one version is not for the other). And for the worst case scenario, imagine that the distribution between both miners and full nodes is 50:50.

What exactly would happen? How exactly would the problem "resolved itself"? If we assume that regular transactions (not the mining ones) are sent between both of the versions, what would happen with them?

(Sorry if this question seems too theoretical, but I personally can see this hapenning.)
That is what is considered a hard fork, assuming that both halves have their reasons to not change it's versions and that previous blocks in the blockchain are considered valid in both clients then we will have 2 types of coins.


Coins generated before the fork (A) will be freely double spendable transactions using this kind of inputs will be accepted by both groups of miners and considered valid.
Coins generated after the fork (B, C), non double spendable and transaction that use this kind of coins will be accepted by only one of groups the other will discard it.


As long as you mix A with only B or C in your transactions they will be accepted by half of the miners, you could not mix B and C as you client will have only one blockhain.

Services and clients that are connected to the network will be using chain B or C, even swapping and having reorgs of really large portions of the chain if the client considers valid both chains, but on a given time a client can only have one chain or the other.

In such scenario clients and merchants will choose B or C for whatever reasons and get a client modified to only allow B or C blocks, that will disable double spending attacks agains the same merchant (but will still allow to double spend between merchants using different chains).
Maybe new clients will be created to block all transactions using A coins.

Anyway, in real life this would not matter, if such an event happens for more than a couple of hours, the fork and double spending problems will crash bitcoin value, merchants will disconnect from the network and stop accepting bitcoins and miners will have no reason to continue mining B or C, it would be better for them to start a new coin altogether (Bitcoin 2  and Bitcoin^2) than continue working on that.