lnd/lnwallet
Johan T. Halseth 5943e5d8b1
lnwallet: state transition from correct node during test, remove panic
The unit test TestNewBreachRetributionSkipsDustHtlcs triggered a state
transition from Bob, even though it was Alice that had added the HTLCs.
This is wrong since it will lead to Bob still owing Alice a commitment,
which is not accounted for in the unit tests.

We add a sanity check that the add heights has been set for all entries
found in the logs, and return an error otherwise. This won't happen
during normal operation, but it does reveal the mistake in the unit
test, which is fixed by making Alice trigger the transition.

In addition we resolve a long standing TODO by removing a (purposeful)
panic in the channel state machine. Old version of lnd had a bug that
could lead to the parent entries being lost during channel restore. A
panic was added to get to the bottom of if.

This is now fixed, so new nodes shouldn't encounter it. However, to be
on the safe side, instead of panicking we return an error back to
gracefully exit the channel state machine.
2020-02-12 11:10:19 +01:00
..
btcwallet chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
chainfee chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
chanfunding rpc+lnwallet: implement new FundingStateStep RPC method 2019-12-20 19:09:44 -08:00
chanvalidate lnwallet+funding: expose new ValidateChannel method for 1st party validation 2019-10-03 16:23:23 -07:00
channel_test.go lnwallet: state transition from correct node during test, remove panic 2020-02-12 11:10:19 +01:00
channel.go lnwallet: state transition from correct node during test, remove panic 2020-02-12 11:10:19 +01:00
commit_sort_test.go lnwallet/commit_sort: add commit sorting with htlc tie breaker 2019-06-05 08:34:45 +02:00
commit_sort.go lnwallet/commit_sort: add commit sorting with htlc tie breaker 2019-06-05 08:34:45 +02:00
commitment.go lnwallet/channel: reuse derived SingleTweak on local force close 2020-01-06 12:08:29 +01:00
config.go chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
errors.go Revert "funding+lnwallet: ensure max_htlc_value_in_flight smaller than capacity" 2019-01-29 17:58:04 -08:00
interface_test.go lnwallet: Re-enable tests 2019-12-23 10:32:03 -03:00
interface.go chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
log.go chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
parameters.go multi: move Input interface and related code 2019-01-31 13:25:33 +01:00
README.md multi: fix typos in comments 2018-04-17 19:03:27 -07:00
reservation.go multi: Set upfront shutdown from open and accept chanel messages 2019-12-03 11:38:29 +02:00
sigpool.go multi: replace manual CAS with sync.Once in several more modules 2019-06-12 09:37:26 -03:00
size_test.go multi: move Input interface and related code 2019-01-31 13:25:33 +01:00
test_utils.go lnwallet: use channel type to derive keys 2020-01-06 12:08:05 +01:00
transactions_test.go lnwallet: use channel type to derive remote script 2020-01-06 12:08:19 +01:00
transactions.go multi: move Input interface and related code 2019-01-31 13:25:33 +01:00
wallet.go lnwallet: use channel type to derive remote script 2020-01-06 12:08:19 +01: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