Restored wallet - two channels won't close

Hi,

I bricked my SSD, screwed it up more and needed to restore.

I followed the troubleshooting guide using a backup I download a few days before the crash.

I’ve recovered most of my funds but two channels won’t close. It’s been ages (like months).

I can see them at http://umbrel.local/lightning with status ‘closing’. They show zero local and remote balance. The peer and channel capacity is displayed.

Worried that maybe these aren’t being forced closed because my backup had the wrong state or something?

Any help would be appreciated.

Sometimes channels can take more than usual to release the funds from a closed channel.
You can check the status and the height block when funds will be released by a command line.
Please see in the troubleshooting manual the steps you need to do, to find those channels status.

Hi Darthcoin

They are still stuck. I followed the troubleshooting and the output of the ‘waiting_close_channels’ are here. I removed the capacity amounts and node address from the output - substituted them with [REMOVED]. Everything is otherwise copy / paste.

Do you know what could be happening here? Did I backup incorrectly or these channels have already closed? Maybe I lost the funds for closing via backup with the wrong state?
should i force close them?

“waiting_close_channels”: [
{
“channel”: {
“remote_node_pub”: [REMOVED],
“channel_point”: [REMOVED],
“capacity”: [REMOVED],
“local_balance”: “0”,
“remote_balance”: “0”,
“local_chan_reserve_sat”: “0”,
“remote_chan_reserve_sat”: “0”,
“initiator”: “INITIATOR_REMOTE”,
“commitment_type”: “ANCHORS”
},
“limbo_balance”: “0”,
“commitments”: {
“local_txid”: “”,
“remote_txid”: “”,
“remote_pending_txid”: “”,
“local_commit_fee_sat”: “0”,
“remote_commit_fee_sat”: “0”,
“remote_pending_commit_fee_sat”: “0”
}
},
{
“channel”: {
“remote_node_pub”: [REMOVED],
“channel_point”: [REMOVED],
“capacity”: [REMOVED],
“local_balance”: “0”,
“remote_balance”: “0”,
“local_chan_reserve_sat”: “0”,
“remote_chan_reserve_sat”: “0”,
“initiator”: “INITIATOR_LOCAL”,
“commitment_type”: “STATIC_REMOTE_KEY”
},
“limbo_balance”: “0”,
“commitments”: {
“local_txid”: “”,
“remote_txid”: “”,
“remote_pending_txid”: “”,
“local_commit_fee_sat”: “0”,
“remote_commit_fee_sat”: “0”,
“remote_pending_commit_fee_sat”: “0”
}
}
]

Was this ever resolved? I have the same issue

same exact issue here with same output from lncli pendingchannels.

i know this is an old thread, but if anyone who’s gone through this can shed some light on it, it would be greatly appreciated.

@Pinnochio over a year has passed…did they ever close?

@goliath77 This thread appears to be dead…posting regardless in case anyone needs this in the future.

The solution to the problem is not “waiting it out”… the issue lies with the way CLN and LND nodes are talking to each other and will not be resolved without some intervention.

May not have the lingo 100% down but here’s the issue:

CLN nodes are immediately closing the connection when receiving an SCB request from LND nodes. The connection is closed before LND has a chance to send the error message that triggers the necessary force close as part of the recovery process. The easiest solution is to contact the other node operator and ask them to force close. If that’s not possible, chantools developer just added a workaround that sends the error message separately to trigger the force close and recover funds.

chantools: https://github.com/guggero/chantools

solution: https://github.com/lightningnetwork/lnd/issues/7301#issuecomment-1445121739

Steps, per the developer… will need to ssh into your Umbrel and run via command line/terminal:

  • Download the latest version of chantools (v0.10.7) (use arm64 version for Umbrel)

  • Run the following command (replacing the peer address with the full address of the remote peer and the channel point with the channel in question):

    chantools triggerforceclose --peer [peer@address:port] --channel_point [channel:id]

  • The tool will ask you for your seed, which is required to initiate the encrypted p2p communication with the peer.

  • If the channel is observed by lnd (e.g. showing up in the list of lncli pendingchannels), then just wait until the force close transaction is confirmed and the channel should automatically update the status there.

  • If the channel isn’t showing up in the list of pending channels, you can use the chantools sweepremoteclosed command to sweep the funds.

After running the above steps, channel was closed almost immediately and funds were secured on-chain.

2 Likes

The instructions above worked! thank you so very much for posting the solution and the very clear instructions, really appreciate it!

Sincerely,

it did not work for me. the result after the command is: channel already closed. but the funds do not show up

Did you try the sweepremoteclosed command with chantools? If the channel is already closed, then LND just needs to sweep the funds into your on-chain wallet.

You may want to also check on your pending channels via lncli and see what the output is.

yes i tried this command, it said already closed.
i tried the zombiechannel command, will give it some time then i will see what lncli says.

i have a receipt from my sending wallet, proof that i sent it to my node. it matches, there was only one transaction from my lightning wallet to a bitcoin address which i could find using the seed but i can only watch it.

umbrel messed this up with their proprietary software. i want to see the code from umbrel when the transaction hit my node, to where my money was forwarded.

Hey @stargati how do you know the other channel is a CLN node?

hi jim, can you send me the proprietary code of umbrel to see where my umbrel node has sent my funds?

Hey @manfreddavao we don’t have the ability to run code arbitrarily like lncli commands to send to wallets, Umbrel is very forward about putting sovereign control of devices in complete control of the user and whatever they’d like to do with it. You can find our Github repository here: https://github.com/getumbrel
and you would be able to run all LND commands to check statuses, for reference on best practices: https://docs.lightning.engineering/lightning-network-tools/lnd/safety

I believe I responded to you on twitter here: https://twitter.com/usernameisJim/status/1636032905423077380

Echoing the message there are you sure the funds were moved? You can see current status of the channels with this command:
~/umbrel/scripts/app compose lightning exec lnd lncli pendingchannels

If you had an issue being connecting to a CLN peer the chantools github tool here and conducting steps for manual intervention has successfully returned funds to multiple users recently who had pending channels: https://github.com/guggero/chantools

hi jim, yes thank you, you have sent me the command and i had sent you the output which shows the channel capacity as my total funds. i tried all chantool commands but my funds are still in this unknown wallet. my umbrel node also shows the total capacity and it says closing when the commands say that they cannot close a closed channel.
as i said there was ONE transaction one year ago. from my wallet i sent sat to my umbrel node. i have the wallet receipt and tx id and i can track the transaction on the bitcoin blockchain. it is still sitting in an unknown wallet for one year. there was no other transaction. only one transaction which i can prove. i wonder why my funds were sent into this unknown bitcoin wallet instead to my node when i used the correct address of my umbrel node. i can prove that with the recipient address in the transaction record of my wallet. i have even ordered my sending wallet to recall the funds(this was an option, the wallet said refundable). i clicked on refund and it tries to refund the transaction for a year now.
how can i get my funds back to my node or back to where they came from?

now i have tried to reinstall everything again and after putting the seed into umbrel lightning i went to recover channels. i click on the very first one and get an error: red field saying: error unable to recover channel backup. server is still in the process of starting

even after one hour still displaying this error

@usernameisJim I had issues with 3 channels total and I was able to communicate with 2 of the operators. In my discussions with them, they both stated they were running CLN nodes. These were resolved by them initiating the force close manually. The last channel I was having issues with was with a well known CLN operator as well. I did not know this at the time I opened the channel, but came to find out after researching fixes and noticing a pattern of similar issues from other operators.

1 Like

Hi,

I tried to use chantools triggerforceclose --peer [peer@address:port] --channel_point [channel:id ] but there are new updated channels with exclusive use of Tor network. It’s impossible write --peer because there’s no IP address.

Does anyone have solution for closing pending channels? I don’t have channels.backup file but I can see pending closing channels (also one node is inactive) and chantool found 1 unspent outputs but that’s it. I cannot proceed. It’s been 3 months when several power outage was then and since then I was trying to restore channels and pending balance.

Even sweepremoteclosed command doesn’t work. I can’t find solution.

Thanks

If they are over Tor, then the same would apply, but you would switch out the IP address for their onion address, i.e.:

peer [nodeid@longonionaddresswithabunchofalphanumericalcharacters.onion:port]

If you don’t have the channel backup but the channel is indeed recognized by your node, you may still have some recourse, i think. I’m no expert, but i think checking out the chantools github recovery steps might point you in the right direction. Particularly starting from Step 5.

To note: If the channel appears in the pending close channels list when checking with lncli, then you would just need to wait for the timelock to expire - the funds should return to your on-chain wallet.

If it shows up under waiting close (not pending), then that’s when chantools’ offerings could come into play.

Again, not an expert, but I believe this is how it would work.

Hi sir,

I tried and not working with .onion addresses. Works only with IP:port

I have a channel backup as tnx as well, however I found another issues (fatal error) peers.dat is corrupted every 42 hours (roughly). Why? I can’t even start to begging understand why. But I use a script posted in forum that deletes or renames peers.dat to peers.dat.old when detected as corrupted. And it’s working for now. However I cannot confirm for channels yet because I needed to reformat all SSD and start from scratch. And even then I had a full issue error with containers (syncronized b-node to 83% when errors begin) and I needed to change mSD and then performed THIS SOLUTION to successfully fix Container Error. Well, there’s a ton errors, issues and absolutely no list and no solutions.

Thank you community.

1 Like

I have got the same problem. I am not able to triggerforceclose with a tor-address. Is there any solution ?

2 Likes