When iterating edges, pathfinding checks early whether using an edge would violate the requested total fee limit for a route. This check is done on the net amount (an amount the inbound fee is calculated with). However, a possible next hop's fee discount leads to a reduction in fees and as such using the net amount leads to assuming a higher cumulative fee than the route really has, excluding the path erroneously. We perform the fee limit check on the amount to send, which includes both inbound and outbound fees. This should be possible as the first hop's outbound fee is zero and therefore doesn't have to be checked in the end.
5.8 KiB
Release Notes
Bug Fixes
-
closedchannels
now successfully reports settled balances even if the delivery address is set to an address that LND does not control. -
SendPaymentV2 now cancels the background payment loop if the user cancels the stream context.
-
Fixed a bug that caused LND to read the config only partially and continued with the startup.
-
Avoids duplicate wallet addresses being created when multiple RPC calls are made concurrently.
-
Fixed a bug that caused LND to use a default fee rate for the batch channel opening flow.
-
The fee limit for payments was made compatible with inbound fees.
New Features
Functional Enhancements
RPC Additions
- The SendPaymentRequest
message receives a new flag
cancelable
which indicates if the payment loop is cancelable. The cancellation can either occur manually by cancelling the send payment stream context, or automatically at the end of the timeout period if the user providedtimeout_seconds
.
lncli Additions
-
Added the
cltv_expiry
argument toaddinvoice
andaddholdinvoice
, allowing users to set themin_final_cltv_expiry_delta
. -
The
lncli wallet estimatefeerate
command returns the fee rate estimate for on-chain transactions in sat/kw and sat/vb to achieve a given confirmation target.
Improvements
Functional Updates
- A new field,
min_relay_feerate
, is now expected in the response from querying the external fee estimation URL. The new response should have the format,
All units are{ "fee_by_block_target": { "2": 5076, "3": 4228, "26": 4200 }, "min_relay_feerate": 1000 }
sats/kvB
. If the new fieldmin_relay_feerate
is not set, the default floor feerate (1012 sats/kvB) will be used.
RPC Updates
-
xImportMissionControl
now accepts0
failure amounts. -
ChanInfoRequest
adds support for channel points.
lncli Updates
-
importmc
now accepts0
failure amounts. -
getchaninfo
now accepts a channel outpoint besides a channel id. -
Fixed how we parse the
--amp
flag when sending a payment specifying the payment request.
Code Health
Breaking Changes
Performance Improvements
- Mission Control Store improved performance during DB flushing stage.
Technical and Architectural Updates
BOLT Spec Updates
-
Start assuming that all hops used during path-finding and route construction support the TLV onion format.
-
Allow channel fundee to send a minimum confirmation depth of 0 for a non-zero-conf channel. We will still wait for the channel to have at least one confirmation and so the main change here is that we don't error out for such a case.
-
Groundwork in preparation for implementing route blinding receives.
-
Generate and send to an invoice with blinded paths. With this, the
--blind
flag can be used with thelncli addinvoice
command to instruct LND to include blinded paths in the invoice.
Testing
Database
-
Migrate incorrectly stored invoice expiry values. This migration only affects users of native SQL invoice database. Invoices with incorrect expiry values will be updated to 24-hour expiry, which is the default behavior in LND.
-
Fixed pagination issues in SQL invoicedb queries.
Code Health
- Move graph building and
maintaining duties from
the
routing.ChannelRouter
to the newgraph.Builder
sub-system and also remove thechanneldb.ChannelGraph
pointer from theChannelRouter
.
Tooling and Documentation
lntest.HarnessTest
no longer exposesMiner
instance. Instead, it's changed into a privateminer
instance and all mining related assertions are now only accessible via the harness.
Contributors (Alphabetical Order)
- Andras Banki-Horvath
- bitromortac
- Bufo
- Elle Mouton
- Matheus Degiovani
- Oliver Gugger
- Slyghtning
- Yong Yu
- Ziggie