3

Given the lack of replay protection when the SegWit2x fork splits off a different chain is there a safe mechanism to broadcast a tx so that it will only be accepted by the 1x or 2x chain nodes?

If the answer is no would an option be to run both a bitcoin-core and btc1 full node and send coins to myself on the btc1 node. Once that tx is accepted into the SegWit2x block and NOT the 1x block I'd have safely split my coins? If the tx got replayed onto the 1x chain I could try again, hopefully not too many times to avoid fees.

2 Answers 2

3

All transactions would be replayable on both chains even after one was confirmed in a block on one chain, because since both chains start with the same UTXO set, the transactions spending those UTXOs are valid on both chains. The only exception is coins mined on each chain after the fork, because those coins will not be valid on the other chain. So that is how you can split your coins, you would need to mix your coins in transactions which use coins mined after the fork, so they are only valid on one chain. In the case of such a split I assume there would be some sort of service launched by the miners on both chains to start mixing people's coins and splitting them

EDIT: Ledger have announced they'll offer a tool to do that, its likely others will too: https://twitter.com/LedgerHQ/status/921730827117096960

3
  • Understood. In that case even the big (non-mining) exchanges are going to have a problem in that they won't be able to split coins as they have done for BCH and BGold. For example one of the coinbase.com posts state that BTC customers will get an equal amount of B2X but if that happens and a customer spends their B2X the receiver could also nab their BTC?
    – sipsorcery
    Commented Nov 7, 2017 at 4:53
  • Withdrawals will most likely be disabled until that's all sorted :) Commented Nov 7, 2017 at 5:43
  • 1
    There is one other (but not very relevant) alternative: using transactions with more than 4M weight. Such a txn would be invalid in Bitcoin, but only nonstandard on 2X. Commented Nov 7, 2017 at 7:23
1

The high level design doc from chainspl.it outlines the 4 different mechanisms they will be using to create coins that are only valid on one of the forked chains. Details are in the doc but my quick summary is:

  • New coinbase coins. As @MeshCollider pointed out if a utxo gets included in a block with a coinbase coin it's only valid on the chain that generated the coinbase tx. Coinbase coins can only be spent after 100 additional blocks and there would need to be some synchronisation with a miner to get a specific utxo in the same block as a coinbase one,

  • nLockTime. If the chains diverge enough by block height then a tx can use the nlocktime to immediately spend on one chain and then transfer the coins to yourself on the other chain BEFORE the lock time is reached,

  • Massive transaction. As per @Pieter Wuille's comment on the accepted answer. Get a tx included on a block that exceeds the Segwit1x size limits. It seems likely that this would necessitate a very large tx and would result in a very high fee,

  • High/Low Fees. A big difference between the fees on the chains could mean a tx with a low fee only gets accepted on one chain. This approach would be very risky as a miner on the expensive chain could arbitrarily or maliciously include the tx on the high fee chain.

1
  • nLockTime idea is interesting, could potentially be usable here depending on how the hash power falls after the split, thanks! Commented Nov 7, 2017 at 22:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.