How to bump close fee during lightning wallet restore

I’ve moved onto a new node and restored from my old one but the channel force close fee looks too low. It won’t tell me the close tx id but the peer on the channel says it’s this mempool - Bitcoin Explorer . Given the current fees, 10s/vb might never clear. I’ve tried bumping the fee but it doesn’t acknowledge that this transaction belongs to my wallet and it won’t let the peer bump it either.

Any suggestions on how to push this through?

This article seems to have some interesting suggestions: High onchain fee environment - Lightning Node Management . Based on this I’ve changed max-commit-fee-rate-anchors from 10 to 100 in the LND config to handle the current fee levels. I’ve got 45K sats in the btc wallet for an onchain close which should be enough. I’m hoping we can wait for the current transaction to get removed from the mempool and try again. My concern is the process is pretty opaque. I can’t do a lncli closechannel FUNDING_TXID INDEX as it can’t see the channel yet to close.

Anyway, will see if it times out and if I can run a restore process a second time. The transaction was created 10 days ago so hoping it gets flushed in the next 2 days or so.

Afraid the 2 weeks window only applies to channel-opening. To get your off-chain sats back, you’d either need to wait for 10sats/vbyte, or bump it.
Since it’s a post SCB, you can only either

Rely on your channel-peer
(assuming they run LND)

  • They should follow this, and since it’s an anchor channel, it should work.
  • They should check whether their local mempool has the closing tx. Otherwise they can’t bump it. Try with bitcoin-cli getrawtransaction "64bee5df6a7b80efdf518624d511c9e1ba12876a781109d4d8328eba0631a2b7"
  • If it responds with the raw-tx code, :white_check_mark: and they can bump it. If not, they need to temporarily increase their mempool: sudo nano .bitcoin/bitcoin.conf and change / add maxmempool=2000 (default is 300)
  • once this is done, restart bitcoin AND lnd , which will trigger their lnd to broadcast all unconfirmed utxos again. Then, try to get the raw-tx again and if :white_check_mark: , bumpclosefee should work
    lncli wallet bumpclosefee --sat_per_vbyte 85 b9b9000364e031b761cdc91b6c43bd951712d89853f24cfcfd7490bc6fc62d9c:1
    (assuming that’s their channel-point

Bump your anchor with chan-tools
(That’s rather advanced, but it works)

  • Not sure if that’s available in the umbrel store, if not, go to Oliver Guggero’s chantools GH to check it out. Read through what’s possible
  • if you decide to give it a try, you may need to compile it on your own:
sudo apt install golang-go
sudo apt install make
export PATH=$PATH:/usr/local/go/bin
git clone https://github.com/lightninglabs/chantools.git
cd chantools
make install
mv ~/go/bin/chantools /usr/local/bin/
  • Now that you have chantools installed, you can ponder whether you try the chantools pullanchor, an attempt to CPFP an anchor output of a channel described here.

I know one runner who has successfully completed this just a few days ago, on umbrel. If you’re tempted, let me know and I’ll get you in touch. He wrote the full thing down here (in german).

Hope this helps you to make an educated decision. :crossed_fingers:

2 Likes

Awesome, really appreciate the feedback. Will try the channel-peer option first and see how we go.

1 Like

Hi Hakuna. I’m in the process of going the chantools route. The article in German you shared is good, i’m just not clear on how to find a txid for the --sponsorinput flag and the article doesn’t really go into it other than to say “a UTXO from your LND wallet which has already been confirmed”. Chantools says "
the input to use to sponsor the CPFP transaction; must be owned by the lnd node that owns the anchor output". I think i’ve got the rest of the parameters sorted. Any advice appreciated. Thanks.

Hi there,

the sponsoring input is an UTXO which you need on your LND wallet to pay the fees.
So you’d need to send a small but sufficient amount of sats to sponsor the payment. 20k sats should be sufficient. Once you sent some sats to your LND wallet, this UTXO can be found with lncli listunspent, and you’ll have to attach it as utxo:vout.

Does this help?

Thanks, I’m really close. I used an existing UTXO in the bitcoin wallet of my lightning node and it liked that process, created the psbt and with that i did a publishtx, however the response is “[lncli] rpc error: code = Unknown desc = transaction rejected: output already spent”.

:~$ sudo ~/umbrel/scripts/app compose lightning exec lnd lncli listunspent
{
“utxos”: [
{
“address_type”: 4,
“address”: “bc1p7umvrw3p408w57hkyfq2zjcqs4h2e8sz63c2adqsphnffpfclj3syeqwnq”,
“amount_sat”: 45394,
“pk_script”: “5120f736c1ba21abceea7af62240a14b00856eac9e02d470aeb4100de6948538fca3”,
“outpoint”: “b9b9000364e031b761cdc91b6c43bd951712d89853f24cfcfd7490bc6fc62d9c:0”,
“confirmations”: 37636
}
]
}

I added another UTXO with 40K sats and the same result. I tried changing the vout from 0 to 1 and that failed. Any suggestions welcome. I’ve probably done something dumb but i think we’re close. Appreciate your help.

Sorry somehow didn’t get notified that there was a reply.

So we can only assume, but I think that this is because your local mempool doesn’t have the closing-tx anymore (it was purged due to too low fee).

How you could try and remedy it:

  • test if your local mempool has the tx: ~/umbrel/scripts/app compose bitcoin exec bitcoind bitcoin-cli getrawtransaction [TXID]
  • if it doesn’t, get it from mempool.space: open the tx there, and grab the RAW-tx by appending the txid here: https://mempool.space/api/tx/[TXID]/hex .
  • Copy the whole long string, and execute the local broadcast in your Terminal with ~/umbrel/scripts/app compose lightning exec lnd lncli wallet publishtx RAWTX .

Then try to do the psbt again. If that doesn’t work, try the above once again, but before, increase your local mempool to 600MB. I don’t know how to do this with umbrel, but everywhere else, you would edit .bitcoin/bitcoin.conf and set maxmempool=600.

If you are waiting for a reply from me, don’t hesitate to ping me from the contacts listed here

You’re a genius. All sorted. The closing transaction was missing from my mempool. The above sorted it all out. And the help of the chantools article in German you sent through previously. Below is the successful CPFP transaction.

Thanks Hakuna for all your help. That was close to 2 months to sort out but i learnt a lot getting it sorted. Will go cooperative close next time, not rely on umbrel channel backup and restore and ensure the Maximum Anchor Channel Commit Fee Rate is set to current market rates before closing channels.

1 Like

Super happy you made it!
Shoutout to Wario, the author of the article, who I pinged with your issues and deserves the credit :innocent: I’ll relay your donation, thank you so much! But the learning is the best part of it!

1 Like