How to Accelerate Stuck Bitcoin Transaction
When you pay someone using Bitcoin, the transaction is pretty much irreversible. For example, when A uses his Bitcoin wallet to pay B with 0.1 Bitcoin, once sent, the transaction is broadcasted to the entire Bitcoin network for future confirmation.
In normal cases, the transaction fee added by the sender incentivizes Bitcoin miners to pick the the transaction and confirm it into Blockchain. However, if the fee is set too low, miners act reasonably and avoid picking up the low-fee transaction, thus the transaction may linger around unconfirmed for a long time. As a result, the receiver waits and waits and no confirmation of the fund is being received. The transaction is said to be stuck due to law fee.
There are ways to clear a stuck transaction:
In normal cases, the transaction fee added by the sender incentivizes Bitcoin miners to pick the the transaction and confirm it into Blockchain. However, if the fee is set too low, miners act reasonably and avoid picking up the low-fee transaction, thus the transaction may linger around unconfirmed for a long time. As a result, the receiver waits and waits and no confirmation of the fund is being received. The transaction is said to be stuck due to law fee.
There are ways to clear a stuck transaction:
Call abandontransaction
Call abandontransaction RPC [1]. It only works on transactions that are not yet included in a block and are not currently in the mempool.
For example, in Bitcoin Core, find and right click the transaction then select "Abandon transaction". If that option is greyed out, tell Bitcoin Core not to rebroadcast unconfirmed transactions automatically by restarting Bitcoin Core with the -walletbroadcast=0 option, and then hopefully you should be able to use "Abandon Transaction". Don't forget to turn walletbroadcast back to 1 (or remove it completely) after your old stuck transaction is resolved.
Call abandontransaction RPC [1]. It only works on transactions that are not yet included in a block and are not currently in the mempool.
For example, in Bitcoin Core, find and right click the transaction then select "Abandon transaction". If that option is greyed out, tell Bitcoin Core not to rebroadcast unconfirmed transactions automatically by restarting Bitcoin Core with the -walletbroadcast=0 option, and then hopefully you should be able to use "Abandon Transaction". Don't forget to turn walletbroadcast back to 1 (or remove it completely) after your old stuck transaction is resolved.
RBF (Replace By Fee, since v0.12)
"Replace By Fee" (RBF) - Using this approach, the sender may be able to initiate RBF to kind of double spend an unconfirmed transaction via a new transaction with the same outputs and inputs created. There are 3 different kinds of RBF - First-Seen-Safe (FSS) RBF, Full RBF, and Opt-in RBF.
For Opt-In RBF, the only difference between the older transaction and the new transaction is that the sender is able to include a higher fee as an incentive for miners to include such transaction in a block faster. As such, Opt-In RBF breaks the "first-seen" rule. RBF is currently live since v0.12, but it requires opt-in by the spender to make the transaction 'replaceable' when it is being sent.
For example, if you have Electrum wallet installed that supports Opt-In RBF, you can go to 'Tools' then select Electrum preferences, and change Propose Replace-By-Fee to Always so you can always have a chance to perform "Replace by Fee" If the fee was set to low and your transaction gets stuck.
"Replace By Fee" (RBF) - Using this approach, the sender may be able to initiate RBF to kind of double spend an unconfirmed transaction via a new transaction with the same outputs and inputs created. There are 3 different kinds of RBF - First-Seen-Safe (FSS) RBF, Full RBF, and Opt-in RBF.
For Opt-In RBF, the only difference between the older transaction and the new transaction is that the sender is able to include a higher fee as an incentive for miners to include such transaction in a block faster. As such, Opt-In RBF breaks the "first-seen" rule. RBF is currently live since v0.12, but it requires opt-in by the spender to make the transaction 'replaceable' when it is being sent.
For example, if you have Electrum wallet installed that supports Opt-In RBF, you can go to 'Tools' then select Electrum preferences, and change Propose Replace-By-Fee to Always so you can always have a chance to perform "Replace by Fee" If the fee was set to low and your transaction gets stuck.
Child Pays For Parent (CPFP, since v0.13)
Using this approach, the receiver of the transaction is the one who would initiate a subsequent transaction that spend the receiving address with a higher transaction fee. CPFP is not a change in the protocol, but a miner strategy. Any miner using version 0.13 or above will mine using CPFP rules.
Using this approach, the receiver of the transaction is the one who would initiate a subsequent transaction that spend the receiving address with a higher transaction fee. CPFP is not a change in the protocol, but a miner strategy. Any miner using version 0.13 or above will mine using CPFP rules.
Wait without Re-breadcasting, Remove Unconfirmed Transaction
Wait for the transactions to get dropped from the network and resend them again with proper (higher) fees. Wait at least about 72 hours before being dropped. But chances are, the wallet you are using will rebroadcast dropped transaction for about 14 days by default, and if your wallet never gives up and rebroadcast all the time, you'll need to set your wallet to stop broadcasting.
For example, Bitcoin Core rebroadcasts unconfirmed transactions automatically. If you don't like this default rebroadcast behavior, you need to set "walletbroadcast=0" either in the bitcoin.conf file or via command line argument. If you use this approach to clear a stuck transaction, don't forget to turn walletbroadcast back to 1 (or remove it completely) after your old stuck transaction is resolved.
Make sure your wallet does not rebroadcast and wait until the stuck transaction got dropped. Then you want to start Bitcoin core with -zapwallettxes option/parameter so all unconfirmed transactions will be removed from your wallet. It would remove all pending transactions that are not included in the blockchain. But before running it, just in case, please make sure you backup your wallet.dat file. This will take some time as it will initiate a blockchain rescan, so be prepared to wait until the process finishes and do not forget to remove the extra parameter the next time you run your wallet as it is not needed anymore.
Wait for the transactions to get dropped from the network and resend them again with proper (higher) fees. Wait at least about 72 hours before being dropped. But chances are, the wallet you are using will rebroadcast dropped transaction for about 14 days by default, and if your wallet never gives up and rebroadcast all the time, you'll need to set your wallet to stop broadcasting.
For example, Bitcoin Core rebroadcasts unconfirmed transactions automatically. If you don't like this default rebroadcast behavior, you need to set "walletbroadcast=0" either in the bitcoin.conf file or via command line argument. If you use this approach to clear a stuck transaction, don't forget to turn walletbroadcast back to 1 (or remove it completely) after your old stuck transaction is resolved.
Make sure your wallet does not rebroadcast and wait until the stuck transaction got dropped. Then you want to start Bitcoin core with -zapwallettxes option/parameter so all unconfirmed transactions will be removed from your wallet. It would remove all pending transactions that are not included in the blockchain. But before running it, just in case, please make sure you backup your wallet.dat file. This will take some time as it will initiate a blockchain rescan, so be prepared to wait until the process finishes and do not forget to remove the extra parameter the next time you run your wallet as it is not needed anymore.
Pay Some Mining Pool Directly
If your stuck transaction is worth being accelerate, you may pay a pool/miner to explicitly include the stuck transaction into a block.
For example, ViaBTC pool has a Transaction Accelerator tool that you can use it for free. You can submit any TXID of delayed transactions that at least included a fee of 10 Satoshi/B (0.0001BTC/KB). You can also opt for paying some fee to include your stuck transaction into the next block they mine. Other bitcoin acceleration service offered by btc.com can increase the probability of confirming transaction within 1 hour to 75% if you're willing to pay fee.
If your stuck transaction is worth being accelerate, you may pay a pool/miner to explicitly include the stuck transaction into a block.
For example, ViaBTC pool has a Transaction Accelerator tool that you can use it for free. You can submit any TXID of delayed transactions that at least included a fee of 10 Satoshi/B (0.0001BTC/KB). You can also opt for paying some fee to include your stuck transaction into the next block they mine. Other bitcoin acceleration service offered by btc.com can increase the probability of confirming transaction within 1 hour to 75% if you're willing to pay fee.
References
- https://chainquery.com/bitcoin-api/abandontransaction
- https://bitcointalk.org/index.php?topic=1961518.0
- http://cryptomining-blog.com/7982-how-to-cancel-unconfirmed-bitcoin-transactions/
- https://bitcoin.stackexchange.com/questions/49723/replace-by-fee-vs-child-pays-for-parent
- https://bitcoin.stackexchange.com/questions/38320/can-someone-outline-the-full-pros-cons-of-the-various-replace-by-fee-proposals
- https://coinspace.zendesk.com/hc/en-us/articles/115004030308-Stuck-Transactions