Why splitting your BitcoinCash coins IS a bad idea during the #war
Following my comment on the coin splitting tool that has been released earlier this week, wahheboz asked me to explain why I think that splitting your coins might be a really bad idea during this contentious fork and transacting with it during the BitcoinCash #war even worse.
Here is what I posted originally:
While it seems to make sense in a one-user point of view (yourself) “now I am fine, my UTXO set is splitted”, this will cause violent side effects across services decreasing interoperability and facilitating double spending (same original UTXO duplicated on each chain).
One “good” side effect could be to make the UX so bad so fast that the one or the other chain will be forced to add replay protection and definitely split away.
One “really bad” side effect is that a unified chain (fusion of ABC and SV ruleset), one of the probable peaceful outcome, will erase part of the history.
In fact, this unified node will accept your first split of an UTXO N with CDV but not the second split with MUL for example.
Else if there is no unification, the chain will not be able to add opposing opcodes, forever, to not duplicate funds from a user on the same chain.
So considering that many of us are trying to think things through the mess, let’s take a simple example and try to analyze the outcome of using a coin splitting tool.
Outcome simulation : unification
Considering that a user has one UTXOo (o: for original) of 1000 $BCH within his wallet that he plans to split.
Let’s now consider that the fork happens (sadly).
User then splits his UTXO using a coin splitting tool and obtain:
- UTXOa of 1000 $BCH with CDS valid on ABC and put in a block X
- UTXOs of 1000 $BCH with MUL valid on SV and put in a block Y
- note that those have different hashes due to the different opcodes used within the script
- both are used to transact during the #war (unwisely)
Then after the hash war, one chain capitulates, let’s say SV (I could have taken ABC here no need to argue with me, I am unbiased) due to a low adoption or unreliable network due to the #war.
Let’s say that ABC and SV comes to an agreement to merge the ABC and SV ruleset (MUL and CDS will be valid at this point).
Wallets/businesses which were running on SV chain post-fork decide to rebroadcast SV transactions in order to lose as less as possible of their transactions history (which are holding a lot of meaningful and valuable metadata).
What then happens to our user UTXOs:
- UTXOa and its children is already in the history on the ABC fork which becomes the mainchain;
- UTXOs and its children becomes valid (I am not considering here that those could have been mixed with coinbase rewards which is an even worse case) because using MUL and can be re-broadcasted (UTXO) by our user, his wallet or the SV based businesses.
Unfortunately for our user, UTXOs will be rejected due to the fact that it has the same parent as UTXOa, UTXOo, and that UTXOo has been fully spent, so the 1000 $BCH cannot be duplicated.
Our user has lost of his UTXOs and descendants history forever.
Outcome simulation : split with replay protection
Let’s take the same situation but let’s say now that due to major network instability caused by the #war (delays, node crashed etc.), ABC and SV come to an agreement to add replay protection on both side to definitely (and properly) fork the chains.
Both chains will not be able to reuse the opposing party 11/15/18 opcodes.
ABC for example will not be able to use MUL forever.
Why? Because if they do so they will be prone to accept transactions from the SV chain issued during the #war that could be rebroadcasted by users or maliciously by attackers.
We can imagine that backlisting strategies could be used to ban all the transactions from the SV chain hardcoding it in the software itself, but tricky to put in place.
So ABC would have to come with a new opcode to replace MUL.
So my advice is : you should not open the pandora box, don’t use coin splitters or use new features post-fork until we all know the outcome.
Don’t be greedy, there’s nothing to gain to split your coins unless taking a political stand. You’ll get your free coins if there is a proper hard fork at the end.
Again, if you want to be safe, don’t split your coins: don’t use new opcodes or other chain specific features.
Even if there will be DoS attacks using massive blocks (128Mb+ DoS?), even if your txs end up in different blocks (in term of block height): you will be fine, your UTXO will be on the winning chain (if there is one).
Why I am saying “if there’s one”?
Because it could be such a destructive #war than we could have to rollback the entire history of the mainchain to return at a pre-fork state like Ethereum had to do before the DAO.
At first I thought this coin splitting tool could be a good idea, now I have a feeling that it is the pandora box.
Anyway thanks to the protocol development teams to push for this melted fork and to not have added replay protection (the newcomer should have done it at least to prevent this situation).
User experience will suffer, trust and adoption will decrease as I wrote a month ago to alert the community: “Don’t forget that Blockchain technologies ensure a trustworthy decentralized history, so without ensuring trust the system is broken and useless. “
I urge protocol development teams to be reasonable and do a proper hard fork with replay protection or to unify their node implementation (BU is ready for that already).
If you are a business I recommend you to use a tool like chospticks.cash to bypass potential blacklisting strategies and check if you can accept a UTXO safely.
Disclaimer: I might be proven wrong in my analysis in the future so do your own research and follow closely the comments on this article (which I hope will be numerous) to forge your own opinion.
Originally published at yours.org.