lnd.xprv/lnwallet
Olaoluwa Osuntokun 9777176d7d
lnwallet: don't use persistent pointer to funding tx within channel state machine
This commit fixes a lingering bug that could at times cause
incompatibilities with other implementations when attempting a
cooperative channel close. Before this commit, we would use a pointer
to the funding txin everywhere. As a result, each time we made a new
state, or verified one, we would modify the sequence field of the main
txin of the commitment transaction. Due to this if we updated the
channel, then went to do a cooperative channel closure, the sequence of
the txin would still be set to the value we used as the state hint.

To remedy this, we now copy the txin each time when making the
commitment transaction, and also the cooperative closure transaction.
This avoids accidentally mutating the txin itself.

Fixes #502.
2017-12-22 19:26:35 +01:00
..
btcwallet multi: fix several typos in godoc comments 2017-12-17 18:40:05 -08:00
channel_test.go lnwallet: don't use persistent pointer to funding tx within channel state machine 2017-12-22 19:26:35 +01:00
channel.go lnwallet: don't use persistent pointer to funding tx within channel state machine 2017-12-22 19:26:35 +01:00
config.go lnwallet: flesh out the Config struct, wallet constructor now takes 2017-07-30 17:49:41 -07:00
fee_estimator.go multi: fix several typos in godoc comments 2017-12-17 18:40:05 -08:00
interface_test.go lnwallet test: add FFAnnounceChan flag to reservation init 2017-12-17 18:35:34 -08:00
interface.go multi: fix several typos in godoc comments 2017-12-17 18:40:05 -08:00
log.go lnwallet: don't attach the rpcclient to the lnwallet logging instance 2017-08-30 20:32:37 -07:00
parameters.go fundingmanager+lnwallet: add HTLC dust limit logic 2016-12-13 11:01:57 -08:00
README.md multi: fix formatting issues in packge README's 2017-03-27 16:25:25 -07:00
reservation.go lnwallet: add FundingFlag parameter to InitChannelReservation 2017-12-17 18:35:34 -08:00
script_utils_test.go lnwallet: don't use persistent pointer to funding tx within channel state machine 2017-12-22 19:26:35 +01:00
script_utils.go multi: fix several typos in godoc comments 2017-12-17 18:40:05 -08:00
signdescriptor_test.go lnwallet: move latest SignDescriptor + serialization 2017-08-25 17:56:50 -07:00
signdescriptor.go lnwallet/signdesc: increases max witness parsing length 2017-09-19 19:18:21 -07:00
sigpool.go lnwallet: ensure sigPool goroutines can always exit 2017-11-11 14:59:56 -08:00
size_test.go lnwallet: Add TxWeightEstimator support for nested pay-to-witness. 2017-10-19 17:37:53 -07:00
size.go lnwallet/size: adds htlc success and timeout witness sizes 2017-11-15 18:04:44 -08:00
txout_test.go lnwallet: move txout serialization out of lnwire 2017-09-14 13:56:25 +02:00
txout.go lnwallet: move txout serialization out of lnwire 2017-09-14 13:56:25 +02:00
wallet.go lnwallet: don't use persistent pointer to funding tx within channel state machine 2017-12-22 19:26:35 +01:00
witnessgen.go lnwallet/witnessgen: add HtlcOfferedTimeLock witness type 2017-11-15 18:04:44 -08: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 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