/ docs / release-notes / release-notes-0.18.0.md
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