How to double spend bitcoin using electrum — No technical sorcery required!

The below post has simple instructions on doing a bitcoin double spend. It doesn’t require you to manually construct transactions or use…

How to double spend bitcoin using electrum — No technical sorcery required!

The below post has simple instructions on doing a bitcoin double spend. It doesn’t require you to manually construct transactions or use fancy Linux tools. Here is what you need:

  • An Electrum Wallet (Version 3.0 +)
  • A gullible merchant/website who accepts zero confirmation payments

Step 1

Create an electrum wallet and send funds to it. Let us call this as Wallet 1. Make sure Use Replace-By-Free is enabled in Tools > Preferences. Also have Edit fees Manually option enabled

Step 2

Create a new electrum wallet (let us call this as Wallet 2). Send complete balance of Wallet 1 to Wallet 2 with a very low fee

Sending complete wallet balance with a very low fee

Try the lowest fee possible starting from 0.6 upto 1 sat/byte. In some cases electrum will not allow you to broadcast a very low fee payment. Increase the fee little bit and try again. 1 sat/byte always works. Send the payment - let us call the resulting bitcoin transaction as FundingTx

Step 3

Open Wallet 2 and send the payment to the gullible merchant from this wallet. You can leave the fee to default whatever electrum is suggesting as the fee doesn’t matter in this step. Lets us call this tx as SpendingTx

Receive the goods from the merchant in lieu of this unconfirmed payment

Step 4

Open Wallet 1 and increase the fee of the FundingTx. You can right click on the transaction in History tab to get an option to increase fee. Set the new fee to anything greater than 5 sat/byte that will eventually get confirmed.

Now open Wallet 2 and Volia! SpendingTx has disappeared !

You have now successfully double spend. Enjoy goodies from merchant! Feel free to send all funds from Wallet2 back to Wallet 1 or any other address of yours


How does this work ?

Now lets us get into some technical details on how this works.

SpendingTx become invalid as its unconifrmed TxInput are no longer valid

This method uses RBF feature in electrum that lets you modify and re-issue an unconfirmed bitcoin transaction by increasing its fee

  • The FundingTx uses the complete wallet balance. This makes sure the SpendingTx selects unconfirmed tx inputs
  • FundingTx is of very low fee so that it never confirms
  • An RBF on FundingTx makes its existing txouts stale and thus SpendingTX becomes invalid and is dropped by the bitcoin network

There are well known online tools/guides for double spending that rely on manually constructing transactions [1] [2]. We have outlined a simple way to double spend using electrum wallet. Merchant accepting bitcoin must always make sure they wait for enough confirmations before confirming the purchase.