Learn about Bitcoin

Fixing Bitcoin transaction problems using RBF

SatoshiLabs
Trezor Blog
Published in
7 min readFeb 24, 2021

--

Networks like Bitcoin follow a set of rules and processes, including ways to deal with problems. There are a few mechanisms in place which, intentionally or not, can result in funds being stuck as pending or not appearing altogether, which can be worrying at first. Fear not, however — most of the time it can be fixed quite easily.

If you have had an issue sending Bitcoin or you seem to have lost your cryptocurrency in a transaction, it may be the case that one of these common problems has been encountered. Using Trezor Suite with your hardware wallet, it is now much easier to increase the fee for a transaction, even if it has already been sent, so you can pay a reasonable price even when the network is busy.

How transactions are confirmed

When a cryptocurrency transaction is sent, funds are only moved from address A to address B once it has gone through a series of checks, sat in the mempool, then been added to a newly-mined block. Each following block which verifies the transaction is one confirmation. This approach maintains a robust network and distributes authority across all nodes (i.e. computers on the network) and encourages them to act truthfully.

When sending Bitcoin, the node your wallet is connected to broadcasts a message with details of the payment to any other computer on the network that is listening. A node that receives the message can check the sender has enough money for the transaction. After a few nodes verify and share details of the transaction, it is eventually added to the blockchain by a miner into a newly-mined block.

This process may seem complicated but it is necessary to make sure that no one entity has more power to decide what transactions the network accepts. Instead, priority is usually given to whoever pays the most.

There are drawbacks to this, since high network usage can inflate fees as senders bid ever-higher amounts to be included in the next block, causing some of the nodes that are exceeding their memory capacity to drop low-fee transactions.

Since some nodes have more memory than others, there’s always a chance that a transaction is pushed out in favor of another one during busy periods, especially if the other has a higher fee assigned to it.

When mempools overflow

Every node that synchronizes a copy of the blockchain software takes part in confirming transactions. Each has its own limited memory that stores a copy of the Bitcoin mempool, which transactions flow into. Theoretically, they are able to track every transaction, but most are only able track smaller subsets of the transactions currently in motion, causing problems during busy periods.

A transaction must be added to the mempool to be processed. If there are many transactions at once, node memory limits may be exceeded, and they will start dropping transactions that they don’t have room for. To a user, the transaction may appear to be stuck waiting for confirmation, but if it isn’t in a mempool, it will never get confirmed. You can tell that it has been dropped from the mempool if the transaction ID stops showing results in a blockchain explorer.

Fixing a stuck or pending transaction

A transaction that’s stuck as pending will either confirm or it won’t, so the best option for a transaction that is showing up on block explorers is always to simply wait it out. If your transaction appears to be lost, don’t panic. It is probably just no longer in the mempool because the fees were set too low. If it is not showing or you’re in a rush, here’s how to fix it.

To get a stuck transaction working again, there are two options:

If your transaction can wait, check the current average confirmation time, to see if it’s currently exceptionally busy and likely to go down in the next few hours. Wait until activity has lessened and see if your transaction finally confirms.

If the network is consistently busy and you set a very low fee such as 1 satoshi per byte, you should double-check the average price of transactions currently in the mempool. If it is much higher than what you have set, your low-fee transaction could be ignored and ultimately forgotten. To fix this, bump the fee using Trezor Suite’s built-in RBF feature. Read more about RBF and how it works in the next section.

For urgent transactions, always set a fair transaction fee. Looking at a chart of average fees in USD, you should be able to set a fee higher than the average to achieve quicker confirmations. Using Trezor Suite, you can simply choose a fee based on the suggestions shown in your send module, and have your transaction confirmed in as little as ten minutes. For lower fees, it is best to send from a Bech32 (Native SegWit) address, which uses less data to send a transaction and therefore reduces the overall cost.

How to bump your fee or finalize a Bitcoin transaction

There are a number of ways to help a transaction to confirm. Beware though, simply sending another transaction for the same amount might end up with two transactions going through. For that reason, an improvement was created for Bitcoin called replace by fee (RBF). A transaction that has RBF-enabled lets the sender increase the fee after it is sent, while it is waiting in the mempool.

Bump transaction fees with RBF

Trezor Suite enables RBF by default. This lets you rebroadcast identical transactions with a higher fee if the original gets stuck, so you can try to send a transaction for a very low fee and later bump it up by a few satoshi at a time until it confirms.

As shown on the left, this transaction has RBF enabled so the fee can be increased later.

To bump a fee, simply open the transaction details, click on bump fee and set a new fee. The replacement fee must be higher than the previous one. Once broadcast, it will take the place of the previous transaction in the mempool.

Setting a new fee of 6 satoshis per byte.

For example, if your first transaction’s fee was set at 1 satoshi per byte, the replacement must be 2 or more, or the original transaction would be kept in the mempool instead and the replacement ignored.

You can replace transactions as many times as you like. If you keep an eye on the network and are patient, you can keep your transaction costs relatively cheap. If you feel that the fee is adequate but it’s not confirming, you might need to finalize it.

Click on a pending transaction to bump its fee or finalize it.

What it means to Finalize a transaction

Because some merchants accept high-frequency Bitcoin deposits without needing them to fully confirm, RBF can be problematic. Since the transaction is flagged as replaceable, they might not want to accept it until it is included in a block. If the transaction is stuck and you suspect it is because the recipient doesn’t accept RBF-enabled transactions that haven’t been fully confirmed, you can Finalize the transaction.

Check estimated confirmation times on suggested fees and choose one that’s convenient.

When you finalize an RBF transaction, a non-RBF transaction is sent as the replacement. You will no longer be able to increase the fees for the transaction but merchants who accept unconfirmed transactions will accept the transaction.

RBF has been disabled and the transaction is final.

Making it easier to use cryptocurrencies

With any new technology, the early years are spent refining things and making it less easy to break. This is especially important for Bitcoin to make it as a currency, and because it has been used to store real world value there have been losses along the way. All across the industry, companies like SatoshiLabs are building hardware and software solutions that protect users from these issues.

Now, you can use a wallet that will recognize a wrong address and that will let you bump transaction fees easily. Without needing to give up any identifying information, you can manage your whole portfolio securely and independently, and easily turn on open-source tools such as the Tor network to reclaim your privacy. There’s never been a safer or easier time to start using Bitcoin.

--

--

Innovating since we founded the industry in 2013 with production of the first crypto hardware wallet, the Trezor One. Open-source, secure, community-driven.