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