- Bug Fixes
- New Features
- Improvements
- Technical and Architectural Updates
- Contributors (Alphabetical Order)
-
Chain notifier RPCs now return the gRPC
Unavailablestatus while the sub-server is still starting. This allows clients to reliably detect the transient condition and retry without brittle string matching. -
Fixed an issue where the TLS manager would fail to start if only one of the TLS pair files (certificate or key) existed. The manager now correctly regenerates both files when either is missing, preventing "file not found" errors on startup.
-
Fixed race conditions in the channel graph database. The
Node.PubKey()andChannelEdgeInfo.NodeKey1/NodeKey2()methods had check-then-act races when caching parsed public keys. Additionally,DisconnectBlockAtHeightwas accessing the reject and channel caches without proper locking. The caching has been removed from the public key parsing methods, and proper mutex protection has been added to the cache access inDisconnectBlockAtHeight. -
Fixed TLV decoders to reject malformed records with incorrect lengths. TLV decoders now strictly enforce fixed-length requirements for Fee (8 bytes), Musig2Nonce (66 bytes), ShortChannelID (8 bytes), Vertex (33 bytes), and DBytes33 (33 bytes) records, preventing malformed TLV data from being accepted.
- Basic Support for onion messaging forwarding
consisting of a new message type,
OnionMessage. This includes the message's definition, comprising a path key and an onion blob, along with the necessary serialization and deserialization logic for peer-to-peer communication.
- Added support for coordinator-based MuSig2 signing
patterns with two new
RPCs:
MuSig2RegisterCombinedNonceallows registering a pre-aggregated combined nonce for a session (useful when a coordinator aggregates all nonces externally), andMuSig2GetCombinedNonceretrieves the combined nonce after it becomes available. These methods provide an alternative to the standardMuSig2RegisterNoncesworkflow and are only supported in MuSig2 v1.0.0rc2.
-
Added support for the
upfront-shutdown-addressconfiguration inlnd.conf, allowing users to specify an address for cooperative channel closures where funds will be sent. This applies to both funders and fundees, with the ability to override the value during channel opening or acceptance. -
Rename experimental endorsement signal to accountable to match the latest proposal.
The deprecated --sat_per_byte option will be fully removed. This flag was
originally deprecated and hidden from the lncli commands in v0.13.0
(PR#4704). Users should
migrate to the --sat_per_vbyte option, which correctly represents fee rates
in terms of virtual bytes (vbytes).
Internally --sat_per_byte was treated as sat/vbyte, this meant the option
name was misleading and could result in unintended fee calculations. To avoid
further confusion and to align with ecosystem terminology, the option will be
removed.
The following RPCs will be impacted:
| RPC Method | Messages | Removed Option |
|---|---|---|
lnrpc.CloseChannel |
lnrpc.CloseChannelRequest |
sat_per_byte |
lnrpc.OpenChannelSync |
lnrpc.OpenChannelRequest |
sat_per_byte |
lnrpc.OpenChannel |
lnrpc.OpenChannelRequest |
sat_per_byte |
lnrpc.SendCoins |
lnrpc.SendCoinsRequest |
sat_per_byte |
lnrpc.SendMany |
lnrpc.SendManyRequest |
sat_per_byte |
walletrpc.BumpFee |
walletrpc.BumpFeeRequest |
sat_per_byte |
- Added unit tests for TLV length validation across multiple packages. New tests ensure that fixed-size TLV decoders reject malformed records with invalid lengths, including roundtrip tests for Fee, Musig2Nonce, ShortChannelID and Vertex records.
- Freeze the graph SQL migration code to prevent the need for maintenance as the sqlc code evolves.
- Boris Nagaev
- Elle Mouton
- Erick Cestari
- Mohamed Awnallah
- Nishant Bansal
- Pins