Lightning Network Bug Fix Roundup: LND and Core Lightning Ship Critical Updates

bitcoinindex.net · · 5 min read
Lightning Network Bug Fix Roundup: LND and Core Lightning Ship Critical Updates

Late January and mid-February 2026 brought critical bug fix releases from the Lightning Network’s two biggest implementations. If you’re running a Lightning node, you’ll want to know about these fixes.

LND v0.20.1-beta shipped on February 12, primarily fixing a backwards compatibility bug that blocked upgrades from v0.19.x. Core Lightning v25.12.1 landed January 16 with critical signing fixes for nodes created on v25.12 or later.

Neither release adds features. Both fix things that could actually break your node or prevent upgrades. Here’s what happened and whether you need to care.

LND v0.20.1-beta: The upgrade that wouldn’t

The headline issue in LND v0.20.1-beta is simple: if you tried to upgrade from v0.19.x to v0.20.0, it failed. Specifically, it threw an “unable to decode features: EOF” error when reading your channel graph database.

The problem was a serialization format mismatch. LND v0.19.x stored channel edge features as raw bytes. LND v0.20.x added a 2-byte length prefix to those feature bytes. When v0.20.0 tried to read a v0.19.x database, it expected a prefix that wasn’t there, hit the end of the data too early, and gave up.

PR #10529 fixed it with an auto-detecting deserializer. The new code checks whether uint16(bytes[0:2]) == len(bytes)-2. If yes, it’s the new format with a length prefix. If no, it’s the legacy format without one. Read accordingly. Upgrade proceeds.

This is good engineering. The fix doesn’t require manual intervention or migration scripts. It just works. But it’s also the kind of bug that should have been caught before v0.20.0 shipped. If you’re on v0.19.x and want to upgrade to the v0.20 series, v0.20.1-beta is now your entry point.

Other fixes in v0.20.1-beta

Beyond the upgrade blocker, LND v0.20.1-beta includes:

  • Gossiper shutdown deadlock fix (PR #10540): Certain channel announcement messages could cause LND to hang during shutdown. This was discovered through fuzz testing and is now fixed.
  • Reduced log noise (PR #10514): Some graph database operations were logging warnings that should have been debug messages. Now they are.
  • SQLDB package pinning (PR #10556): Locks the sqldb dependency to a specific version for release stability.

No database migrations required. If you’re on v0.20.0, this is a straightforward upgrade. If you’re on v0.19.x and planning to move to v0.20, you need this version.

Core Lightning v25.12.1: Signatures gone wrong

Core Lightning’s January release carries the subtitle “Boltz’s Seamless Upgrade Experience II,” which is either optimistic or ironic depending on whether you were affected by the bugs it fixes.

The most serious issue: nodes created on v25.12 or later were not correctly signing for non-taproot addresses. This is the kind of bug that could affect your ability to move funds or manage channels. Core Lightning explicitly marks this release as “recommended, particularly for those creating new nodes.”

PR #8831 fixes both the signing bug and a related issue in the lightning-hsmtool, which now properly handles mnemonic hsm_secret files created by newer nodes.

If you spun up a new Core Lightning node on v25.12, you should upgrade. If you’re running an older node and stable, this is less urgent but still recommended.

Other fixes in v25.12.1

Core Lightning packed several crash fixes into this release:

  • Pay plugin crashes (PR #8829): Errors deep inside route hints could crash the payment plugin. Fixed.
  • Askrene plugin crashes (PR #8829, #8832): Two separate corner cases in the pathfinding plugin that caused crashes. Both fixed.
  • Malformed JSON-RPC filters (PR #8780): Bad filters no longer crash lightningd.
  • Gossip daemon issue (PR #8769): listnodes() occasionally failed to show node announcements. Now it doesn’t.
  • Startup crash (PR #8779): If bitcoind wasn’t fully synced on startup, Core Lightning could crash. Not anymore.

The release also deprecates lightning-hsmtool getcodexsecret in favor of getsecret, which outputs a 12-word mnemonic for modern nodes instead of hex.

Should you upgrade?

LND v0.20.1-beta

Upgrade if:

  • You’re on v0.19.x and want to move to v0.20 (mandatory)
  • You’re on v0.20.0 and want the gossiper fix and stability improvements

Skip if:

  • You’re on v0.19.x or earlier and stable, with no plans to upgrade soon

Core Lightning v25.12.1

Upgrade if:

  • You created a node on v25.12 or later (the signing bug affects you)
  • You’re experiencing plugin crashes or stability issues
  • You’re about to create a new node

Lower priority if:

  • You’re on v25.11 or earlier and everything works

Neither release requires coordinated network upgrades or introduces breaking changes. You can upgrade on your own schedule, but if either of the critical bugs affects your setup, sooner is better than later.

What these releases tell us

Both LND and Core Lightning are mature enough that their releases can be boring. These are maintenance drops, not feature bonanzas. They fix databases, signatures, crashes, and edge cases. That’s healthy.

The LND backwards compatibility issue is the kind of thing that affects real operators in production. The fact that it made it into v0.20.0 suggests the upgrade path from v0.19 wasn’t thoroughly tested. The fix is good, but the slip is worth noting.

Core Lightning’s signing bug is more serious. If you created a node on v25.12, you might not be signing correctly for non-taproot addresses. The team caught it fast and marked the upgrade as recommended. If that’s you, don’t sit on it.

Both teams shipped these fixes within about two months of their respective base releases. That’s responsive. Neither release caused network-wide chaos or required emergency coordination. That’s maturity.

If you’re running a Lightning node, check your version. If you’re affected, upgrade. If you’re not, put it on your maintenance calendar. These aren’t the flashy releases that get headlines, but they’re the ones that keep the network running.

Sources: LND v0.20.1-beta Release, LND PR #10529: Backwards Compatibility Fix, LND PR #10540: Gossiper Deadlock Fix, LND PR #10514: Log Noise Reduction, LND PR #10556: SQLDB Package Pinning, Core Lightning v25.12.1 Release, Core Lightning PR #8831: Signing & HSM Fixes, Core Lightning PR #8829: Plugin Crash Fixes, Core Lightning PR #8832: Askrene Crash Fix, Core Lightning PR #8780: JSON-RPC Filter Fix, Core Lightning PR #8769: Gossip Daemon Fix, Core Lightning PR #8779: Startup Crash Fix, Core Lightning PR #8740: Payment Delay Enforcement. Data/status as of March 2, 2026.