11 KiB
Release Notes
Bug Fixes
-
Fixed potential update inconsistencies in node announcements by creating a shallow copy before modifications. This ensures the original announcement remains unchanged until the new one is fully signed and validated.
-
Fixed shutdown deadlock when we fail starting up LND before we startup the chanbackup sub-server.
-
Fixed an issue where known TLV fields were incorrectly encoded into the
ExtraData
field of messages in the dynamic commitment set. -
Fixed a deadlock that can cause contract resolvers to be stuck at marking the channel force close as being complete.
-
Fix a bug where child logger's derived via
WithPrefix
did not inherit change log level changes from their parent loggers.
New Features
Functional Enhancements
RPC Additions
-
When querying
ForwardingEvents
logs, the response now include the incoming and outgoing htlc indices of the payment circuit. The indices are only available for forwarding events saved after v0.20. -
The
lncli addinvoice --blind
command now has the option to include a chained channels 1 2 incoming list--blinded_path_incoming_channel_list
which gives users the control of specifying the channels they prefer to receive the payment on. With the option to specify multiple channels this control can be extended to multiple hops leading to the node. -
The
lnrpc.ForwardingHistory
RPC method now supports filtering byincoming_chan_ids
andoutgoing_chan_ids
. This allows to retrieve forwarding events for specific channels. -
DescribeGraph
,GetNodeInfo
,GetChanInfo
and the corresponding lncli commands now have flaginclude_auth_proof
. With the flag, these APIs add AuthProof (signatures from the channel announcement) to the returned ChannelEdge. -
A new config value
--htlcswitch.quiescencetimeout
is added to allow specifying the max duration the channel can be quiescent. A minimal value of 30s is enforced, and a default value of 60s is used. This value is used to limit the dependent protocols like dynamic commitments by restricting that the operation must finish under this timeout value. Consider using a larger timeout value if you have a slow network. -
The default value for
gossip.msg-rate-bytes
has been increased from 100KB to 1MB, andgossip.msg-burst-bytes
has been increased from 200KB to 2MB.
lncli Additions
-
lncli sendpayment
andlncli queryroutes
now support the--route_hints
flag to support routing through private channels. -
The
lncli fwdinghistory
command now supports two new flags:--incoming_chan_ids
and--outgoing_chan_ids
. These filters allows to query forwarding events for specific channels.
Improvements
Functional Updates
- Graph Store SQL implementation and migration project:
- Introduce an abstract graph store interface.
- Start validating that byte blobs at the end of gossip messages are valid TLV streams.
- Various preparations of the graph code before the SQL implementation is added.
- Only fetch required fields during graph cache population.
- Add graph schemas, queries and CRUD:
- Add graph SQL migration logic:
RPC Updates
-
Previously the
RoutingPolicy
would return the inbound fee record in itsCustomRecords
field, which is duplicated info as it's already presented in fieldsInboundFeeBaseMsat
andInboundFeeRateMilliMsat
. This is now fixed, the affected RPCs areSubscribeChannelGraph
,GetChanInfo
,GetNodeInfo
andDescribeGraph
. -
Fix a bug where the
GetChanInfo
was not returning the correct gRPC status code in the cases where the channel is unknown to the node. The same is done forLookupInvoice
for the case where the DB is kvdb backed and no invoices have yet been added to the database.
lncli Updates
- Previously, users could only specify one
outgoing_chan_id
when calling thelncli queryroutes
or the QueryRoutes RPC. With this change, multipleoutgoing_chan_id
can be passed during the call.
Code Health
-
Increase itest coverage for payments. Now the payment address is mandatory for the writer and reader of a payment request.
-
Refactored
channelLink
to improve readability and maintainability of the code.
Breaking Changes
Performance Improvements
Deprecations
⚠️ Warning: The following RPCs will be removed in release version 0.21:
Deprecated RPC Method | REST Equivalent | HTTP Method | Path | Replaced By |
---|---|---|---|---|
lnrpc.SendToRoute routerrpc.SendToRoute |
❌ (No direct REST equivalent) | — | — | routerrpc.SendToRouteV2 |
lnrpc.SendPayment routerrpc.SendPayment |
✅ | POST |
/v1/channels/transaction-stream |
routerrpc.SendPaymentV2 |
lnrpc.SendToRouteSync |
✅ | POST |
/v1/channels/transactions/route |
routerrpc.SendToRouteV2 |
lnrpc.SendPaymentSync |
✅ | POST |
/v1/channels/transactions |
routerrpc.SendPaymentV2 |
router.TrackPayment |
❌ (No direct REST equivalent) | — | — | routerrpc.TrackPaymentV2 |
🚨 Users are strongly encouraged to transition to the new V2 methods before release 0.21 to ensure compatibility:
New RPC Method | REST Equivalent | HTTP Method | Path |
---|---|---|---|
routerrpc.SendToRouteV2 |
✅ | POST |
/v2/router/route/send |
routerrpc.SendPaymentV2 |
✅ | POST |
/v2/router/send |
routerrpc.TrackPaymentV2 |
✅ | GET |
/v2/router/track/{payment_hash} |
- We are deprecating
OutgoingChanId
in favour ofOutgoingChanIds
in theQueryRoutes
RPC. This transition allows us to specify more than one outgoing channel the pathfinder should use when finding a route.
Technical and Architectural Updates
BOLT Spec Updates
-
Explicitly define the inbound fee TLV record on the
channel_update
message and handle it explicitly throughout the code base instead of extracting it from the TLV stream at various call-sites. -
Require invoices to include a payment address or blinded paths to comply with updated BOLT 11 specifications before sending payments.
Testing
- Previously, automatic peer bootstrapping was disabled for simnet, signet and
regtest networks even if the
--nobootstrap
flag was not set. This automatic disabling has now been removed meaning that any test network scripts that rely on bootstrapping being disabled will need to explicitly define the--nobootstrap
flag. Bootstrapping will now also be deterministic on local test networks so that bootstrapping behaviour can be tested for.
Database
Code Health
Tooling and Documentation
Contributors (Alphabetical Order)
- Abdulkbk
- Boris Nagaev
- Elle Mouton
- Erick Cestari
- Funyug
- Mohamed Awnallah
- Pins
- Torkel Rogstad
- Yong Yu
- Ziggie