With Segwit and BIP-148 coming, I have been trying to figure out what's exactly gonna happen with Bitcoin after August 1, by watching videos and reading articles. One thing (among many others) confuses me ..
Some are saying that you can exchange Bitcoins on one blockchain (say, the Legacy blockchain) for Bitcoins on the other (say, the BIP-148 blockchain). I don't understand how this can be done. I actually don't think that this would be possible. This is my reasoning:
Say I have 20 BTC on the (Legacy) blockchain before August 1. Now, August 1 arrives, and we have a BIP-148 soft fork. Now, I have 20 BTC on both, the Legacy blockchain and the BIP-148 blockchain. Now, to "exchange Bitcoins on one blockchain for other" (or for any other transfer), I have to make a transaction - a send or a receive.
Suppose, I send 15 BTC to some person P. This transaction will be broadcast to all the nodes/miners in the network, irrespective of the fact whether that node/miner runs BIP-148 software or not. If:
- A BIP-148 miner solves the transaction first: That block will be attached to both the blockchains. The Legacy miner will stop trying to solve that transaction.
- A Legacy miner solves the transaction first: The block will be attached to the Legacy blockchain, and all the BIP-148 nodes will reject this block. But, BIP-148 miners still have this transaction in their mempool. They will keep on trying to solve it and eventually will solve it.
In both of the above cases, the BTC balance of both myself and person P is the same in both the blockchains.
The only way, it seems to me, to have different balances for a particular account (public key), is, if someone tries to do double-spending. (I have arrived at this conclusion after doing some analysis.)
So, how do exchange coins on one blockchain for coins on the other, reliably?