6

I often receive an -32700 'Insufficient Funds' error when attempting to create 'child pays for parent' (CPFP) transactions using unconfirmed change output. This can be problematic since it can prevent me from sending further transactions until the parent transaction is confirmed.

My question: Is there a bitcoin.conf setting (or other workaround/solution) that would allow for the acceptable length of chains of CPFP transactions/unconfirmed change outputs to be increased, and thereby avoid being stuck, unable to broadcast further bitcoin transactions until parent txs are confirmed?

A related side question - I have not yet discovered the logic behind how bitcoin core decides to allow an additional CPFP transaction to be chained, and when it gives an 'Insufficient Funds' error. It seems to be anywhere between a chain of 1 to ~5 (i.e. sometimes I get 'Insufficient Funds' error when there is only a 'chain' of one tx, other times, up to around 5) and it is not clear to me how this is determined. What is the logic here?

1 Answer 1

2

The maximum unconfirmed descendant count is a mempool setting, not a wallet one. Assuming most of the network run with the default of 25, even if you changed your own mempool to accept a longer chain the last child transaction would not relay.

Anyways, in such an extreme case (a chain of >25 unconfirmed transactions) you likely want to bump your fees already. And batch your transaction next time..

how bitcoin core decides to allow an additional CPFP transaction to be chained, and when it gives an 'Insufficient Funds' error.

The wallet will by default spend unconfirmed change (transactions it itself created), but not unconfirmed incoming payments.

5
  • Thanks for your answer. Unfortunately this doesn't really explain why I am unable to spend unconfirmed funds with chains less than 5. Currently I have unconfirmed change output from a single transaction ('chain' of 1) which I am unable to spend, with a 'Insufficient Funds' error, despite getbalance showing all of my expected funds. Do you have any idea what may be causing this, or a possible solution?
    – qmux
    Jan 12, 2021 at 14:13
  • What command are you using? Do you have spendzeroconfchange=1 (the default) ? Are you sure the wallet is only including this specific utxo (you may be confused by fees, too. Maybe and if possible do a dry run with a smaller amount) Jan 12, 2021 at 14:23
  • Turns out using replacebyfee alongside CPFP chains was causing bitcoin-core to refuse to spend unconfirmed change, likely because 'conflicting' chains of CPFP transactions could result in chaotic/non-deterministic wallet spending conditions. It's not fully clear to me whether or not CPFP and RBF are simply not designed to be used together, or if there is some better way of benefiting from either together that I do not currently know of.
    – qmux
    Jan 24, 2021 at 12:10
  • They are, but the Bitcoin Core wallet may not be ready to handle all edge cases yet (would have to dig a bit to give a more secure answer). Jan 24, 2021 at 12:44
  • Discovered that I get the same "Insufficient Funds" error, along with getbalance returning an incomplete balance when exclusively making CPFP txs (without doing RBF txs), and only 5/10 transactions of about 10/20 outputs. I'm a bit stumped as to why this issue still arises. Could it be related to using RBF explicit opt-in for all transactions?
    – qmux
    Feb 8, 2021 at 22:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.