What's the deal with unconfirmed transactions taking forever to drop?

14 replies 500 views
alpha100Full Member
Posts: 102 · Reputation: 448
#1Jul 31, 2019, 08:52 AM
Today was the first time in my 8 years of using bitcoin that a transaction I sent from my hardware wallet is still hanging as pending and unconfirmed for more than an hour, actually almost three. I typically check mempool.space and set a high enough fee to dodge this type of issue, but I totally spaced on it this time. The problem is, the default fee in wallet apps can be way off, usually much lower than what it should really be. So, I ended up going with whatever fee the app suggested, which is an easy mistake to make. I only had a small amount of bitcoin in that wallet, so I just sent it all to Kraken. But here’s the kicker: if you send everything from your wallet, you can’t use the RBF (replace-by-fee) feature, nor can you cancel it if it’s stuck for too long. Why’s that? RBF uses the change UTXO sent back to your wallet to pay for the higher fee replacement, so if there’s no change left, you’ve got nothing to fund the RBF. That makes me curious too; why can’t the extra fee come from the pending UTXO (the main amount that’s being sent)? Seems logical, but I guess there’s a technical reason for it being this way. I also wonder why bitcoin can’t just be set up to automatically cancel unconfirmed transactions after a reasonable amount of time? That seems like it should be straightforward for the devs to implement. From what I understand, it’s not rare for bitcoin transactions to get stuck for ages, sometimes even days, before being dropped or cancelled by the network and the pending funds sent back to the sender.
5 Reply Quote Share
pixel2014Hero Member
Posts: 857 · Reputation: 4132
#2Jul 31, 2019, 09:32 AM
This is not true, you can use part of the coins that you sent for the replace-by-fee which solves the problem. I have sent coins like this to exchanges before and the exchanges still credited me even when I used RBF. Although, not advisable if you are sending to a custodial platform, but the exchanges know that the coins are coming from you.
7 Reply Quote Share
alpha100Full Member
Posts: 102 · Reputation: 448
#3Jul 31, 2019, 12:04 PM
Another improvement could be to prompt or remind the sender with a pop-up notice if the TX fee is too low and recommend it to be raised before finalizing the TX. That way you don't have to worry about forgetting to adjust the fee and avoid the hassle of trying to correct it after the fact. But it's not letting me do that even though Blockchain Explorer says RBF is turned on.
3 Reply Quote Share
pixel2014Hero Member
Posts: 857 · Reputation: 4132
#4Jul 31, 2019, 12:13 PM
That is the problem with the hardware wallet that you are using and not how bitcoin wallets are desiged to use RBF. On Electrum, you can set it to decrease payment or preserve payment. Preserve payment will be chosen if you do not want part of your coin in the transaction to be used to increase the fee Decrease payment will be chosen if you want part of your coin in the transaction to be used for the RBF. If you can connect the wallet with Electrum, it will be better so that you can make use of the feature.
3 Reply Quote Share
alpha100Full Member
Posts: 102 · Reputation: 448
#5Jul 31, 2019, 01:23 PM
If that is true then RBF probably would have worked better for me using the Sparrow wallet app instead of Trezor suite. But I normally use Sparrow only for sending larger amounts and Trezor suite for smaller amounts.
1 Reply Quote Share
L0neDegenSenior Member
Posts: 331 · Reputation: 1464
#6Jul 31, 2019, 02:55 PM
Because many bitcoiners know about patience and it's not uncommon one sends a tx he doesn't care if it will be confirmed in one hour or 10 days. You have unrealistic request imho. Banks usually return double payments or card payments not redeemed by the shops in about 30 days. Plus, if you cannot - for some reason - do RBF, ask the recipient to do CPFP if he's in a hurry.
4 Reply Quote Share
sam.bullSenior Member
Posts: 390 · Reputation: 1323
#7Jul 31, 2019, 06:50 PM
You sound like someone that haven't had a transfer issue with a Bank. Maybe it's my country but One of my biggest fear, not that it is stressful and eats your time It takes long before they are rectified. Electrum warns if network are below a certain threshold. I sometimes check mempool for fee before making any transactions.
3 Reply Quote Share
alpha100Full Member
Posts: 102 · Reputation: 448
#8Aug 1, 2019, 12:09 AM
As I mentioned an ACH bank transfer takes 4-5 business days at most. Bitcoin is normally a lot faster than that with settlement speed less than an hour or so on average. Unless there is network congestion or you forgot to pay a high enough fee which is a common problem, then the wait could be much longer than a bank ACH or wire transfer. That is painfully slow, and unacceptable for many, especially when you have lightning-fast competitors like solana, arbitrum, polygon, etc. that settle within 5 minutes or less. I don't think bitcoin has to be that fast to compete, but a settlement of many hours or days is just not acceptable. Lightning was supposed to be a fix but the problem is most major exchanges still don't support lightning TXs. And lightning can be difficult and technical to use. I thought CPFP requires you to have change in your wallet. So if you sent the full amount there is nothing to draw the fee from. But that could depend on the wallet being used similar to RBF, as someone mentioned.
4 Reply Quote Share
gr3g.0rbitHero Member
Posts: 1025 · Reputation: 2646
#9Aug 1, 2019, 06:27 AM
Bitcoin is capable of doing that, RBF doesn't restrict the replacement transaction from changing any of output, amount or entirely. Refer to these rules to check its limitations: BIP-0125 - Implementation Details On a side note: last rule is talking about a complication for when an unconfirmed transaction with unconfirmed children got dropped or replaced. Next to CPFP: You are correct in this one. Child-pays-for-parent is simply another transaction that spends an unconfirmed transaction's output set with a high transaction fee. Without another output (change) that you can spend, only the recipient can do CPFP to it. The goal is to make its txfee high enough that the miners couldn't resist including it to their block. However, since its parent transaction is unconfirmed and it can't be confirmed without it, they'll have to include both transactions.
2 Reply Quote Share
L0neDegenSenior Member
Posts: 331 · Reputation: 1464
#10Aug 1, 2019, 09:54 AM
You thought correctly, just you didn't pay attention to what I wrote. While in your situation you indeed cannot do CPFP, you can ask the recipient do so, if he's in a hurry. Of course, this works when the recipient is a person you can talk with. Interestingly it happened to me only 1-2 times in more than 10 years to underpay a tx when I was in a hurry. It was more often I underpaid knowingly that I'll have to wait for longer. Well, they have LN for that. Of course, they have to fill their LN bucket, which means planning. Plus, I am under the impression that most people expecting such fast settlements do rather small value payments/transfers. It's known that bitcoin is not that good equipped for that and the current solution for that is LN. I agree with the fact that it's a problem that most businesses don't accept yet LN. I disagree that it's difficult to use, although I understand you, I faced a similar "barrier" until I actually started using it. Now let's use your kind of words. Comparing bitcoin to an system that works only inside a county is unacceptable and void. Comparing bitcoin to the fastest local settlement is unacceptable and void. Comparing bitcoin to something that is not trustless is unacceptable and void. You are insisting with the "not acceptable" wording. That's too harsh imho and those who cannot accept the reality can turn to other networks, it's a free world. On the same topic, while I do agree that improvements can be done here and there, dropping any transaction so fast is not a viable option, since, as I mentioned, people may underpay on purpose. If I try to think in a constructive manner, maybe in the future a setting/flag could be set up to mark transactions as "confirm in in x blocks or drop it". I don't know how difficult would that be (more technical people will tell if it's a viable option), but it could end up as an under-used feature, with people still make mistakes and complain. Plus, you probably know that "x blocks" is not the best time-wise estimation (but you won't get any better).
4 Reply Quote Share
pixel2014Hero Member
Posts: 857 · Reputation: 4132
#11Aug 1, 2019, 11:34 AM
He sent the coin to an exchange, Kraken. I think he is the owner of the exchange account but you know that CPFP can not be done on the exchange. I posted this because he included this in the OP:
1 Reply Quote Share
L0neDegenSenior Member
Posts: 331 · Reputation: 1464
#12Aug 1, 2019, 04:12 PM
I did miss that at start, but I was writing for generic cases, not his specific situation. And meanwhile (after seen that it's about an exchange) I've added: Maybe it doesn't help him specifically (because, indeed, I see no reason they'd be in a hurry to get those coins)... oh well, too bad...
7 Reply Quote Share
LuckyCoinLegendary
Posts: 832 · Reputation: 4795
#13Aug 1, 2019, 09:24 PM
Transactions stay in the mempool until the default mempool size grows too big to accommodate all transactions, in which case the low-fee transactions are automatically dropped from nodes. With the current mempool fee rate and sub 1 sat/vbyte transactions, it is unlikely that the mempool will grow large enough to overflow any time soon. The other way to get a transaction is in the block immediately is to ask a miner, but you'll need to provide something in return.
3 Reply Quote Share
davealphaSenior Member
Posts: 257 · Reputation: 975
#14Aug 2, 2019, 03:31 AM
Sparrow has a very accurate fee suggestion. The same can't be said about Electrum but if you check mempool.space, then you can really make a great assumption about fees. Look at how many blocks ahead the mempool currently is, also look at when where the last 6 or more blocks mined, especially when the last block was mined. If 50 minutes have passed since last mined block, then be assured that the next block will be mined soon. Check the fees of upcoming block and also check the size of transactions in that block. This way you'll understand what your fee should be. Bitcoin is basically the same that it was since the day it was created, there are only minor changes. So, my point is that nothing can be perfect from the very beginning. We have the code that we can modify if there is a need, willingness and acceptance from the devs and the community.
2 Reply Quote Share
w0lf404Hero Member
Posts: 801 · Reputation: 2381
#15Aug 2, 2019, 04:00 AM
It may worth mentioning that nodes usually drop transactions from their mempool after a certain time, even if their mempool isn't full. Nodes using default settings keep transactions in their mempool up to 14 days and unless the transaction is rebroascasted, it would be dropped from the mempool.
1 Reply Quote Share

Related topics