lnd.xprv/lnwallet
Yong 582b164c46
kvdb: add timeout options for bbolt (#4787)
* mod: bump btcwallet version to accept db timeout

* btcwallet: add DBTimeOut in config

* kvdb: add database timeout option for bbolt

This commit adds a DBTimeout option in bbolt config. The relevant
functions walletdb.Open/Create are updated to use this config. In
addition, the bolt compacter also applies the new timeout option.

* channeldb: add DBTimeout in db options

This commit adds the DBTimeout option for channeldb. A new unit
test file is created to test the default options. In addition,
the params used in kvdb.Create inside channeldb_test is updated
with a DefaultDBTimeout value.

* contractcourt+routing: use DBTimeout in kvdb

This commit touches multiple test files in contractcourt and routing.
The call of function kvdb.Create and kvdb.Open are now updated with
the new param DBTimeout, using the default value kvdb.DefaultDBTimeout.

* lncfg: add DBTimeout option in db config

The DBTimeout option is added to db config. A new unit test is
added to check the default DB config is created as expected.

* migration: add DBTimeout param in kvdb.Create/kvdb.Open

* keychain: update tests to use DBTimeout param

* htlcswitch+chainreg: add DBTimeout option

* macaroons: support DBTimeout config in creation

This commit adds the DBTimeout during the creation of macaroons.db.
The usage of kvdb.Create and kvdb.Open in its tests are updated with
a timeout value using kvdb.DefaultDBTimeout.

* walletunlocker: add dbTimeout option in UnlockerService

This commit adds a new param, dbTimeout, during the creation of
UnlockerService. This param is then passed to wallet.NewLoader
inside various service calls, specifying a timeout value to be
used when opening the bbolt. In addition, the macaroonService
is also called with this dbTimeout param.

* watchtower/wtdb: add dbTimeout param during creation

This commit adds the dbTimeout param for the creation of both
watchtower.db and wtclient.db.

* multi: add db timeout param for walletdb.Create

This commit adds the db timeout param for the function call
walletdb.Create. It touches only the test files found in chainntnfs,
lnwallet, and routing.

* lnd: pass DBTimeout config to relevant services

This commit enables lnd to pass the DBTimeout config to the following
services/config/functions,
  - chainControlConfig
  - walletunlocker
  - wallet.NewLoader
  - macaroons
  - watchtower
In addition, the usage of wallet.Create is updated too.

* sample-config: add dbtimeout option
2020-12-07 15:31:49 -08:00
..
btcwallet kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
chainfee lnwallet: add no cache option to web api estimator 2020-09-14 11:51:03 +02:00
chancloser mutli: move parse upfront shutdown out of rpcserver 2020-11-10 11:40:52 +02:00
chanfunding chanfunding: match error string when testing CoinSelectSubtractFees 2020-11-04 18:54:57 +01:00
chanvalidate input: pass input.Signature to multisig spend 2020-04-10 14:27:35 -07:00
channel_test.go lnwallet/channel: correct dust calculation on incoming HTLC 2020-11-13 12:02:03 +01:00
channel.go contractcourt+lnwallet: use state num instead of commit height when 2020-12-03 08:01:08 +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: check coop close fee negative balance 2020-09-11 11:10:58 +02:00
config.go chainfee: create new chainfee package extracting fees from lnwallet 2019-10-31 16:41:57 -07:00
errors.go add new max channel size config option 2020-09-14 21:16:32 -05:00
interface_test.go kvdb: add timeout options for bbolt (#4787) 2020-12-07 15:31:49 -08:00
interface.go lnwallet+mock: add new PSBT methods 2020-10-03 10:34:39 +02: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: add max local csv config option 2020-11-04 13:55:37 +02:00
sigpool.go multi: return input.Signature from SignOutputRaw 2020-04-10 14:27:35 -07:00
test_utils.go lnwallet/test_utils: set up asymmetric commits 2020-12-03 08:00:01 +01:00
test_vectors_anchors.json lnwallet/test: add anchor vector for no local anchor 2020-08-19 08:44:04 +02:00
test_vectors_legacy.json lnwallet/test: make use of test htlcs explicit 2020-08-19 08:44:00 +02:00
transactions_test.go lnwallet/test: make use of test htlcs explicit 2020-08-19 08:44:00 +02:00
transactions.go lnwallet: set 2nd level sequence according to channel type 2020-03-09 12:59:33 +01:00
wallet.go multi: move several wait group done calls to defer statements 2020-11-23 14:48:44 +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