lnd/lnwallet
Olaoluwa Osuntokun fc54c5d8d8
lnwallet: perform sanity check on cooperative closure transacitons
This commit fixes a class of bug that currently exists within the
cooperative closure methods for the channel state machine. As an
example, due to the current hard coded fees, if one of the outputs
generated within the generated closure transaction has a negative
output, then the initiating node would gladly forward this to the
remote node. The remote node would then reject the closure as the
transaction is invalid. However, the act of completing the closure
would cause the remote node’s state machine to shift into a “closed”
state. As a result, any further closure attempts by the first node
(force or regular) would go unnoticed by the remote node.

We fix this issue by ensuring the transaction is “sane” before
initiating of completing a cooperative channel closure.

At test case has been added exercising the particular erroneous case
reported by “moli” on IRC.
2017-02-27 21:00:25 -06:00
..
btcwallet lnwallet/btcwallet: fix bug in non-recognition of self-funds in chan force close 2017-02-07 20:01:19 -08:00
channel_test.go lnwallet: perform sanity check on cooperative closure transacitons 2017-02-27 21:00:25 -06:00
channel.go lnwallet: perform sanity check on cooperative closure transacitons 2017-02-27 21:00:25 -06:00
config.go config: add --pendingchannel lnd flag 2016-10-22 02:11:18 +03:00
interface_test.go fundingmanager: Update tests for funding manager persistence 2017-02-24 11:37:33 -08:00
interface.go lnwallet/btcwallet: fix bug in non-recognition of self-funds in chan force close 2017-02-07 20:01:19 -08:00
log.go lnwallet: correct comment for logging object 2016-12-27 16:43:07 -08:00
parameters.go fundingmanager+lnwallet: add HTLC dust limit logic 2016-12-13 11:01:57 -08:00
README.md multi: add link to LICENSE in README license badges (#100) 2017-01-12 16:31:08 -08:00
reservation.go fundingmanager: move final funding steps from wallet to funding manager. 2017-02-24 11:37:33 -08:00
script_utils_test.go lnwallet: extend test to check for valid locktime and sequence 2017-02-22 15:46:59 -08:00
script_utils.go channeldb+lnwallet: replace elkrem with shachain 2017-02-22 16:49:29 -08:00
size.go channeldb+lnwallet: replace elkrem with shachain 2017-02-22 16:49:29 -08:00
wallet.go lnwallet+channeldb: update callers to shachain API changes 2017-02-24 16:31:45 -08:00

lnwallet

[Build Status] (https://travis-ci.org/lightningnetwork/lnd) [MIT licensed] (https://github.com/lightningnetwork/lnd/blob/master/LICENSE) [GoDoc] (http://godoc.org/github.com/lightningnetwork/lnd/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