Skip to content

[bug]: unable to restore channel backup #10101

@Kato-Mato

Description

@Kato-Mato

Background

I cannot get my lnd to sync to chain and graph.

Your environment

  • LND version 0.18.5
  • Operating system: 6.1.0-13-amd64 Fix name typo in README #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64 GNU/Linux
  • Start9
  • bitcoind version 28.1.0~2

Steps to reproduce

Run Bitcoin Core Service in start9 GUI
Run LND Service in start9 GUI
My LND cannot get past "sync to chain and graph" after many days of syncing, so I cannot use Thunderhub or Ride The Lightning to control my LND.
So I SSH into my start9 server.
I run sudo podman exec -it lnd.embassy /bin/bash
Then I run command: 'lncli --rpcserver lnd.embassy listchannels' and it will show that I have no active peers despite last having 131 channels. This is no surprise since my LND has been down and not been able to sync to chain and graph for so long.

When I run command: lncli --rpcserver lnd.embassy getnetworkinfo
It outputs the following:

{
    "graph_diameter":  14,
    "avg_out_degree":  4.01198520974117,
    "max_out_degree":  67,
    "num_nodes":  15686,
    "num_channels":  31466,
    "total_network_capacity":  "137918931012",
    "avg_channel_size":  4383109.737875802,
    "min_channel_size":  "1050",
    "max_channel_size":  "500000000",
    "median_channel_size_sat":  "1000000",
    "num_zombie_chans":  "280793"
}

When I run command: lncli --rpcserver lnd.embassy getinfo
It outputs the following:

{
    "version":  "0.18.5-beta commit=v0.18.5-beta",
    "commit_hash":  "***",
    "identity_pubkey":  "***",
    "alias":  "***",
    "color":  "#***",
    "num_pending_channels":  0,
    "num_active_channels":  0,
    "num_inactive_channels":  131,
    "num_peers":  0,
    "block_height":  904106,
    "block_hash":  "****",
    "best_header_timestamp":  "****",
    "synced_to_chain":  false,
    "synced_to_graph":  false,
    "testnet":  false,
    "chains":  [
        {
            "chain":  "bitcoin",
            "network":  "mainnet"
        }
    ],
    "uris":  [
        "****@****.onion:****"
    ],
    "features":  {
        "0":  {
            "name":  "data-loss-protect",
            "is_required":  true,
            "is_known":  true
        },
        "5":  {
            "name":  "upfront-shutdown-script",
            "is_required":  false,
            "is_known":  true
        },
        "7":  {
            "name":  "gossip-queries",
            "is_required":  false,
            "is_known":  true
        },
        "8":  {
            "name":  "tlv-onion",
            "is_required":  true,
            "is_known":  true
        },
        "12":  {
            "name":  "static-remote-key",
            "is_required":  true,
            "is_known":  true
        },
        "14":  {
            "name":  "payment-addr",
            "is_required":  true,
            "is_known":  true
        },
        "17":  {
            "name":  "multi-path-payments",
            "is_required":  false,
            "is_known":  true
        },
        "19":  {
            "name":  "wumbo-channels",
            "is_required":  false,
            "is_known":  true
        },
        "23":  {
            "name":  "anchors-zero-fee-htlc-tx",
            "is_required":  false,
            "is_known":  true
        },
        "25":  {
            "name":  "route-blinding",
            "is_required":  false,
            "is_known":  true
        },
        "27":  {
            "name":  "shutdown-any-segwit",
            "is_required":  false,
            "is_known":  true
        },
        "30":  {
            "name":  "amp",
            "is_required":  true,
            "is_known":  true
        },
        "31":  {
            "name":  "amp",
            "is_required":  false,
            "is_known":  true
        },
        "45":  {
            "name":  "explicit-commitment-type",
            "is_required":  false,
            "is_known":  true
        },
        "55":  {
            "name":  "keysend",
            "is_required":  false,
            "is_known":  true
        },
        "2023":  {
            "name":  "script-enforced-lease",
            "is_required":  false,
            "is_known":  true
        }
    },
    "require_htlc_interceptor":  false,
    "store_final_htlc_resolutions":  false
}

First I tried to add some peers to see if it can revitalize the syncing process with this command: lncli --rpcserver lnd.embassy connect 0294ac3e099def03c12a37e30fe5364b1223fd60069869142ef96580c8439c2e0a@8.210.134.135:26658
But it throws this error instead:

[lncli] rpc error: code = Unknown desc = server is still in the process of starting

Simultaneously the start9 GUI for LND has a service log that shows this:

2025-07-05T00:13:32-07:00  2025-07-05 07:13:32.134 [DBG] RPCS: [/lnrpc.Lightning/ConnectPeer] requested
2025-07-05T00:13:32-07:00  2025-07-05 07:13:32.134 [ERR] RPCS: [/lnrpc.Lightning/ConnectPeer]: server is still in the process of starting

Then I run this command to create a backup SCB of all channels: lncli --rpcserver lnd.embassy exportchanbackup --all --output_file backup20250721
It does not throw an error when doing this, so I assume it worked well.

Then I run this command to try to restore all channels (which I think means force close all channels): lncli --rpcserver lnd.embassy restorechanbackup --multi_file backup20250721
However, it won't work, it throws this error:

[lncli] unable to restore chan backups: rpc error: code = Unknown desc = server is still in the process of starting

Expected behaviour

The expected behavior is that restorechanbackup would initiate a force close of all channels in the SCB file named "backup2025.07.21.json".
I want to force close everything and move funds to ny cold storage wallet.

Actual behaviour

restorechanbackup throws this error:

[lncli] unable to restore chan backups: rpc error: code = Unknown desc = server is still in the process of starting

Side Questions

  1. What directory or path is the backup2025.07.21.json file stored by default?
  2. I have some watchtowers (I believe 4), do they help with this restoration process?
  3. How do I resolve the paradox (chicken-or-egg problem): I don't have peers so I can't reach sync, I can't reach sync so I can't add peers, I don't have peers so I can't reach sync, I can't reach sync so I can't add peers...

Metadata

Metadata

Assignees

No one assigned

    Labels

    SCBRelated to static channel backupbackupsbugUnintended code behaviour

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions