What is a "Stuck" transaction? How are they caused?
A "stuck" transaction is a transaction which has remained unconfirmed for period of time which either the receiver or the sender is uncomfortable with. Stuck transactions can be annoying as it means that recipients often consider the senders to not have paid yet, or the recipient needs the money as soon as possible.
Stuck transactions are typically caused by low transaction fee rates. However other things can cause stuck transactions such as spending from an unconfirmed transaction, having dust outputs in the transaction, or being a double spend of another transaction. If a transaction has a double spending transaction and the double spend confirms, then the transaction will be "stuck" forever as it can never confirm.
What can I do to make my stuck transaction confirm?
There are a few options for confirming stuck transactions.
For both the recipient and the sender of the transaction, you can:
- Wait for the transaction to confirm
- Wait for the network to "forget" about the transaction
- Ask a miner to confirm it for you
For the sender of a transaction, you can also:
- Attempt an Replace-By-Fee double spend transaction
- If you have a change output, you can attempt a Child-Pays-For-Parent transaction
For the recipient of a transaction, you can also:
- Attempt a Child-Pays-For-Parent transaction
Waiting for a confirmation
If you are incapable of performing any of the other options are are too afraid to do so, you can simply wait and hope that the transaction will eventually confirm. To make sure that network is constantly being reminded of the transaction, you can rebroadcast the transaction periodically. Most wallets will rebroadcast automatically, so simply leaving your wallet open will allow rebroadcasting to happen.
Waiting for the network to "forget" about the transaction
If a transaction remains unconfirmed for too long, it can be eventually "forgotten" by most nodes on the Bitcoin network if no one rebroadcasts the transaction. This happens due to node restarts, mempool expiry times, or mempool eviction because the minimum relay fee has increased. This process typically takes a few days (usually 3). Once a transaction has been "forgotten", you may not see it in your wallet and you probably will not see the transaction in most block explorers. Once the transaction has been "forgotten", you can simply send the Bitcoin again but include a higher transaction fee. If you still see the transaction in your wallet, you will need to follow the instructions in the next Replace-By-Fee Section.
Note that some wallets will continuously rebroadcast the transaction while the wallet is on, so you either have to remove the transaction from the wallet using the instructions in the RBF section, or shut down the wallet and keep it off for several days.
Ask a miner for help
Some mining pools and miners offer services to allow you to prioritize your transaction in their mempool so that it is chosen sooner for inclusion in a block. You can contact the users Quickseller and macbook-air. These two users have access to F2Pool's transaction selector and they can help you with confirming your stuck transaction. You can also try using https://www.viabtc.com/tools/txaccelerator/ to "accelerate" your transaction. Note that ViaBTC does have a limit the accelerator to 100 transactions every hour and requires that it pays a minimum fee rate of 10 satoshis/byte, so their accelerator may not necessarily work.
Also note that if you attempt an Replace-By-Fee transaction, both the original transaction and the RBF transaction will be considered double spends and miners will likely not help with any transactions marked as double spends.
Attempting a Replace-By-Fee (RBF) double spend transaction
What is an RBF transaction
A Replace-By-Fee transaction is a transaction that is nearly identical to your stuck transaction but pays a higher transaction fee. Since the original transaction most likely does not use Opt-in RBF, the RBF transaction that we will be creating will be considered a double spend and marked as such. The transaction uses Full-RBF and thus may still take a little bit longer to confirm as it is technically a double spend.
The difference between the types of RBF transactions
Replace-By-Fee transactions have 3 different types, First-Seen-Safe(FSS) RBF, Full RBF, and Opt-in RBF. FSS RBF requires that the RBF transaction include the same outputs as the transaction it replaces and consumes the same inputs. Full RBF means that the transaction is simply a double spend of another transaction but pays a higher transaction fee than the one(s) it replaces. Opt-in RBF means that the RBF transaction can only replace a transaction that has Opted-in to allowing itself to be replaced. Opt-in RBF follows [urlhttps://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki]BIP 125[/url].
The instructions given in this section will be for making Full RBF transactions. Opt-in RBF transactions will be described in the "Avoiding Stuck Transactions In The Future" section.
How to make a Full RBF transaction
Making a Full RBF transaction depends entirely on the wallet that you are using. Some wallet support the advanced functionality required to make a Full RBF transaction, others do not. The following will be guides for each wallet on how to make a Full RBF transaction with that wallet. In general the procedure is to remove the unconfirmed transaction from the wallet and then resend the Bitcoin but with a higher transaction fee.
When making a Full RBF transaction, the transaction should include the recommended fee rate at the time of creating the transaction. See the "Avoiding this issue in the future" section for help with that.
Bitcoin Core makes making Full RBF transactions very easy. Simply go to the transactions list, right click the transaction that is stuck, and choose the "Abandon Transaction" option.
If that option is greyed out, then you must restart Bitcoin Core with the -walletbroadcast=0 option and then you should be able to use "Abandon Transaction".
If the above two options fail for some reason, then you can start Bitcoin Core with the -zapwallettxes option to clear all unconfirmed transactions from your wallet.
Once the transaction is either Abandoned or cleared from the wallet, you can simply go to the Send tab and send the Bitcoin again but make sure that you include a sufficient transaction fee.
Bitcoin Armory also makes making Full RBF transactions very easy. Go to Help > Clear All Unconfirmed Transactions and restart Armory. This will clear all of the unconfirmed transactions from the wallet and thus allow you to create the Full RBF transaction. Once Armory has restarted, simply send the Bitcoin again as you normally would but be sure to include a sufficient transaction fee.
MultiBit HD allows for making Full RBF transactions fairly easy as well. Go to Manage Wallet and click on Repair Wallet and follow the wizard. This process will clear all of the unconfirmed transactions from your wallet much like Bitcoin Core and Armory do. Once repair wallet has completed, simply send the Bitcoin again as you normally would.
Wallets that do not allow you to or ones that I don't know how to make Full RBF transactions
Not all wallets support the creation of Full RBF transactions. Many wallets do not allow clearing all unconfirmed transactions to allow for making Full RBF transactions. The following is a list of wallet software which do not support Full RBF transactions. If a wallet on this list does support FullRBF transactions, please let me know and provide instructions for that so I can add it above.
- Blockchain.info and web wallets in general
- Electrum (supports Opt-in RBF, but not Full RBF)
- MultiBit Classic
- Bitcoin Wallet for Android
Attempting a Child-Pays-For-Parent transaction
What is a Child-Pays-For-Parent transaction?
A Child-Pays-For-Parent (CPFP) transaction is exactly as the name implies, a child transaction spends from an unconfirmed parent transaction and includes a transaction fee which covers both the fee of the child and the parent. However creating CPFP transactions are much more difficult as it requires spending from an unconfirmed transaction, something that most wallets do not allow.
How can I avoid making Stuck transactions in the future?
Using Dynamic Fees
The best way to avoid having stuck transactions is to make sure that you are not spending from an unconfirmed transaction, and include a sufficient transaction fee. If your wallet supports dynamic transaction fees, you should use those. If you want very fast confirmations, set the dynamic fees to choose the fastest fee possible. Dynamic fees are calculated by the wallet by analyzing the current state of the network and determining an optimal transaction fee from there. Because the state of the network constantly changes, the optimal transaction fee calculated one day may not necessarily be the best fee for the next day.
If your wallet does not support dynamic fees but does support setting a custom transaction fee rate for each transaction, you can look up the optimal fee rate on sites like http://bitcoinfees.21.co/ and https://bitcoinfees.github.io/ and set the fee rate for each transaction based on those sites. You must do this for each transaction you make otherwise you may end up paying a sub-optimal fee.
If your wallet does not support any sort of fee rate or does not allow setting custom transaction fees, you should upgrade to a new wallet. Using a fixed fee or fixed fee rate is no longer a good idea as the network constantly changes. You can use this formula: <in>*148 + <out>*34 + 10 where <in> is the number of inputs and <out> is the number of outputs to estimate the size of your transaction and determine the optimal fee for it.
Note that some wallets (e.g. blockchain.info), even though they use dynamic fees, set an upper limit to the transaction fee. If you notice that your transactions are constantly being stuck even though you are using dynamic fees, you should check the settings of your wallet and perhaps even switch to a new wallet which has no limit to the transaction fee.
Use Opt-In RBF
Opt-In RBF is a feature that allows for an RBF transaction to be more easily created as these transactions will not be rejected by nodes supporting Opt-In RBF.
Currently few wallets support creating Opt-In RBF transactions
Electrum is, as far as I know, the only wallet that supports the creation of Opt-In RBF transactions and their replacements.
To create a transaction that can be replaceable, go to Tools > Preferences and check the box "Enable Replace-By-Fee". Then when you want to send some Bitcoin, next to the Fee slider is a box labeled "Replaceable". Check that box so that while the transaction is still unconfirmed you can replace the transaction with one that pays a higher fee.
To increase the fee of a transaction that uses Opt-In RBF, right click the transaction in the history list and choose the "Increase Fee" option.
Please ask questions https://bitcointalk.org/index.php?topic=1802212.0