The goal is to spend forked coins on eCash without exposing the corresponding BTC coins to replay risk, and without importing the valuable private key into the eCash splitting software.
The method is to construct an eCash transaction that spends both:
- the valuable pre-fork UTXO, which exists on both Bitcoin and eCash; and
- a small “dust” UTXO that exists only on the eCash chain.
The valuable input is signed with SIGHASH_ALL, so its signature commits to the full transaction, including the eCash-only dust input. Because that dust input does not exist as a valid spendable UTXO on Bitcoin, the transaction cannot be replayed on Bitcoin.
The dust input must be unique at the UTXO/outpoint level. It is not enough that it is small, or sent to a new address. The exact txid:vout must be spendable on eCash and invalid, absent, or already spent on Bitcoin.
There are several ways to obtain such an input:
- Use the official eCash splitting software, but only with a throwaway key holding negligible funds.
- Use any coin descended from a coinbase transaction mined after the fork.
- Buy or receive an already-split eCash coin from someone else or from a market.
The important point is that this coin must have transaction history that cannot exist validly on Bitcoin.
-
Obtain a small eCash-only dust UTXO by one of the methods above.
-
Create a transaction or PSBT spending both:
- the valuable forked UTXO;
- the eCash-only dust UTXO.
-
Set the outputs to your desired eCash destination and change address.
-
Sign the valuable input offline or in your normal Bitcoin wallet setup.
-
Use
SIGHASH_ALL, and do not useSIGHASH_ANYONECANPAY. -
Sign the dust input with the key controlling the eCash-only dust coin.
-
Broadcast the transaction only on the eCash network.
A replayed transaction must be valid on Bitcoin. But this transaction includes an input that only exists on eCash. Bitcoin nodes will reject the transaction because one of its inputs is not a valid spendable Bitcoin UTXO.
Since the valuable input was signed with SIGHASH_ALL, an attacker cannot simply remove the eCash-only dust input and reuse the same signature on Bitcoin. Removing or changing the dust input would invalidate the signature.
Thus, the eCash spend is valid only on eCash, and the corresponding BTC remains safely unspent.
The valuable private key never needs to be imported into the eCash splitting tool. Only a disposable key may need to touch that software to generate the chain-unique dust input.
Before broadcasting, verify:
- the dust input is truly eCash-only;
- the valuable input and outputs are correct;
- no
ANYONECANPAYflag is used; - the transaction includes the dust input in the final signed form;
- the transaction is broadcast only to eCash nodes.
In short: "poison" the eCash transaction with an eCash-only input, then bind the valuable input to that poison input using SIGHASH_ALL.
Note that, in 6 JUN 2026, I reported that the replay protection in Forknet commit f132e5a (based on UnserializeTransaction) is broken and splitting risks losing your bitcoins. It doesn't seem to be patched yet (see https://github.com/drivechain-forknet/drivechain-forknet).
Until they implement another replay protection method, this chain-unique dust splitting method is the only one that works.