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.
What's the deal with unconfirmed transactions taking forever to drop?
14 replies 500 views
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.
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.
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.
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.
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.
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.
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.
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.
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).
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:
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...
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.
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.
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.
Related topics
- Bitcoin Core displaying coins (UTXOs) in a new tab 13
- Are you in favor of BIP-110? Let's get a Bitcoin poll going. 0
- Erlay seems to have some issues here’s a better proposal for a bitcoin protocol without invites 3
- New Optional Hourglass Implementation is Live 3
- Ways to earn some sats by contributing to bitcoin core development 5
- Exploring the Potential and Challenges of a Kardashev-Scale Bitcoin Network 3