Politics aside, we think most participants in Bitcoin (BCH) want users to experience minimal consequences of potential forks, hash wars, chain splits and whatnot. It made us think about the possible consequences of such events from a users perspective.

What does a user want?

Reliable transactions. Users want to be able to send and receive transactions with the least amount of effort with a maximum amount of security. Spenders want to create transactions, send them to the network or to their counterparties and be done. Merchants want to receive transactions and have the least risk possible regarding double spends in any way. They want to be sure they got paid.

Consequences?

When miners disagree, it can be scary for users, whether they're merchants or are using Bitcoin in any another way. A user might not know if a chain split happened, on which chain his transaction is or on which chain he wants his transaction to be. After all, a chain split could be temporary and the receiving party could end up with no coins at all.

Replay "attack"

When a blockchain splits without a so-called "replay protection" spending UTXO sets from before the split results in valid transactions on the other chain(s) since the history on these chains is exactly the same. Though after the split, the UTXO set could vary accross different node implementations. If a transaction is valid on one chain, it might not be valid on another chain. This could happen when:

a UTXO is spent on one chain, but not on the other(s)

a UTXO is spent with an opcode not implemented in another node implementation

coinbase rewards create different UTXO's

a transaction is double spent by the holder of the keys

a UTXO existing on one chain, but not on all chains, is spent

This is where it can get tricky. Will the transaction I received be a valid Bitcoin transaction?

Now What?

To have the least amount of risk, in case of a split, is to receive transactions on all resulting chains. If all chains contain my transaction, I can be sure I received my bitcoins.

To mitigate the risk of ending up with no Bitcoin and having a worthless UTXO in a blockchain that may or may not function, we believe it is best to:

monitor possible chain splits

replicate all transactions across all implementations When transactions are succesfully replayed across different implementations, we enlarge the odds of the transactions being valid on possible chain splits.

have an easy way to check if a transaction is validated / mined on different implementations.

We're planning on releasing tools to make these actions as easy as possible, starting with running a version of the Bitcoin Fork Monitor with some of the Bitcoin Cash implementations. More tools to be announced.