3b94e5df4d
In this commit, we fix an existing derivation from the commitment state machine as defined within the specification. Before this commit, we only kept a single counter which both HTLC adds and fails/settles would share. This was valid in the prior pre-spec iteration of the state machine. However in the current draft of the spec, only a distinct counter for HTLCs are used throughout. This would cause an incompatibility, as if we mixed adds and settles during an exchange, then our counter values would differ with other implementations. To remedy this, we now introduce a distinct HTLC counter and index within the updateLog. Each Add will increment both the log counter, and the HTLC counter. Each Settle/Fail will only increment the log counter. Inbound Settle/Fails will index into the HTLC index as to target the proper HTLC. The PaymentDescriptor type has been extended with an additional field (HltcIndex) which itself tracks the index of an incoming/outgoing HTLC. |
||
---|---|---|
.. | ||
btcwallet | ||
channel_test.go | ||
channel.go | ||
config.go | ||
interface_test.go | ||
interface.go | ||
log.go | ||
parameters.go | ||
README.md | ||
reservation.go | ||
script_utils_test.go | ||
script_utils.go | ||
signdescriptor_test.go | ||
signdescriptor.go | ||
sigpool.go | ||
size_test.go | ||
size.go | ||
txout_test.go | ||
txout.go | ||
wallet.go | ||
witnessgen.go |
lnwallet
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 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