Stuck transaction? How to fix this dreaded problem using the power of bitcoin

Eric Allam
Bitcoin Tech Talk
Published in
6 min readDec 21, 2017

I have some of my bitcoin in Bread wallet and use it for sending bitcoin for everyday transactions. When sending a transaction, Bread gives you two options for selecting the network fee, Regular and Economy. This wasn’t an urgent transaction, so I selected Economy. Bread tries to make it clear that selecting this option could lead to slow confirmation times:

One problem with this presentation is Bread only displays the total transaction fee (in the above case, .00115375 BTC), but gives no indication of the transaction size in bytes. When miners decide on which transactions to include in their blocks, they select transactions with the highest BTC per byte. If you look at popular fee estimator services like estimatefee.com and bitcoinfees.earn.com, fees are measured in satoshi per byte (or sat/B for short). So there is no way to know what the actual fee rate of this transaction is because Bread does not display the transaction size, which can fluctuate based on how many inputs are needed to fulfill the transaction amount.

Foolishly, I trusted Bread to estimate their fee rate correctly and the result was this transaction, with a fee of just 10.07 sat/B. The mempool was fairly empty last weekend but even so, that fee level was never going to be enough to get into the blockchain. As you can see from Johoe’s Mempool Stats site, transactions with 10 sat/B were buried underneath a mountain of higher transaction fees:

As you can see, there were almost 100k transactions ahead of mine in line

After a few days I started working my way through the advice given in this stuck transaction thread on bitcoin.stackexchange.com. I didn’t have any luck with ViaBTC’s transaction accelerator, which seemed like the easiest solution.

Bread does not support Replace by Fee or Child Pays For Parent transactions, but since it implements bitcoin standards like BIP 39, which defines how to use a sequence of words to generate a deterministic wallet, and BIP 32 which defines an interoperable standard for deterministic wallets, I knew I could import my Bread wallet into a wallet that does support either RBF or CPFP.

Note: Be careful when importing your wallet seed phrase to another wallet. This could be opening yourself up to losing bitcoin if your other computer is compromised. Also be aware that transactions made with the new wallet may not show in the original wallet because the new wallet may generate addresses that are incompatible with your original wallet. I only felt comfortable doing this because I don’t hold that much BTC in my Bread wallet

The following are the steps I took using the Electrum wallet on my Mac to import my Bread wallet and unstick my transaction using CPFP.

First, I created a new Electrum wallet using the “New/Restore” option:

Next, I gave it a helpful name so I would know this wallet was my Bread import:

Next, I chose a standard wallet

And selected the “I already have a seed” option for the Keystore:

Electrum now prompted for my seed phrase. When you first create a Bread wallet, it will generate a 12 word phrase (where order matters) and you are meant to write this down and keep it somewhere safe (or memorize it). The reason the Bread 12 word seed phrase can be used in Electrum is the previously mentioned BIP 39 standard.

Before hitting next, I selected the “Options” button and ticked the BIP39 seed checkbox:

Once that was done, Electrum wanted to know the wallet derivation path. After some googling, I found this helpful reddit post that revealed that Bread uses “m/0'” as it’s base path, so I entered that into the field like so:

Finally, I had to choose a password to encrypt the wallet file (or I simply could have left the password blank and just stored the wallet file unencrypted on disk)

After hitting next, it took just a few seconds for my Bread wallet transactions to come up and lo and behold, there was my stuck transaction. To bring up the Child Pays for Parent option, I command-clicked (or if you’re on Windows, right click) on the transaction:

I didn’t take screenshots when I actually had a stuck transaction. So to be able to create this article I had to create another stuck transaction and go through the whole process again. It cost about £50 in fees 😱

Electrum then displays a helpful dialogue and a slider for choosing a fee for the new transaction that should be able to trigger the stuck transaction to get confirmed:

After selecting Okay, Electrum presents the new transaction to sign and broadcast to the blockchain:

With a fee of 1342 sat/B, this transaction PLUS the previously stuck transaction should have no problem getting into the blockchain.

After signing the transaction, you’ll get a transaction ID where it previously had Unknown:

After broadcasting the transaction, Electrum now displayed the original stuck transaction and the new unconfirmed parent transaction:

After just a half-hour or so, both transactions were included in the blockchain and properly confirmed (with 3–4 blocks) after about an hour. Thus concluded my stuck transaction journey.

I think it’d be helpful to look deeper into these transactions to see why Child Pays for Parent works.

If you’ll remember, the original transaction (e4167e5b…966) was 665 bytes and included a fee of 6,700 satoshi (or 0.000067 BTC), which comes out to ~10.07 sat/B. One of its outputs was 0.08600463 BTC to a change address 1H68TM…mbL.

The CPFP transaction (aea742f9…550) was 192 bytes and included a fee of 116,025 satoshi, or ~605 sat/B. This transaction had one input, from the previous transaction, of 0.08600463 BTC to address 1H68TM…mbL.

Because the input to the second transaction is the output of the first transaction, the second transaction can only be valid if the first transaction is in the blockchain. So for a miner to receive the reward from the second transaction, they must also mine the first transaction at the same time. If you look at both transactions, you can see that they were both mined in block #499972.

So the miner will look at both transactions and work out the total fee rate. If you add up their sizes (665B + 192B = 857B) and their fees (6,700 sat + 116,025 sat = 122,725 sat), then the total fee rate ended up being 143.2 sat/B, which was enough to get included in a block.

Hopefully this will help out anyone else who finds themselves in a similar situation, and gives them some tools and knowledge for how to deal with stuck transactions.

If you’d like to stay up to date on bitcoin news and development, please consider subscribing to my weekly newsletter Signal Chain. Published every Wednesday, I only cover a few of the most important topics of the week. You can also support more articles like this one by donating here: 1EricAJVBZXNcEBLP8xwzePitGT5CBz4bV

--

--

Eric Allam
Bitcoin Tech Talk

Founder at Trigger.dev, the open source background job framework. Creator of jsonhero.io.