/ docs / release-notes / release-notes-0.19.0.md
release-notes-0.19.0.md
  1  # Release Notes
  2  - [Bug Fixes](#bug-fixes)
  3  - [New Features](#new-features)
  4      - [Functional Enhancements](#functional-enhancements)
  5      - [RPC Additions](#rpc-additions)
  6      - [lncli Additions](#lncli-additions)
  7  - [Improvements](#improvements)
  8      - [Functional Updates](#functional-updates)
  9      - [RPC Updates](#rpc-updates)
 10      - [lncli Updates](#lncli-updates)
 11      - [Breaking Changes](#breaking-changes)
 12      - [Performance Improvements](#performance-improvements)
 13      - [Deprecations](#deprecations)
 14  - [Technical and Architectural Updates](#technical-and-architectural-updates)
 15      - [BOLT Spec Updates](#bolt-spec-updates)
 16      - [Testing](#testing)
 17      - [Database](#database)
 18      - [Code Health](#code-health)
 19      - [Tooling and Documentation](#tooling-and-documentation)
 20  
 21  # Bug Fixes
 22  
 23  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/8857) to correctly 
 24    propagate mission control and debug level config values to the main LND config
 25    struct so that the GetDebugInfo response is accurate.
 26    
 27  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9033) where we
 28    would not signal an error when trying to bump a non-anchor channel but
 29    instead report a successful cpfp registration although no fee bumping is
 30    possible for non-anchor channels anyways.
 31  
 32  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9269) where a
 33    negative fee limit for `SendPaymentV2` would lead to omitting the fee limit
 34    check.
 35  
 36  * [Use the required route blinding 
 37    feature-bit](https://github.com/lightningnetwork/lnd/pull/9143) for invoices 
 38    containing blinded paths.
 39  
 40  * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/9137) that prevented
 41    a graceful shutdown of LND during the main chain backend sync check in certain
 42    cases.
 43    
 44  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9068) where dust
 45    htlcs although not being able to be resolved onchain were not canceled
 46    back before the commitment tx was confirmed causing potentially force closes
 47    of the incoming channel.
 48  
 49  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9249) found in the
 50    mission control store that can block the shutdown process of LND.
 51  
 52  * Make sure the RPC clients used to access the chain backend are [properly
 53    shutdown](https://github.com/lightningnetwork/lnd/pull/9261).
 54  
 55  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9275) where the
 56    peer may block the shutdown process of lnd.
 57  
 58  * [Fixed a case](https://github.com/lightningnetwork/lnd/pull/9258) where the
 59    confirmation notification may be missed.
 60    
 61  * [Make the contract resolutions for the channel arbitrator optional](
 62    https://github.com/lightningnetwork/lnd/pull/9253)
 63  
 64  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9322) that caused
 65    estimateroutefee to ignore the default payment timeout.
 66  
 67  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9433) that caused 
 68    `estimateroutefee` to assume probing an LSP when given an invoice with a route 
 69    hint containing a public channel to the destination.
 70  
 71  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9634) that caused
 72    lnd to crash due to a nil pointer dereference when `estimateroutefee` is
 73    called for a payment request that contains a zero amount.
 74  
 75  * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/9474) where LND would
 76    fail to persist (and hence, propagate) node announcements containing address 
 77    types (such as a DNS hostname) unknown to LND.
 78  
 79  * [Fixed an edge case](https://github.com/lightningnetwork/lnd/pull/9150) where
 80    the payment may become stuck if the invoice times out while the node
 81    restarts, for details check [this
 82    issue](https://github.com/lightningnetwork/lnd/issues/8975#issuecomment-2270528222).
 83  
 84  * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/9573) where 
 85    processing duplicate ChannelUpdates from different peers in quick succession 
 86    could lead to our ChannelUpdate rate limiting logic being prematurely 
 87    triggered.
 88  
 89  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9595) where the
 90    initial graph sync query may be failed due to inconsistent state.
 91  
 92  * [The aux bandwidth calculation was fixed for non-asset
 93    channels](https://github.com/lightningnetwork/lnd/pull/9502).
 94  
 95  * [Pass through](https://github.com/lightningnetwork/lnd/pull/9601) the unused
 96    `MaxPeers` configuration variable for neutrino mode.
 97    
 98  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9543) where
 99    the payment might have been failed more than once and therefore overwriting
100    the failure reason and notifying the `SubscribeAllPayments` subscribers more
101    than once.
102  
103  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9609) a bug that may
104    cause `listunspent` to give inaccurate wallet UTXOs and
105    [`locked_balance`](https://github.com/lightningnetwork/lnd/pull/9693).
106  
107  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9626) a bug where a
108  keysend payment would not fail properly and only resolve after restart. Now
109  keysend payment validation is stricter.
110  
111  * [Make sure](https://github.com/lightningnetwork/lnd/pull/9643) the startup
112    process of the node won't be interrupted if a non-fatal error is returned from
113    the subsystems.
114  
115  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9703) a possible panic
116    when reloading legacy inflight payments which don't have the MPP feature.
117  
118  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9746) a possible panic
119  when running LND with an aux component injected (custom channels).
120  
121  * [Fixed a bug](https://github.com/lightningnetwork/lnd/pull/9750): if a Taproot
122    address is added to LND using the `ImportTapscript` RPC, LND previously failed
123    to perform a cooperative close to that address.
124  
125  * [Bimodal pathfinding probability
126    improvements](https://github.com/lightningnetwork/lnd/pull/8330). A fallback
127    probability is used if the bimodal model is not applicable. Fixes are added
128    such that the probability is evaluated quicker and to be more accurate in
129    outdated scenarios.
130  
131  * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/9798) that could
132    result in a new topology client missing a channel-close notifications. 
133  
134  # New Features
135  
136  * Add support for [archiving channel backup](https://github.com/lightningnetwork/lnd/pull/9232)
137   in a designated folder which allows for easy referencing in the future. A new 
138   config is added `disable-backup-archive`, with default set to false, to 
139   determine if previous channel backups should be archived or not.
140  
141  ## Protocol Updates
142  
143  * `lnd` now [supports the new RBF cooperative close
144    flow](https://github.com/lightningnetwork/lnd/pull/9610). This flow is based
145    on a new protocol `option_simple_close` defined with the bolt proposal
146    [1205](https://github.com/lightning/bolts/pull/1205)
147    Unlike the old flow, this version now uses RBF to enable either side to
148    increase their fee rate using their _own_ channel funds.
149    This replaces the old "negotiation" logic that could fail, with a version
150    where either side can increase the fee on their coop close transaction using
151    their channel balance.
152  
153    Channel peers must support the `option_simple_close` for this new protocol to
154    work. This new feature can be activated with a new config flag:
155    `--protocol.rbf-coop-close`.
156  
157    With this new co-op close type, users can issue multiple `lncli closechannnel`
158    commands with increasing fee rates to use RBF to bump an existing signed co-op
159    close transaction.
160  
161    Please note this feature is not compatible with older LND versions.
162    When closing channels with peers running older versions, fee bumping the
163    closing transaction would be done via CPFP.
164  
165    Regarding interoperation cross implementations, it currently only works
166    with Eclair v0.12.0 or up. Interop with other implementations should work 
167    as they roll out support for this protocol.
168  
169    This protocol currently does not support the channel types:
170    - Taproot channels
171    - Taproot asset channels
172  
173  * [Support](https://github.com/lightningnetwork/lnd/pull/8390) for 
174    [experimental endorsement](https://github.com/lightning/blips/pull/27) 
175    signal relay was added. This signal has *no impact* on routing, and
176    is deployed experimentally to assist ongoing channel jamming research.
177  
178  * Add initial support for [quiescence](https://github.com/lightningnetwork/lnd/pull/8270).
179    This is a protocol gadget required for Dynamic Commitments and Splicing that
180    will be added later.
181  
182  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9424) a case where the
183    initial historical sync may be blocked due to a race condition in handling the
184    syncer's internal state.
185  
186  * [The max fee rate](https://github.com/lightningnetwork/lnd/pull/9491) is now
187    respected when a coop close is initiated. Before the max fee rate would only
188    be effective for the remote party in the negotiation.
189  
190  ## Functional Enhancements
191  * [Add ability](https://github.com/lightningnetwork/lnd/pull/8998) to paginate 
192   wallet transactions.
193  
194  * [Make](https://github.com/lightningnetwork/lnd/pull/9562)
195    `MaxWaitNumBlocksFundingConf` configurable, allowing integration/development
196    tests to set a lower value for faster funding confirmation timeout while
197    keeping the default of 2016 blocks for production stability.
198  
199  * Previously when sweeping inputs, the sweeper will wait until the specified
200    budget can be covered by the inputs, which could cause the sweep to be
201    delayed, and the sweeping tx ends up using large fees. This is now
202    [changed](https://github.com/lightningnetwork/lnd/pull/9627) so the sweeper
203    will always attempt the sweep as long as the budget can be partially covered.
204  
205  * [Add](https://github.com/lightningnetwork/lnd/pull/9603) validation to ensure
206    that MPP parameters are compatible with the payment amount before attempting
207    the payment. This prevents payments from entering a path finding loop that
208    would eventually timeout.
209  
210  ## RPC Additions
211  
212  * [Add a new rpc endpoint](https://github.com/lightningnetwork/lnd/pull/8843)
213    `BumpForceCloseFee` which moves the functionality solely available in the
214    `lncli` to LND hence making it more universal.
215  
216  * [The `walletrpc.FundPsbt` RPC method now has an option to specify the fee as
217    `sat_per_kw` which allows for more precise
218    fees](https://github.com/lightningnetwork/lnd/pull/9013).
219  
220  * [The `walletrpc.FundPsbt` method now has a new option to specify the maximum
221    fee to output amounts ratio.](https://github.com/lightningnetwork/lnd/pull/8600)
222  
223  * When returning the response from list invoices RPC, the `lnrpc.Invoice.Htlcs`
224    are now [sorted](https://github.com/lightningnetwork/lnd/pull/9337) based on
225    the `InvoiceHTLC.HtlcIndex`.
226  
227  * [routerrpc.SendPaymentV2](https://github.com/lightningnetwork/lnd/pull/9359)
228    RPC method now applies a default timeout of 60 seconds when the
229    `timeout_seconds` field is not set or is explicitly set to 0.
230  
231  * [`lnrpc.ClosedChannels` now also includes the `custom_channel_data` used by
232    custom channels](https://github.com/lightningnetwork/lnd/pull/9504).
233  
234  ## lncli Additions
235  
236  * [A pre-generated macaroon root key can now be specified in `lncli create` and
237    `lncli createwatchonly`](https://github.com/lightningnetwork/lnd/pull/9172) to
238    allow for deterministic macaroon generation.
239  
240  * [The `lncli wallet fundpsbt` sub command now has a `--sat_per_kw` flag to
241    specify more precise fee
242    rates](https://github.com/lightningnetwork/lnd/pull/9013).
243  
244  * The `lncli wallet fundpsbt` command now has a [`--max_fee_ratio` argument to
245    specify the max fees to output amounts ratio.](https://github.com/lightningnetwork/lnd/pull/8600)
246  
247  * [Enhance](https://github.com/lightningnetwork/lnd/pull/9390) the
248    `lncli listchannels` and `lncli closedchannels` output by adding the human
249    readable short channel id and the channel id defined in BOLT02. Moreover
250    change the misnomer of `chan_id` which was describing the short channel
251    id to `scid` to represent what it really is.
252  
253  * [In the coop close](https://github.com/lightningnetwork/lnd/pull/9491) case
254    we always initiate the cooperative close flow even if there are HTLCs active
255    on the channel. LND will disable the channel for new HTLCs and kick off the
256    cooperative close flow automatically when the channel has no HTLCs left.
257  
258  * [A new macaroon constraint](https://github.com/lightningnetwork/lnd/pull/9546)
259    to allow for restriction of access based on an IP range. Prior to this only
260    specific IPs could be allowed or denied.
261  
262  * A [command was created](https://github.com/lightningnetwork/lnd/pull/9781) to
263    load mission control data generated by `lncli querymc`. `loadmc` [also
264    accepts](https://github.com/lightningnetwork/lnd/pull/9783) a flag
265    `skip_confirmation` to make the command scriptable.
266  
267  # Improvements
268  ## Functional Updates
269  
270  * [Allow](https://github.com/lightningnetwork/lnd/pull/9017) the compression of 
271    logs during rotation with ZSTD via the `logging.file.compressor` startup 
272    argument.
273  
274  * The SCB file now [contains more data](https://github.com/lightningnetwork/lnd/pull/8183)
275    that enables a last resort rescue for certain cases where the peer is no longer
276    around.
277  
278  * LND updates channel.backup file at shutdown time.
279  
280  * A new subsystem `chainio` is
281    [introduced](https://github.com/lightningnetwork/lnd/pull/9315) to make sure
282    the subsystems are in sync with their current best block. Previously, when
283    resolving a force close channel, the sweeping of HTLCs may be delayed for one
284    or two blocks due to block heights not in sync in the relevant subsystems
285    (`ChainArbitrator`, `UtxoSweeper` and `TxPublisher`), causing a slight
286    inaccuracy when deciding the sweeping feerate and urgency. With `chainio`,
287    this is now fixed as these subsystems now share the same view on the best
288    block. Check
289    [here](https://github.com/lightningnetwork/lnd/blob/master/chainio/README.md)
290    to learn more.
291    
292  * [The sweeper](https://github.com/lightningnetwork/lnd/pull/9274) does now also
293   use the configured budget values for HTLCs (first level sweep) in parcticular
294   `--sweeper.budget.deadlinehtlcratio` and `--sweeper.budget.deadlinehtlc`.
295  
296  * When deciding whether `lnd` is synced to chain, the current height from the
297    blockbeat dispatcher is now also [taken into
298    consideration](https://github.com/lightningnetwork/lnd/pull/9501).
299    
300  * [The server](https://github.com/lightningnetwork/lnd/pull/9458) now allocates
301   restricted slots for certain peers. This is configured by --num-restricted-slots.
302  
303  * [The bitcoin `testnet4` test network is now also
304    supported](https://github.com/lightningnetwork/lnd/pull/9620).
305  
306  * [remove x/exp/maps dependency](https://github.com/lightningnetwork/lnd/pull/9621)
307  
308  * [Add a new configuration option](https://github.com/lightningnetwork/lnd/pull/9801)
309    `--no-disconnect-on-pong-failure` (defaulting to false) to control whether a
310    peer is disconnected if a pong message is not received in time or is mismatched.
311  
312  ## RPC Updates
313  
314  * Some RPCs that previously just returned an empty response message now at least
315    return [a short status
316    message](https://github.com/lightningnetwork/lnd/pull/7762) to help command
317    line users to better understand that the command was executed successfully and
318    something was executed or initiated to run in the background. The following
319    CLI commands now don't just return an empty response (`{}`) anymore:
320      * `lncli wallet releaseoutput` (`WalletKit.ReleaseOutput` RPC)
321      * `lncli wallet accounts import-pubkey` (`WalletKit.ImportPublicKey` RPC)
322      * `lncli wallet labeltx` (`WalletKit.LabelTransaction` RPC)
323      * `lncli sendcustom` (`Lightning.SendCustomMessage` RPC)
324      * `lncli connect` (`Lightning.ConnectPeer` RPC)
325      * `lncli disconnect` (`Lightning.DisconnectPeer` RPC)
326      * `lncli stop` (`Lightning.Stop` RPC)
327      * `lncli deletepayments` (`Lightning.DeleteAllPaymentsResponse` RPC)
328      * `lncli abandonchannel` (`Lightning.AbandonChannel` RPC)
329      * `lncli restorechanbackup` (`Lightning.RestoreChannelBackups` RPC)
330      * `lncli verifychanbackup` (`Lightning.VerifyChanBackup` RPC)
331  
332  * The `ForwardInterceptor`'s `MODIFY` option will
333    [merge](https://github.com/lightningnetwork/lnd/pull/9240) any custom
334    range TLVs provided with the existing set of records on the HTLC,
335    overwriting any conflicting values with those supplied by the API.
336  
337  * [Make](https://github.com/lightningnetwork/lnd/pull/9405) the param
338  `ProofMatureDelta` used in gossip to be configurable via
339  `--gossip.announcement-conf`, with a default value of 6.
340  
341  * [Added a boolean field
342    `LockedIn`](https://github.com/lightningnetwork/lnd/pull/9602) in
343    `lnrpc.HTLC`. This field is used to indicate whether a given HTLC has been
344    locked in by the remote peer.
345  
346  * [Allow custom lock ID and
347    duration in FundPsbt](https://github.com/lightningnetwork/lnd/pull/9724) RPC.
348   
349  * Expand the [lnrpc.RPCMiddlewareRequest](https://github.com/lightningnetwork/lnd/pull/9739) 
350    to include any [gRPC metadata](https://grpc.io/docs/guides/metadata) pairs 
351    that are passed to the initial request via the `context.Context`.
352  
353  * Previously when calling `PendingSweeps`, if the outputs being swept had a
354    locktime in the future, they would be filtered out. This is now
355    [changed](https://github.com/lightningnetwork/lnd/pull/9772) such that all
356    outputs registered in the sweeper will be returned in the RPC response
357    regardless of their locktime, which enables users to plan ahead about upcoming
358    sweeps and implement customized aggregation logic. A new field
359    `MaturityHeight` is added to `PendingSweep` to show the absolute locktime
360    value.
361  
362  ## lncli Updates
363  
364  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9605) a case where
365    inaccurate error message is displayed. Previously, when the `lnd` is built
366    without with a given RPC service yet the `cli` does, running a command to
367    access the RPC server would give an error saying the wallet is encrypted. This
368    is now fixed to show specifically which RPC server is missing.
369  
370  * [Enhanced](https://github.com/lightningnetwork/lnd/pull/9558)  
371    `listchaintxns` command with improved input validation, robust error handling,
372    tests, and updated documentation.
373  
374  ## Code Health
375  
376  * [Add retry logic](https://github.com/lightningnetwork/lnd/pull/8381) for
377    watchtower block fetching with a max number of attempts and exponential
378    back-off.
379  
380  * [Moved](https://github.com/lightningnetwork/lnd/pull/9138) profile related
381    config settings to its own dedicated group. The old ones still work but will
382    be removed in a future release.
383   
384  * [Update to use structured 
385    logging](https://github.com/lightningnetwork/lnd/pull/9083). This also 
386    introduces a new `--logging.console.disable` option to disable logs being 
387    written to stdout and a new `--logging.file.disable` option to disable writing 
388    logs to the standard log file. It also adds `--logging.console.no-timestamps`
389    and `--logging.file.no-timestamps` which can be used to omit timestamps in
390    log messages for the respective loggers. The new `--logging.console.call-site`
391    and `--logging.file.call-site` options can be used to include the call-site of
392    a log line. The options for this include "off" (default), "short" (source file
393    name and line number) and "long" (full path to source file and line number). 
394    Finally, the new `--logging.console.style` option can be used under the `dev` 
395    build tag to add styling to console logging. 
396  
397  * [Start adding a commit hash fingerprint to log lines by 
398    default](https://github.com/lightningnetwork/lnd/pull/9314). This can be 
399    disabled with the new `--logging.no-commit-hash"` option. Note that this extra
400    info will currently only appear in a few log lines, but more will be added in 
401    future as the structured logging change is propagated throughout LND.
402   
403  * [Add max files and max file size](https://github.com/lightningnetwork/lnd/pull/9233) 
404    options to the `logging` config namespace under new `--logging.file.max-files` 
405    and `--logging.files.max-file-size` options. The old options (`--maxlogfiles` 
406    and `--maxlogfilesize`) will still work but deprecation notices have been 
407    added and they will be removed in a future release. The defaults values for 
408    these options have also been increased from max 3 log files to 10 and from 
409    max 10 MB to 20 MB. 
410  
411  * Refactored the `ValidationBarrier` to use
412    [set-based dependency tracking](https://github.com/lightningnetwork/lnd/pull/9241).
413   
414  * [Deprecate `dust-threshold`
415  config option](https://github.com/lightningnetwork/lnd/pull/9182) and introduce
416  a new option `channel-max-fee-exposure` which is unambiguous in its description.
417  The underlying functionality between those two options remain the same.
418  
419  * Graph abstraction work:
420      - [Abstract autopilot access](https://github.com/lightningnetwork/lnd/pull/9480)
421      - [Abstract invoicerpc server access](https://github.com/lightningnetwork/lnd/pull/9516)
422      - [Refactor to hide DB transactions](https://github.com/lightningnetwork/lnd/pull/9513)
423      - Move the [graph cache out of the graph
424        CRUD](https://github.com/lightningnetwork/lnd/pull/9544) layer.
425      - Move [topology
426        subscription](https://github.com/lightningnetwork/lnd/pull/9577) and
427        notification handling from the graph.Builder to the ChannelGraph.
428  
429  * [Golang was updated to
430    `v1.22.11`](https://github.com/lightningnetwork/lnd/pull/9462). 
431  
432  * Move funding transaction validation to the gossiper
433     [1](https://github.com/lightningnetwork/lnd/pull/9476)
434     [2](https://github.com/lightningnetwork/lnd/pull/9477)
435     [3](https://github.com/lightningnetwork/lnd/pull/9478).
436  
437  * [CI has been updated to build against
438    `bitcoind 29.0`](https://github.com/lightningnetwork/lnd/pull/9628) to ensure
439    compatibility.
440  
441  ## Breaking Changes
442  
443  * ⚠️ **Breaking Change (lncli only)**: The `lncli listchannels` and
444   `lncli closedchannels` command output has been updated to fix a misnomer in the
445    field names. The field previously named `chan_id` (which actually contained
446    the short channel ID) has been renamed to `scid` to correctly represent its
447    content. The `chan_id` field now contains the actual channel ID as defined
448    in BOLT02. This is a breaking change for any automation scripts that parse
449    the `chan_id` field from the command output. Please update your scripts to
450    use the new `scid` field name if you were previously using the 
451    short channel ID value. For more details, see 
452    the [lncli Additions](#lncli-additions) section.
453  
454    >**Note**: This change only affects the `lncli` command output.
455    >The RPC responses for `listchannels` and `closedchannels` remain unchanged.
456  
457  ## Performance Improvements
458  
459  * Users can now [limit the total amount of
460  bandwidth](https://github.com/lightningnetwork/lnd/pull/9607) that will be allocated to
461  outbound gossip traffic via two new args: `--gossip.msg-rate-bytes` and
462  `--gossip.msg-rate-burst`. The burst value should be set to the largest amount
463  of bytes that can be transmitted in a go without rate limiting, and the rate to
464  the on going rate we'll permit.
465  
466  * Log rotation can now use ZSTD
467  
468  * [Remove redundant 
469    iteration](https://github.com/lightningnetwork/lnd/pull/9496) over a node's 
470    persisted channels when updating the graph cache with a new node or node 
471    update.
472  
473  ## Deprecations
474  
475  ### ⚠️ **Warning:** The following RPCs will be removed in release version **0.21**:
476  
477  | Deprecated RPC Method | REST Equivalent | HTTP Method | Path | Replaced By |
478  |----------------------|----------------|-------------|------------------------------|------------------|
479  | [`lnrpc.SendToRoute`](https://lightning.engineering/api-docs/api/lnd/lightning/send-to-route/index.html) <br> [`routerrpc.SendToRoute`](https://lightning.engineering/api-docs/api/lnd/router/send-to-route/) | ❌ (No direct REST equivalent) | — | — | [`routerrpc.SendToRouteV2`](https://lightning.engineering/api-docs/api/lnd/router/send-to-route-v2/) |
480  | [`lnrpc.SendPayment`](https://lightning.engineering/api-docs/api/lnd/lightning/send-payment/) <br> [`routerrpc.SendPayment`](https://lightning.engineering/api-docs/api/lnd/router/send-payment/) | ✅ | `POST` | `/v1/channels/transaction-stream` | [`routerrpc.SendPaymentV2`](https://lightning.engineering/api-docs/api/lnd/router/send-payment-v2/index.html) |
481  | [`lnrpc.SendToRouteSync`](https://lightning.engineering/api-docs/api/lnd/lightning/send-to-route-sync/index.html) | ✅ | `POST` | `/v1/channels/transactions/route` | [`routerrpc.SendToRouteV2`](https://lightning.engineering/api-docs/api/lnd/router/send-to-route-v2/) |
482  | [`lnrpc.SendPaymentSync`](https://lightning.engineering/api-docs/api/lnd/lightning/send-payment-sync/index.html) | ✅ | `POST` | `/v1/channels/transactions` | [`routerrpc.SendPaymentV2`](https://lightning.engineering/api-docs/api/lnd/router/send-payment-v2/index.html) |
483  | [`router.TrackPayment`](https://lightning.engineering/api-docs/api/lnd/router/track-payment/index.html) | ❌ (No direct REST equivalent) | — | — | [`routerrpc.TrackPaymentV2`](https://lightning.engineering/api-docs/api/lnd/router/track-payment-v2/) |
484  
485  🚨 **Users are strongly encouraged** to transition to the new **V2 methods** before release **0.21** to ensure compatibility:
486  
487  | New RPC Method | REST Equivalent | HTTP Method | Path |
488  |---------------|----------------|-------------|------------------------|
489  | [`routerrpc.SendToRouteV2`](https://lightning.engineering/api-docs/api/lnd/router/send-to-route-v2/) | ✅ | `POST` | `/v2/router/route/send` |
490  | [`routerrpc.SendPaymentV2`](https://lightning.engineering/api-docs/api/lnd/router/send-payment-v2/index.html) | ✅ | `POST` | `/v2/router/send` |
491  | [`routerrpc.TrackPaymentV2`](https://lightning.engineering/api-docs/api/lnd/router/track-payment-v2/) | ✅ | `GET` | `/v2/router/track/{payment_hash}` |
492  
493  # Technical and Architectural Updates
494  ## BOLT Spec Updates
495  
496  * Add new [lnwire](https://github.com/lightningnetwork/lnd/pull/8044) messages
497    for the Gossip 1.75 protocol.
498  
499  ## Testing
500  
501  * LND [uses](https://github.com/lightningnetwork/lnd/pull/9257) the feerate
502    estimator provided by bitcoind or btcd in regtest and simnet modes instead of
503    static fee estimator if feeurl is not provided.
504  
505  * The integration tests CI have been optimized to run faster and all flakes are
506    now documented and
507    [fixed](https://github.com/lightningnetwork/lnd/pull/9368).
508  
509  * [Fixed](https://github.com/lightningnetwork/lnd/pull/9549) a long standing
510    unit test flake found in the `chainntnfs/bitcoindnotify` package.
511   
512  * Add a new CI-step to do some basic [backwards compatibility 
513    testing](https://github.com/lightningnetwork/lnd/pull/9540) for each PR. 
514  
515  * [Fix](https://github.com/lightningnetwork/lnd/pull/9574) an integration test 
516    flake that could lead to a "close of a closed channel" panic.
517  
518  ## Database
519  
520  * [Migrate the mission control
521    store](https://github.com/lightningnetwork/lnd/pull/8911) to use a more
522    minimal encoding for payment attempt routes as well as use [pure TLV
523    encoding](https://github.com/lightningnetwork/lnd/pull/9167). [A
524    fix](https://github.com/lightningnetwork/lnd/pull/9770) was added to handle
525    nil routing failure messages and the serialization was optimized.
526  
527  * [Migrate the mission control 
528    store](https://github.com/lightningnetwork/lnd/pull/9001) so that results are 
529    namespaced. All existing results are written to the "default" namespace.
530  
531  * [Migrate KV invoices to
532    SQL](https://github.com/lightningnetwork/lnd/pull/8831) as part of a larger
533    effort to support SQL databases natively in LND.
534  
535  * [Set invoice bucket
536    ](https://github.com/lightningnetwork/lnd/pull/9438) tombstone after native 
537    SQL migration.
538  
539  * [Rename of skip migration
540    flag](https://github.com/lightningnetwork/lnd/pull/9606/) for future
541    compatibility.
542  
543  * [Establish a base DB version even if it is not yet
544    tracked](https://github.com/lightningnetwork/lnd/pull/9647).
545  
546  * [When running with neutrino as a backend with the kv-db backend `postgres`
547  selected use postgres for the neutrino.db store](https://github.com/lightningnetwork/lnd/pull/9674).
548  
549  * [Add the global lock back to the wallet db for the postgres backend](https://github.com/lightningnetwork/lnd/pull/9723).
550  
551  ## Code Health
552  
553  * A code refactor that [moves all the graph related DB code out of the 
554    `channeldb` package](https://github.com/lightningnetwork/lnd/pull/9236) and 
555    into the `graph/db` package.
556   
557  * [Improve the API](https://github.com/lightningnetwork/lnd/pull/9341) of the 
558    [GoroutineManager](https://github.com/lightningnetwork/lnd/pull/9141) so that 
559    its constructor does not take a context.
560  
561  * [Update protofsm 
562   StateMachine](https://github.com/lightningnetwork/lnd/pull/9342) to use the 
563    new GoroutineManager API along with structured logging.
564  
565  * A minor [refactor](https://github.com/lightningnetwork/lnd/pull/9446) is done
566    to the sweeper to improve code quality, with a renaming of the internal state
567    (`Failed` -> `Fatal`) used by the inputs tracked in the sweeper.
568  
569  * A code refactor that [replaces min/max helpers with built-in min/max
570    functions](https://github.com/lightningnetwork/lnd/pull/9451).
571  
572  * [Unified](https://github.com/lightningnetwork/lnd/pull/9447) the monitoring
573    inputs spending logic in the sweeper so it can properly handle missing inputs
574    and recover from restart.
575  
576  * A code refactor to [use maps.Copy instead of manually copying map
577     elements](https://github.com/lightningnetwork/lnd/pull/9630).
578  
579  
580  ## Tooling and Documentation
581  
582  * [Improved `lncli create` command help text](https://github.com/lightningnetwork/lnd/pull/9077)
583    by replacing the word `argument` with `input` in the command description,
584    clarifying that the command requires interactive inputs rather than arguments.
585  
586  - [Fixed a few misspellings](https://github.com/lightningnetwork/lnd/pull/9290)
587    of "broadcast" in the code base, specifically the `lncli peers updatenodeannouncement`
588    command documentation.
589  
590  # Contributors (Alphabetical Order)
591  
592  * Abdullahi Yunus
593  * Alex Akselrod
594  * alingse
595  * András Bánki-Horváth
596  * Animesh Bilthare
597  * bitromortac
598  * Boris Nagaev
599  * Calvin Zachman
600  * Carla Kirk-Cohen
601  * CharlieZKSmith
602  * chloefeal
603  * chuangjinglu
604  * Elle Mouton
605  * Eng Zer Jun
606  * Eugene Siegel
607  * feelancer21
608  * ffranr
609  * fuyangpengqi
610  * George Tsagkarelis
611  * Gijs van Dam
612  * Gustavo Stingelin
613  * hieblmi
614  * Jesse de Wit
615  * jike
616  * JoeGruff
617  * Jonathan Harvey-Buschel
618  * Keagan McClelland
619  * kornpow
620  * Leonhard Weese
621  * longhutianjie
622  * Matt Morehouse
623  * Mohamed Awnallah
624  * myxmaster
625  * Nishant Bansal
626  * Olaoluwa Osuntokun
627  * Oliver Gugger
628  * Oren
629  * peicuiping
630  * Pins
631  * planetBoy
632  * sputn1ck
633  * Suheb
634  * thirdkeyword
635  * tlindi
636  * Viktor Tigerström
637  * w3irdrobot
638  * wizard
639  * xixishidibei
640  * Yong Yu
641  * z017
642  * Ziggie