Files
lnd/lnwallet
George Tsagkarelis 773b2c1c30 lnwallet: add and use AuxHtlcValidator to lightning channel
Previously we'd perform aux bandwidth checks during path finding. This
could lead to issues where multiple HTLCs where querying the same
bandwidth but were not accounting for each other before being added to
the commitment log. We now add a new validator function that will serve
as the last point of checks before adding the HTLC to the commitment.

During path finding HTLCs could query channel bandwidth asynchronously.
At this new call site all HTLCs that are about to be added to the
channel have been organised in sequence, so it's safe to query bandwdith
again at this point as we're getting the actual up-to-date values.

We remove the aux bandwidth check from the helper canSendHtlc, which was
called from CheckHTLCTransit and CheckHTLCForward (both are methods of
the htlcswitch).

For forwards we now fail at the link level, following the introduction
of the AuxHtlcValidator.

For payments, we now may fail either at the pathfinding level, or at the
link level. The htlcswitch may no longer fail for aux bandwidth checks.

Finally, when fetching the latest htlc view (for bandwidth checks during
pathfinding) we'd silently set the nextHeight of the view to the default
zero value. We now make sure to set it to the correct nextHeight value.
2026-03-04 20:02:06 +01:00
..
2025-09-16 14:25:42 +02:00
2024-12-04 13:19:00 -07:00
2024-12-04 13:19:00 -07:00
…
2025-03-21 08:06:18 +08:00
2024-12-04 13:19:00 -07:00
2024-12-04 13:19:00 -07:00
…
2024-12-04 13:19:00 -07:00
2024-12-04 13:19:00 -07:00
2024-12-04 13:19:00 -07:00
2024-12-04 13:19:00 -07:00

lnwallet

Build Status MIT licensed GoDoc

The lnwallet package implements an abstracted wallet controller that is able to drive channel funding workflows, a number of script utilities, witness generation functions for the various Lightning scripts, revocation key derivation, and the commitment update state machine.

The package is used within lnd as the core wallet of the daemon. The wallet itself is composed of several distinct interfaces that decouple the implementation of things like signing and blockchain access. This separation allows new WalletController implementations to be easily dropped into lnd without disrupting the code base. A series of integration tests at the interface level are also in place to ensure conformance of the implementation with the interface.

Installation and Updating

$  go get -u github.com/lightningnetwork/lnd/lnwallet