release-notes-0.18.0.md
1 # Release Notes 2 - [Release Notes](#release-notes) 3 - [Bug Fixes](#bug-fixes) 4 - [New Features](#new-features) 5 - [Functional Enhancements](#functional-enhancements) 6 - [RPC Additions](#rpc-additions) 7 - [lncli Additions](#lncli-additions) 8 - [Improvements](#improvements) 9 - [Functional Updates](#functional-updates) 10 - [Tlv](#tlv) 11 - [Misc](#misc) 12 - [Logging](#logging) 13 - [RPC Updates](#rpc-updates) 14 - [lncli Updates](#lncli-updates) 15 - [Code Health](#code-health) 16 - [Breaking Changes](#breaking-changes) 17 - [Performance Improvements](#performance-improvements) 18 - [Technical and Architectural Updates](#technical-and-architectural-updates) 19 - [BOLT Spec Updates](#bolt-spec-updates) 20 - [Testing](#testing) 21 - [Database](#database) 22 - [Code Health](#code-health-1) 23 - [Tooling and Documentation](#tooling-and-documentation) 24 - [Contributors (Alphabetical Order)](#contributors-alphabetical-order) 25 26 # Bug Fixes 27 * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/8097) where 28 `sendcoins` command with `--sweepall` flag would not show the correct amount. 29 30 * [Fixed a potential case](https://github.com/lightningnetwork/lnd/pull/7824) 31 that when sweeping inputs with locktime, an unexpected lower fee rate is 32 applied. 33 34 * LND will now [enforce pong 35 responses](https://github.com/lightningnetwork/lnd/pull/7828) from its peers. 36 37 * [Fixed a possible unintended RBF 38 attempt](https://github.com/lightningnetwork/lnd/pull/8091) when sweeping new 39 inputs with retried ones. 40 41 * [Fixed](https://github.com/lightningnetwork/lnd/pull/7811) a case where `lnd` 42 might panic due to empty witness data found in a transaction. More details 43 can be found [here](https://github.com/bitcoin/bitcoin/issues/28730). 44 45 * [Fixed a case](https://github.com/lightningnetwork/lnd/pull/7503) where it's 46 possible a failed payment might be stuck in pending. 47 48 * [Ensure that a valid SCID](https://github.com/lightningnetwork/lnd/pull/8171) 49 is used when marking a zombie edge as live. 50 51 * [Remove sweep transactions of the 52 same exclusive group](https://github.com/lightningnetwork/lnd/pull/7800). 53 When using neutrino as a backend unconfirmed transactions have to be 54 removed from the wallet when a conflicting tx is confirmed. For other backends 55 these unconfirmed transactions are already removed. In addition, a new 56 `walletrpc` endpoint `RemoveTransaction` is introduced which let one easily 57 remove unconfirmed transaction manually. 58 59 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8096) a case where `lnd` 60 might dip below its channel reserve when HTLCs are added concurrently. A 61 fee buffer (additional balance) is now always kept on the local side ONLY 62 if the channel was opened locally. This is in accordance with the BOLT 02 63 specification and protects against sharp fee changes because there is always 64 this buffer which can be used to increase the commitment fee, and it also 65 protects against the case where HTLCs are added asynchronously resulting in 66 stuck channels. 67 68 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8377) a watchtower client 69 test flake that prevented new tasks from overflowing to disk. 70 71 * [Properly handle un-acked updates for exhausted watchtower 72 sessions](https://github.com/lightningnetwork/lnd/pull/8233). 73 74 * [Allow `shutdown`s while HTLCs are 75 in-flight](https://github.com/lightningnetwork/lnd/pull/8167). 76 This change fixes an issue where we would force-close channels when receiving 77 a `shutdown` message if there were currently HTLCs on the channel. After this 78 change, the shutdown procedure should be compliant with BOLT2 requirements. 79 80 * If HTLCs are in-flight at the same time that a `shutdown` is sent and then 81 a re-connect happens before the coop-close is completed we now [ensure that 82 we re-init the `shutdown` 83 exchange](https://github.com/lightningnetwork/lnd/pull/8464). 84 85 * The AMP struct in payment hops will [now be 86 populated](https://github.com/lightningnetwork/lnd/pull/7976) when the AMP TLV 87 is set. 88 89 * [Add Taproot witness types 90 to rpc](https://github.com/lightningnetwork/lnd/pull/8431). 91 92 * [Fixed](https://github.com/lightningnetwork/lnd/pull/7852) the payload size 93 calculation in our pathfinder because blinded hops introduced new tlv records. 94 95 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8432) a timestamp 96 precision issue when querying payments and invoices using the start and end 97 date filters. 98 99 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8496) an issue where 100 `locked_balance` is not updated in `WalletBalanceResponse` when outputs are 101 reserved for `OpenChannel` by using non-volatile leases instead of volatile 102 locks. 103 104 * [Fixed](https://github.com/lightningnetwork/lnd/pull/7805) a case where `lnd` 105 might propose a low fee rate for the channel (when initiator) due to the 106 mempool not having enough data yet or the channel might be drained locally 107 which with the default fee allocation in place will eventually lead to the 108 downsizing to the fee floor (1 sat/vByte) in the worst case. 109 110 * [Removed](https://github.com/lightningnetwork/lnd/pull/8577) some unreachable 111 code. 112 113 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8609) a function 114 call where arguments were swapped. 115 116 * [Addresses derived from imported watch-only accounts now correctly include 117 their master key's 118 fingerprint](https://github.com/lightningnetwork/lnd/pull/8630). 119 120 * [Fixed a bug in `btcd` that caused an incompatibility with 121 `bitcoind v27.0`](https://github.com/lightningnetwork/lnd/pull/8573). 122 123 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8545) UTXO selection 124 for the internal channel funding flow (Single and Batch Funding Flow). Now 125 UTXOs which are unconfirmed and originated from the sweeper subsystem are not 126 selected because they bear the risk of being replaced (BIP 125 RBF). 127 128 * [Fixed](https://github.com/lightningnetwork/lnd/pull/8621) the behaviour of 129 neutrino LND nodes which would lose sync in case they had very unstable 130 peer connection. 131 132 # New Features 133 ## Functional Enhancements 134 135 * Experimental support for [inbound routing 136 fees](https://github.com/lightningnetwork/lnd/pull/6703) is added. This allows 137 node operators to require senders to pay an inbound fee for forwards and 138 payments. It is recommended to only use negative fees (an inbound "discount") 139 initially to keep the channels open for senders that do not recognize inbound 140 fees. 141 142 [Send support](https://github.com/lightningnetwork/lnd/pull/6934) is 143 implemented as well. 144 145 [Positive inbound fees](https://github.com/lightningnetwork/lnd/pull/8627) 146 can be enabled with the option `accept-positive-inbound-fees`. 147 148 * A new config value, 149 [`sweeper.maxfeerate`](https://github.com/lightningnetwork/lnd/pull/7823), is 150 added so users can specify the max allowed fee rate when sweeping on-chain 151 funds. The default value is 1000 sat/vB. Setting this value below 100 sat/vB 152 is not allowed, as low fee rate can cause transactions not confirming in 153 time, which could result in fund loss. 154 Please note that the actual fee rate to be used is determined by the fee 155 estimator used (for instance `bitcoind`), and this value is a cap on the max 156 allowed value. So it's expected that this cap is rarely hit unless there's 157 mempool congestion. 158 159 * Support for [pathfinding](https://github.com/lightningnetwork/lnd/pull/7267) 160 and payment to blinded paths has been added via the `QueryRoutes` (and 161 `SendToRouteV2`) APIs. This functionality is surfaced in `lncli queryroutes` 162 where the required flags are tagged with `(blinded paths)`. Updates to mission 163 control to [handle pathfinding 164 errors](https://github.com/lightningnetwork/lnd/pull/8095) for blinded paths 165 are also included. 166 167 * A new config value, 168 [http-header-timeout](https://github.com/lightningnetwork/lnd/pull/7715), is 169 added so users can specify the amount of time the http server will wait for a 170 request to complete before closing the connection. The default value is 5 171 seconds. 172 173 * Update [watchtowers to be Taproot 174 ready](https://github.com/lightningnetwork/lnd/pull/7733). 175 176 * [`routerrpc.usestatusinitiated` is 177 introduced](https://github.com/lightningnetwork/lnd/pull/8177) to signal that 178 the new payment status `Payment_INITIATED` should be used for payment-related 179 RPCs. It's recommended to use it to provide granular controls over payments. 180 181 * A [helper command (`lncli encryptdebugpackage`) for collecting and encrypting 182 useful debug information](https://github.com/lightningnetwork/lnd/pull/8188) 183 was added. This allows a user to collect the most relevant information about 184 their node with a single command and securely encrypt it to the public key of 185 a developer or support person. That way the person supporting the user with 186 their issue has an eas way to get all the information they usually require 187 without the user needing to publicly give away a lot of privacy-sensitive 188 data. 189 190 * When publishing transactions in `lnd`, all the transactions will now go 191 through [mempool acceptance 192 check](https://github.com/lightningnetwork/lnd/pull/8345) before being 193 broadcast. This means when a transaction has failed the `testmempoolaccept` 194 check by `bitcoind` or `btcd`, the broadcast won't be attempted. This check 195 will be performed if the version of the chain backend supports it - for 196 `bitcoind` it's `v22.0.0` and above, for `btcd` it's `v0.24.1` and above. 197 Otherwise, the check will be 198 [skipped](https://github.com/lightningnetwork/lnd/pull/8505). 199 200 * The `coin-selection-strategy` config option [now also applies to channel 201 funding operations and the new `PsbtCoinSelect` option of the `FundPsbt` 202 RPC](https://github.com/lightningnetwork/lnd/pull/8378). 203 204 * [Environment variables can now be used in 205 `lnd.conf`](https://github.com/lightningnetwork/lnd/pull/8310) 206 for the `rpcuser` and `rpcpass` fields to better protect the secrets. 207 208 * When computing a minimum fee for transaction construction, `lnd` [now takes 209 its bitcoin peers' `feefilter` values into 210 account](https://github.com/lightningnetwork/lnd/pull/8418). 211 212 * Web fee estimator settings have been moved into a new `fee` config group. 213 A new `fee.url` option has been added within this group that replaces the old 214 `feeurl` option, which is now deprecated. Additionally, [two new config values, 215 fee.min-update-timeout and fee.max-update-timeout](https://github.com/lightningnetwork/lnd/pull/8484) 216 are added to allow users to specify the minimum and maximum time between fee 217 updates from the web fee estimator. The default values are 5 minutes and 20 218 minutes respectively. These values are used to prevent the fee estimator from 219 being queried too frequently. This replaces previously hardcoded values that 220 were set to the same values as the new defaults. The previously deprecated 221 `neutrino.feeurl` option has been removed. 222 223 * [Preparatory work](https://github.com/lightningnetwork/lnd/pull/8159) for 224 forwarding of blinded routes was added, along with [support](https://github.com/lightningnetwork/lnd/pull/8160) 225 for forwarding blinded payments and [error handling](https://github.com/lightningnetwork/lnd/pull/8485). 226 With this change, LND is now eligible to be selected as part of a blinded 227 route and can forward payments on behalf of nodes that have support for 228 receiving to blinded paths. This upgrade provides a meaningful improvement 229 to the anonymity set and usability of blinded paths in the Lightning Network. 230 231 * Introduced [fee bumper](https://github.com/lightningnetwork/lnd/pull/8424) to 232 handle bumping the fees of sweeping transactions properly. A 233 [README.md](https://github.com/lightningnetwork/lnd/pull/8674) is added to 234 explain this new approach. 235 236 ## RPC Additions 237 238 * [Deprecated](https://github.com/lightningnetwork/lnd/pull/7175) 239 `StatusUnknown` from the payment's rpc response in its status and added a new 240 status, `StatusInitiated`, to explicitly report its current state. Before 241 running this new version, please make sure to upgrade your client application 242 to include this new status so it can understand the RPC response properly. 243 244 * Adds a new RPC endpoint `GetTransaction` to the `walletrpc` sub-server to 245 [fetch transaction details](https://github.com/lightningnetwork/lnd/pull/7654). 246 247 * [The new `GetDebugInfo` RPC method was added that returns the full runtime 248 configuration of the node as well as the complete log 249 file](https://github.com/lightningnetwork/lnd/pull/8188). The corresponding 250 `lncli getdebuginfo` command was also added. 251 252 * Add a [new flag](https://github.com/lightningnetwork/lnd/pull/8167) to the 253 `CloseChannel` RPC method that instructs the client to not wait for the 254 closing transaction to be negotiated. This should be used if you don't care 255 about the TXID and don't want the calling code to block while the channel 256 drains the active HTLCs. 257 258 * [New watchtower client DeactivateTower and 259 TerminateSession](https://github.com/lightningnetwork/lnd/pull/8239) commands 260 have been added. The DeactivateTower command can be used to mark a tower as 261 inactive so that its sessions are not loaded on startup and so that the tower 262 is not considered for session negotiation. TerminateSession can be used to 263 mark a specific session as terminal so that that specific is never used again. 264 265 * [The `FundPsbt` RPC method now has a third option for specifying a 266 template](https://github.com/lightningnetwork/lnd/pull/8378) to fund. This 267 new option will instruct the wallet to perform coin selection even if some 268 inputs are already specified in the template (which wasn't the case with 269 the previous options). Also, users have the option to specify whether a new 270 change output should be added or an existing output should be used for the 271 change. And the fee estimation is correct even if no change output is 272 required. 273 274 ## lncli Additions 275 276 * Deprecate `bumpclosefee` for `bumpforceclosefee` to accommodate for the fact 277 that only force closing transactions can be bumped to avoid confusion. 278 Moreover, allow to specify a max fee rate range when coop closing a channel. 279 [Deprecate bumpclosefee for bumpforceclosefee and add `max_fee_rate` option 280 to `closechannel` cmd](https://github.com/lightningnetwork/lnd/pull/8350). 281 282 * The [`closeallchannels` command now asks for confirmation before closing 283 all channels](https://github.com/lightningnetwork/lnd/pull/8526). 284 285 * [Man pages](https://github.com/lightningnetwork/lnd/pull/8525) Generate man 286 pages automatically using `lncli generatemanpage` command for both `lncli` 287 and `lnd` commands when running 288 [`make install-all`](https://github.com/lightningnetwork/lnd/pull/8739) in 289 the Makefile. 290 291 # Improvements 292 ## Functional Updates 293 ### Tlv 294 295 * [Bool was added](https://github.com/lightningnetwork/lnd/pull/8057) to the 296 primitive type of the tlv package. 297 298 ## Misc 299 300 * [Added](https://github.com/lightningnetwork/lnd/pull/8142) full validation 301 for blinded path payloads to allow fuzzing before LND fully supports 302 blinded payment relay. 303 304 * Allow `healthcheck` package users to provide [custom 305 callbacks](https://github.com/lightningnetwork/lnd/pull/8504) which will 306 execute whenever a healthcheck succeeds/fails. 307 308 * `PublishTransaction` now [returns the error 309 types](https://github.com/lightningnetwork/lnd/pull/8554) defined in 310 `btcd/rpcclient`. 311 312 * [checkOutboundPeers](https://github.com/lightningnetwork/lnd/pull/8576) is 313 added to `chainHealthCheck` to make sure chain backend `bitcoind` and `btcd` 314 maintain a healthy connection to the network by checking the number of 315 outbound peers if they are below 6. 316 317 * [Add inbound fees](https://github.com/lightningnetwork/lnd/pull/8723) to 318 `subscribeChannelGraph`. 319 320 * [Moved](https://github.com/lightningnetwork/lnd/pull/8744) the experimental 321 "custom" options to the main protocol config so that they can be used without 322 the dev build flag set. 323 324 ### Logging 325 * [Add the htlc amount](https://github.com/lightningnetwork/lnd/pull/8156) to 326 contract court logs in case of timed-out HTLCs in order to easily spot dust 327 outputs. 328 329 * [Add warning logs](https://github.com/lightningnetwork/lnd/pull/8446) during 330 startup when deprecated config options are used. 331 332 ## RPC Updates 333 334 * [Deprecated](https://github.com/lightningnetwork/lnd/pull/7175) 335 `StatusUnknown` from the payment's rpc response in its status and replaced it 336 with `StatusInitiated` to explicitly report its current state. 337 338 * [Add an option to sign/verify a tagged 339 hash](https://github.com/lightningnetwork/lnd/pull/8106) to the 340 `signer.SignMessage`/`signer.VerifyMessage` RPCs. 341 342 * `sendtoroute` will return an error when it's called using the flag 343 `--skip_temp_err` on a payment that's not an MPP. This is needed as a temp 344 error is defined as a routing error found in one of an MPP's HTLC attempts. 345 If, however, there's only one HTLC attempt, when it's failed, this payment is 346 considered failed, thus there's no such thing as temp error for a non-MPP. 347 348 * Support for 349 [MinConf](https://github.com/lightningnetwork/lnd/pull/8097)(minimum number 350 of confirmations) has been added to the `WalletBalance` RPC call. 351 352 * [EstimateRouteFee](https://github.com/lightningnetwork/lnd/pull/8136) extends 353 the graph based estimation by a payment probe approach which can lead to more 354 accurate estimates. The new estimation method manually incorporates fees of 355 destinations that lie hidden behind lightning service providers. 356 357 * `PendingChannels` now optionally returns the 358 [raw hex of the closing tx](https://github.com/lightningnetwork/lnd/pull/8426) 359 in `waiting_close_channels`. 360 361 * [Allow callers of `ListSweeps` to specify the start 362 height](https://github.com/lightningnetwork/lnd/pull/7372). 363 364 * [Coin Selection Strategy](https://github.com/lightningnetwork/lnd/pull/8515) 365 add coin selection strategy option to the following on-chain RPC calls 366 `EstimateFee`, `SendMany`, `SendCoins`, `BatchOpenChannel`, `SendOutputs`, and 367 `FundPsbt`. 368 369 * `BumpFee` has been updated to take advantage of the [new budget-based 370 sweeper](https://github.com/lightningnetwork/lnd/pull/8667). The param 371 `force` has been deprecated and replaced with a new param `immediate`, and a 372 new param `budget` is added to allow specifying max fees when sweeping 373 outputs. In addition, `PendingSweep` has added new fields `immediate`, 374 `budget`, and `deadline_height`, the fields `force`, `requested_conf_target`, 375 and `next_broadcast_height` are deprecated. 376 377 * [Delete All Payments RPC](https://github.com/lightningnetwork/lnd/pull/8672) 378 adds `all_payments` option to the `DeleteAllPayments` RPC. This update 379 ensures that the arguments are provided when calling `DeleteAllPayments` RPC, 380 whether through gRPC or the REST API, due to the destructive nature of the 381 operation. 382 383 * When paying an AMP payment request, [the `--amp` flag is now 384 required](https://github.com/lightningnetwork/lnd/pull/8681) to be consistent 385 with the flow when a payment request isn't used. 386 387 ## lncli Updates 388 389 * [Documented all available `lncli` 390 commands](https://github.com/lightningnetwork/lnd/pull/8181). 391 This change makes all existing `lncli` commands have the appropriate doc tag 392 in the RPC definition to ensure that the autogenerated API documentation 393 properly specifies how to use the `lncli` command. 394 395 * [Enable multiple outgoing channel ids for the payment 396 command](https://github.com/lightningnetwork/lnd/pull/8261). This change adds 397 the ability to specify multiple outgoing channel ids for the `sendpayment` 398 command. 399 400 * [Use the default LND value in the `buildroute` RPC command for the 401 `final cltv delta`](https://github.com/lightningnetwork/lnd/pull/8387). 402 403 * `pendingchannels` now optionally returns the 404 [raw hex of the closing tx](https://github.com/lightningnetwork/lnd/pull/8426) 405 in `waiting_close_channels`. 406 407 * The [`estimateroutefee`](https://github.com/lightningnetwork/lnd/pull/8136) 408 subcommand now gives access to graph based and payment probe fee estimation. 409 410 ## Code Health 411 412 * [Remove Litecoin code](https://github.com/lightningnetwork/lnd/pull/7867). 413 With this change, the `Bitcoin.Active` config option is now deprecated since 414 Bitcoin is now the only supported chain. The `chain` field in the 415 `lnrpc.Chain` message has also been deprecated for the same reason. 416 417 * The payment lifecycle code has been refactored to improve its maintainability. 418 In particular, the complexity involved in the lifecycle loop has been 419 decoupled into logical steps, with each step having its own responsibility, 420 making it easier to reason about the payment flow. 421 422 * [Remove io/ioutil package 423 dependence](https://github.com/lightningnetwork/lnd/pull/7765). 424 425 * [Add a watchtower tower client 426 multiplexer](https://github.com/lightningnetwork/lnd/pull/7702) to manage 427 tower clients of different types. 428 429 * [Introduce CommitmentType and JusticeKit 430 interface](https://github.com/lightningnetwork/lnd/pull/7736) to simplify the 431 code. 432 433 * [Correct `fmt.Errorf` error wrapping 434 instances](https://github.com/lightningnetwork/lnd/pull/8503). 435 436 * Bump sqlite version to [fix a data 437 race](https://github.com/lightningnetwork/lnd/pull/8567). 438 439 * The pending inputs in the sweeper is now 440 [stateful](https://github.com/lightningnetwork/lnd/pull/8423) to better 441 manage the lifecycle of the inputs. 442 443 ## Breaking Changes 444 445 * Previously when calling `SendCoins`, `SendMany`, `OpenChannel` and 446 `CloseChannel` for coop close, it is allowed to specify both an empty 447 `SatPerVbyte` and `TargetConf`, and a default conf target of 6 will be used. 448 This will [no longer be 449 allowed](https://github.com/lightningnetwork/lnd/pull/8422) in the next 450 release (v0.19.0) and the caller must specify either `SatPerVbyte` or 451 `TargetConf` so the fee estimator can do a proper fee estimation. For current 452 release, [an error will be 453 logged](https://github.com/lightningnetwork/lnd/pull/8693) when no values are 454 specified. 455 456 * Removed deprecated `neutrino.feeurl` option. Please use the newer `fee.url` 457 option instead. 458 459 ## Performance Improvements 460 461 * Watchtower client DB migration to massively [improve the start-up 462 performance](https://github.com/lightningnetwork/lnd/pull/8222) of a client. 463 464 # Technical and Architectural Updates 465 ## BOLT Spec Updates 466 467 * [Add Dynamic Commitment Wire 468 Types](https://github.com/lightningnetwork/lnd/pull/8026). 469 This change begins the development of Dynamic Commitments allowing for the 470 negotiation of new channel parameters and the upgrading of channel types. 471 472 * Start using the [timestamps query 473 option](https://github.com/lightningnetwork/lnd/pull/8030) in the 474 `query_channel_range` message. This will allow us to know if our peer has a 475 newer update for a channel that we have marked as a zombie. This addition can 476 be switched off using the new `protocol.no-timestamp-query-option` config 477 option. 478 479 * [Update `min_final_cltv_expiry_delta`](https://github.com/lightningnetwork/lnd/pull/8308). 480 This only affects external invoices which do not supply the 481 `min_final_cltv_expiry` parameter. LND has NOT allowed the creation of 482 invoices with a lower `min_final_cltv_expiry_delta` value than 18 blocks since 483 LND v0.11.0. 484 485 * [Make Legacy Features 486 Compulsory](https://github.com/lightningnetwork/lnd/pull/8275). 487 This change implements changes codified in 488 [bolts#1092](https://github.com/lightning/bolts/pull/1092) 489 and makes TLV Onions, Static Remote Keys, Gossip Queries, compulsory features 490 for LND's peers. Data Loss Protection has been compulsory for years. 491 492 * [Don't Require Gossip Queries](https://github.com/lightningnetwork/lnd/pull/8615) 493 This change undoes a portion of what was introduced in #8275 due to a subsequent 494 [spec change](https://github.com/lightning/bolts/pull/1092/commits/e0ee59f3c92b7c98be8dfc47b7db358b45baf9de) 495 that meant we shouldn't require it. 496 497 ## Testing 498 499 * Added fuzz tests for [onion 500 errors](https://github.com/lightningnetwork/lnd/pull/7669). 501 502 * Fixed stability and [compatibility of unit tests with `bitcoind 503 v26.0`](https://github.com/lightningnetwork/lnd/pull/8273). 504 505 ## Database 506 507 * [Add context to InvoiceDB 508 methods](https://github.com/lightningnetwork/lnd/pull/8066). This change adds 509 a context parameter to all `InvoiceDB` methods which is a pre-requisite for 510 the SQL implementation. 511 512 * [Refactor InvoiceDB](https://github.com/lightningnetwork/lnd/pull/8081) to 513 eliminate the use of `ScanInvoices`. 514 515 * [Update](https://github.com/lightningnetwork/lnd/pull/8419) the embedded 516 Postgres version and raise max connections. 517 518 * [Refactor UpdateInvoice](https://github.com/lightningnetwork/lnd/pull/8100) to 519 make it simpler to adjust code to also support SQL InvoiceDB implementation. 520 521 * [InvoiceDB implementation](https://github.com/lightningnetwork/lnd/pull/8052) 522 for SQL backends enabling new users to optionally use an experimental native 523 SQL invoices database. 524 525 * [Ensure that LND won't 526 start](https://github.com/lightningnetwork/lnd/pull/8568) if native SQL is 527 enabled but the channeldb already has any KV invoices stored. 528 529 * [Fix a bug](https://github.com/lightningnetwork/lnd/pull/8595) when retrying 530 SQL InvoiceDB transactions due to database errors. 531 532 * [Turn `sqldb` into a separate Go 533 module](https://github.com/lightningnetwork/lnd/pull/8603). 534 535 * [Consolidate transaction 536 retry](https://github.com/lightningnetwork/lnd/pull/8611) logic and isolation 537 settings between `sqldb` and `kvdb` packages. 538 539 * [Expanded SweeperStore](https://github.com/lightningnetwork/lnd/pull/8147) to 540 also store the fee rate, fees paid, and whether it's published or not for a 541 given sweeping transaction. 542 543 ## Code Health 544 545 * [Remove database pointers](https://github.com/lightningnetwork/lnd/pull/8117) 546 from `channeldb` schema structs. 547 548 # Contributors (Alphabetical Order) 549 550 * Alex Akselrod 551 * Alex Sears 552 * Amin Bashiri 553 * Andras Banki-Horvath 554 * AtomicInnovation321 555 * bartoli 556 * BitcoinerCoderBob 557 * bitromortac 558 * bota87 559 * Bufo 560 * Calvin Zachman 561 * Carla Kirk-Cohen 562 * cristiantroy 563 * cuinix 564 * davisv7 565 * Elle Mouton 566 * ErikEk 567 * Eugene Siegel 568 * Feelancer21 569 * ffranr 570 * Hao Wang 571 * hidewrong 572 * Jesse de Wit 573 * João Thallis 574 * Jonathan Harvey-Buschel 575 * Joost Jager 576 * Jordi Montes 577 * Keagan McClelland 578 * kilrau 579 * mani2310 580 * Marcos Fernandez Perez 581 * Matt Morehouse 582 * Michael Rooke 583 * Mohamed Awnallah 584 * Olaoluwa Osuntokun 585 * Oliver Gugger 586 * Ononiwu Maureen Chiamaka 587 * Sam Korn 588 * saubyk 589 * Simone Ragonesi 590 * Slyghtning 591 * tdb3 592 * Tee8z 593 * testwill 594 * Thabokani 595 * threewebcode 596 * Tom Kirkpatrick 597 * Turtle 598 * twofaktor 599 * vuittont60 600 * w3irdrobot 601 * weiliy 602 * xiaoxianBoy 603 * Yong Yu 604 * zhiqiangxu 605 * Ziggie