Same problem here.
Hi @iceman05 is this in regards to a recently recovered node where the channels have closed, and one or two are stuck?
Just looking for some further context to help you out
yeah Iceman and me got the “same” problem (we also had a channel together but this one closed by using the channel backup)…
In my case I had 30 channels and after the node crashed I downloaded the whole blockchain again, then used the umbrel backup file to restore the channels - - > 27 channels closed and three were left in status “waiting for close” but without any Information about local/remote balance. Two of them I could close by using chantool triggerforceclose but the last one only got a Tor address and so the triggerforceclose command doesn’t work.
Iceman got the same problem (waiting channel close, no information about local/remote balance in this channel) but an additional problem here is that the peer node also crashed and doesn’t have these information either. Now they don’t know how to close the channel and how many sats everyone of them should get.
wick3da has already explained it very well. Unfortunately, both my node and the other side’s node crashed almost at the same time. We both had to re-download the blockchain. All channels could be closed except for this one:
{
“total_limbo_balance”: “0”,
“pending_open_channels”: [
],
“pending_closing_channels”: [
],
“pending_force_closing_channels”: [
],
“waiting_close_channels”: [
{
“channel”: {
“remote_node_pub”: “02b902e9189d2e973c1e3745b16a8c9e9e2a8efe05748540961629ede2c200a1be”,
“channel_point”: “7129aa7c084559db766e0c3c0da82c3da87771be1dc3cf936e0237ecb5eae2c1:1”,
“capacity”: “2000000”,
“local_balance”: “0”,
“remote_balance”: “0”,
“local_chan_reserve_sat”: “0”,
“remote_chan_reserve_sat”: “0”,
“initiator”: “INITIATOR_REMOTE”,
“commitment_type”: “ANCHORS”,
“num_forwarding_packages”: “0”,
“chan_status_flags”: “ChanStatusRestored”,
“private”: true
},
“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”
},
“closing_txid”: “”
}
]
}
@iceman05 @wick3da Looks like chantools recovery is going to be the best tool here. GitHub - lightninglabs/chantools: A loose collection of tools all somehow related to lnd and Lightning Network channels.
It particular it looks like you are going to have to look over the zombie channel recovery process. https://github.com/lightninglabs/chantools/blob/master/doc/zombierecovery.md#file-format What Are Zombie Lightning Channels? - The Bitcoin Manual
Please have a look over these so you can get an idea for what you’ll need to do here, and try install chantools to your laptop/PC. Once thats done please let me know and we can proceed
@iceman05 @wick3da @BTCsatsII @smolgrrr Any solutions to this? I have a Channel in “Closing” Status and not able to triggerforceclose with a tor-address. Any advice is greatly appreciated, thanks…
“total_limbo_balance”: “5005530”,
“pending_open_channels”: ,
“pending_closing_channels”: ,
“pending_force_closing_channels”: ,
“waiting_close_channels”: [
{
“channel”: {
“remote_node_pub”: “02e0d304ea61db67dcee3c3c4b53b1c43e3ed0a52e369cc86fe6e3562579739aa7”,
“channel_point”: “f540a1042bbe18a00d81e58b97e80f045b34f4738b0a06f91a8334b423c36fc2:1”,
“capacity”: “5009000”,
“local_balance”: “5005530”,
“remote_balance”: “0”,
“local_chan_reserve_sat”: “50090”,
“remote_chan_reserve_sat”: “50090”,
“initiator”: “INITIATOR_LOCAL”,
“commitment_type”: “ANCHORS”,
“num_forwarding_packages”: “0”,
“chan_status_flags”: “ChanStatusBorked|ChanStatusCommitBroadcasted|ChanStatusLocalCloseInitiator”,
“private”: false,
“memo”: “”
},
“limbo_balance”: “5005530”,
“commitments”: {
“local_txid”: “85c5fbeca40f0a5b94805299919d0eedf3b50f7247aeb48e4c186dbef357e0ac”,
“remote_txid”: “0a4c9a9e083c3380132dfd1d530a0db34030f66bcc1e02d4a71a724953b9fb72”,
“remote_pending_txid”: “”,
“local_commit_fee_sat”: “2810”,
“remote_commit_fee_sat”: “2810”,
“remote_pending_commit_fee_sat”: “0”
},
“closing_txid”: “85c5fbeca40f0a5b94805299919d0eedf3b50f7247aeb48e4c186dbef357e0ac”
Unfortunately, I haven’t made any progress on this topic yet. Somehow I hope there will be a simpler solution at some point.
@DarthCoin @smolgrrr @usernameisJim I used command ~/umbrel/scripts/app compose lightning exec lnd lncli wallet bumpfee 85c5fbeca40f0a5b94805299919d0eedf3b50f7247aeb48e4c186dbef357e0ac:0 --sat_per_vbyte 40 to change the fee rate, but get an ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running? Any other commands I can use to bump fee in the closing_txid? Any advice is greatly appreciated, thanks…
Khmu007, iceman05
Both of you have to go with chantools zombierecovery at this point. There will never be easier way (and it is not difficult btw, matter of couple minutes once you get it).
If you estabilish usable cooperative contact with your peers, I can help you with steps. Or I can attempt to do the whole thing on your behalf if you give me your seed. Done this dozen of times, but stalking dormant peers is soo exhausting, I would prefer if you can estabilish that contact yourself.
@babik Thanks for offer. Even after years, I can’t find a good guide on how to proceed with zombierecovery. So I’d be happy to take you up on your offer. Perhaps the three of us can solve the problem quickly and easily. I can restore contact with the Lightning channel peer.
What do you suggest? What would be the easiest way for us to communicate?
We could create tg group (send me your handle), but I am thinking maybe it would be educational for others to share it here. Reaching and actually making your peer cooperate is always the hardest part. The rest can be done in few minutes.
Download version for your system
Next steps assume you are on windows PC, but they are almost same for any OS..
Extract it and there will be folder with “chantools.exe” in it, which you can move elsewhere or leave it there. Just copy address / path to folder where this chantools.exe is located at, open command prompt and go to your correct folder like..
cd c:/users/path/to/chantools_folder
And test if it works..
chantools --version
both peers have to do this. Next both peers open notepad and copy / paste following as it is here
{
“node1”: {
“identity_pubkey”: “02d95073c2298641594c460cb34d1d411f550434791ce446325ac9a142864bae01”,
“contact”: “iceman05,”
},
“node2”: {
“identity_pubkey”: “02b902e9189d2e973c1e3745b16a8c9e9e2a8efe05748540961629ede2c200a1be”,
“contact”: “NugaOstalbNode,”
},
“channels”: [
{
“short_channel_id”: “”,
“chan_point”: “7129aa7c084559db766e0c3c0da82c3da87771be1dc3cf936e0237ecb5eae2c1:1”,
“address”: “bc1qcnl9nc66xkr3m25why5qav2y6t7m7zglu2u3q069esdtfmr8s0tq0ljxak”,
“capacity”: 2000000
}
]
}
and save it as “match.json” next to chantools.exe (otherwise path has to be included in commands) and both of you need to run this.. (everyone replace “bc1xxx” with address where you want to receive your share of the channel)
chantools zombierecovery preparekeys --payout_addr bc1xxx --match_file match.json
This will ask lnd seed and produces “preparedkeys--.json”
In next step one of the peers has to send his preparedkeys file to the other peer, let say he sends it to you.. You will then need to move both your and his preparedkeys files next to chantools.exe (otherwise include paths..). Make sure node1 points to your file and node2 to his.. (like it is in original match.json) and run this (with correct file names):
chantools zombierecovery makeoffer --node1_keys preparedkeys-xxxx-xx-xx-.json --node2_keys preparedkeys-xxxx-xx-xx-.json --feerate 3
It will ask your seed and open window where you will be asked how to split funds between both parties.. Unless you both agree on something else, people often settle on 50/50 split.. After completion you get 1/2 signed psbt. Copy and send it to your peer. He will need to run following (replace xxx with psbt provided by you)
chantools zombierecovery signoffer --psbt xxx
This will ask his lnd seed and returns signed raw transaction. All that remains is to copy this transaction and manually publish it, ie
I’ve gotten to the point where I’m entering my seed. After confirming, I receive the following error message:
Error: invalid payout address, must be P2WPKH or P2TR
The following line is in the file. I swapped the address from your template for one of my own. This address is of type P2WPKH, right?
“address”: “bc1qqu4487ggzmht8nmxzeesy0cldcaxydsntn47dq”,
Okay, I’m one step further now. My mistake was that I didn’t include the address in the command. Of course, it couldn’t work that way.
Then I had another problem: “error decoding match file match.json: invalid character ‘â’ looking for beginning of object key string”
But I was able to solve that myself using the template from github chantools. I think it was your quotation marks.
I now have my preparedkeys json file. My question for the next step: Can my peer use the same match.json as me? Can I send it to him, and after entering their seed, he send me his preparedkeys file back? Since the capacity of 2000000 sats belongs entirely to me, it’s not a problem if they use the same output address. Right?
“I swapped the address from your template for one of my own.”
Address in match.json is your channel address, which is 2-2multisig=p2wsh, (not p2wpkh, which can be singlesig-only) I have included correct one in my “template”.. Your payout address is specified in the first command with --payout_addr bc1..
“I think it was your quotation marks”
Sorry to hear that, but it could be, I have noticed this forum “ignored” couple symbols in my previous post (in the template name of preparedkeys file) so maybe it did the same in match template also, somehow altering the text from what I have actually copy/pasted..
“Can my peer use the same match.json as me?”
They must use the same one..
“Since the capacity of 2000000 sats belongs entirely to me, it’s not a problem if they use the same output address. Right?”
Sure, if they agree on 100/0 split, using the same payout address on both sides reduces risk of mistake..