One of Bitcoin Cash’s main clients has merged a code change that relays (communicates) double spent transactions to all nodes.
Currently, nodes tell other nodes of only the first transaction they see. This change however makes it so that nodes pass on second double spending transactions to other nodes.
Bitcoin ABC, the current main client of bitcoin cash, has not merged this change with is lead developer seemingly being very against it.
The change, in fact, appears to be quite controversial because there is no agreement over whether this would make double spending harder or easier.
In bitcoin cash, nodes follow a first seen rule as described by Satoshi Nakamoto in 2008. He said at the time:
“A transaction will quickly propagate throughout the network, so if two versions of the same transaction were reported at close to the same time, the one with the head start would have a big advantage in reaching many more nodes first.
Nodes will only accept the first one they see, refusing the second one to arrive, so the earlier transaction would have many more nodes working on incorporating it into the next proof-of-work.
In effect, each node votes for its viewpoint of which transaction it saw first by including it in its proof-of-work effort.”
He later elaborated in 2010 to say: “The payment processor has connections with many nodes. When it gets a transaction, it blasts it out, and at the same time monitors the network for double-spends.
If it receives a double-spend on any of its many listening nodes, then it alerts that the transaction is bad. A double-spent transaction wouldn’t get very far without one of the listeners hearing it.”
This method allows for fairly safe instant transactions that do not need to wait for a confirmation if the value is say less than $50 or $100 in a commerce setting as a delay of merely one second in sending the double spend transaction significantly reduces its chances of being confirmed.
One can however successfully double spend such non-settled transactions by sending the second transaction directly to the miner. In such instances the merchant might not be aware that a double spend attempt is on-going, hence the suggested double spending relay.
“With this change merchants learn about the doublespend, and do so quickly. Without this change, the merchant will never realise a doublespend is happening,” Andrew Stone, lead dev of Bitcoin Unlimited, says.
He acknowledges the flip side however, stating that “the change also allows miners to choose either transaction, ignoring the [first seen] rule.”
Stone thus says this was merged only for testing purposes, to “gather better data on doublespend attempts.” They’re planning to implement double spend proofs where nodes do not relay the second transaction, but only proof of a double spend attempt.
That however would require some work and time to develop, but it sounds like such proofs would meet the concerns of both sides by addressing any tradeoffs.