The AMP struct in a hop was never being set when deserizlied. Also, the AMP TLV record was not being added when the hop was serialized. This sets the TLV record when serializing and correctly sets the AMP struct on the hop when that record is present. Co-authored-by: BitcoinCoderBob <90647227+BitcoinCoderBob@users.noreply.github.com> Co-authored-by: Tee8z <tee8z@protonmail.com>
9.1 KiB
Release Notes
- Bug Fixes
- New Features
- Improvements
- Technical and Architectural Updates
- Contributors (Alphabetical Order)
Bug Fixes
-
Fix a bug where
sendcoins
command with--sweepall
flag would not show the correct amount. -
Fixed a potential case that when sweeping inputs with locktime, an unexpected lower fee rate is applied.
-
LND will now enforce pong responses from its peers
-
Fixed a possible unintended RBF attempt when sweeping new inputs with retried ones.
-
Fixed a case where
lnd
might panic due to empty witness data found in a transaction. More details can be found here. -
Fixed a case where it's possible a failed payment might be stuck in pending.
-
Ensure that a valid SCID is used when marking a zombie edge as live.
-
Remove sweep transactions of the same exclusive group. When using neutrino as a backend unconfirmed transactions have to be removed from the wallet when a conflicting tx is confirmed. For other backends these unconfirmed transactions are already removed. In addition a new walletrpc endpoint
RemoveTransaction
is introduced which let one easily remove unconfirmed transaction manually. -
The AMP struct in payment hops will now be populated when the AMP TLV is set.
New Features
Functional Enhancements
-
A new config value, sweeper.maxfeerate, is added so users can specify the max allowed fee rate when sweeping onchain funds. The default value is 1000 sat/vb. Setting this value below 100 sat/vb is not allowed, as low fee rate can cause transactions not confirming in time, which could result in fund loss. Please note that the actual fee rate to be used is deteremined by the fee estimator used(for instance
bitcoind
), and this value is a cap on the max allowed value. So it's expected that this cap is rarely hit unless there's mempool congestion. -
Support for [pathfinding]((https://github.com/lightningnetwork/lnd/pull/7267) and payment to blinded paths has been added via the
QueryRoutes
(and SendToRouteV2) APIs. This functionality is surfaced inlncli queryroutes
where the required flags are tagged with(blinded paths)
. -
A new config value, http-header-timeout, is added so users can specify the amount of time the http server will wait for a request to complete before closing the connection. The default value is 5 seconds.
-
routerrpc.usestatusinitiated
is introduced to signal that the new payment statusPayment_INITIATED
should be used for payment-related RPCs. It's recommended to use it to provide granular controls over payments.
RPC Additions
-
Deprecated
StatusUnknown
from the payment's rpc response in its status and added a new status,StatusInitiated
, to explicitly report its current state. Before running this new version, please make sure to upgrade your client application to include this new status so it can understand the RPC response properly. -
Adds a new rpc endpoint gettx to the walletrpc sub-server to fetch transaction details.
lncli Additions
Improvements
Functional Updates
Tlv
- Bool was added to the primitive type of the tlv package.
Misc
Logging
- Add the htlc amount to contract court logs in case of timed-out htlcs in order to easily spot dust outputs.
RPC Updates
-
Deprecated
StatusUnknown
from the payment's rpc response in its status and replaced it withStatusInitiated
to explicitly report its current state. -
Add an option to sign/verify a tagged hash to the signer.SignMessage/signer.VerifyMessage RPCs.
-
sendtoroute
will return an error when it's called using the flag--skip_temp_err
on a payment that's not a MPP. This is needed as a temp error is defined as a routing error found in one of a MPP's HTLC attempts. If, however, there's only one HTLC attempt, when it's failed, this payment is considered failed, thus there's no such thing as temp error for a non-MPP. -
Support for MinConf(minimum number of confirmations) has been added to the
WalletBalance
RPC call.
lncli Updates
-
Documented all available lncli commands. This change makes all existing lncli commands have the appropriate doc tag in the rpc definition to ensure that the autogenerated API documentation properly specifies how to use the lncli command.
-
Enable multiple outgoing channel ids for the payment command. This change adds the ability to specify multiple outgoing channel ids for the
sendpayment
command.
Code Health
-
Remove Litecoin code. With this change, the
Bitcoin.Active
config option is now deprecated since Bitcoin is now the only supported chain. Thechains
field in thelnrpc.GetInfoResponse
message along with thechain
field in thelnrpc.Chain
message have also been deprecated for the same reason. -
The payment lifecycle code has been refactored to improve its maintainablity. In particular, the complexity involved in the lifecycle loop has been decoupled into logical steps, with each step having its own responsibility, making it easier to reason about the payment flow.
-
Add a watchtower tower client multiplexer to manage tower clients of different types.
Breaking Changes
Performance Improvements
- Watchtower client DB migration to massively improve the start-up performance of a client.
Technical and Architectural Updates
BOLT Spec Updates
-
Add Dynamic Commitment Wire Types. This change begins the development of Dynamic Commitments allowing for the negotiation of new channel parameters and the upgrading of channel types.
-
Start using the timestamps query option in the
query_channel_range
message. This will allow us to know if our peer has a newer update for a channel that we have marked as a zombie. This addition can be switched off using the newprotocol.no-timestamp-query-option
config option. -
Update min_final_cltv_expiry_delta. This only effects external invoices which do not supply the min_final_cltv_expiry parameter. LND has NOT allowed the creation of invoices with a lower min_final_cltv_expiry_delta value than 18 blocks since LND 0.11.0.
Testing
- Added fuzz tests for onion errors.
Database
-
Add context to InvoiceDB methods. This change adds a context parameter to all
InvoiceDB
methods which is a pre-requisite for the SQL implementation. -
Refactor InvoiceDB to eliminate the use of
ScanInvoices
.
Code Health
- Remove database pointers from channeldb schema structs.
Tooling and Documentation
Contributors (Alphabetical Order)
- Amin Bashiri
- Andras Banki-Horvath
- BitcoinerCoderBob
- Carla Kirk-Cohen
- Elle Mouton
- ErikEk
- Keagan McClelland
- Marcos Fernandez Perez
- Matt Morehouse
- Slyghtning
- Tee8z
- Turtle
- Ononiwu Maureen Chiamaka
- w3irdrobot
- Yong Yu