lnd.xprv/channeldb
Johan T. Halseth 70202be580
channeldb: make database logic MPP compatible
This commit redefines how the control tower handles shard and payment
level settles and failures. We now consider the payment in flight as
long it has active shards, or it has no active shards but has not
reached a terminal condition (settle of one of the shards, or a payment
level failure has been encountered).

We also make it possible to settle/fail shards regardless of the payment
level status (since we must allow late shards recording their status
even though we have already settled/failed the payment).

Finally, we make it possible to Fail the payment when it is already
failed. This is to allow multiple concurrent shards that reach terminal
errors to mark the payment failed, without havinng to synchronize.
2020-04-02 19:29:14 +02:00
..
kvdb channeldb/kvdb: create new package for an abstract kv store 2020-03-18 19:34:45 -07:00
migration_01_to_11 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration12 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration13 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migtest channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
addr_test.go channeldb/addr_test: add tests for invalid onion addresses 2019-01-17 14:16:15 +01:00
addr.go channeldb/addr: sanity check onion address length before writing to db 2019-01-17 14:16:15 +01:00
channel_cache_test.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_cache.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_test.go channeldb: add new frozen channel type bit and thaw height 2020-03-23 16:56:48 -07:00
channel.go channeldb: use RemoteCommitment in NextLocalHtlcIndex 2020-03-25 11:49:16 -04:00
codec.go channeldb: Fix dropped error in migrations test 2019-09-12 15:49:21 +00:00
db_test.go channeldb: store close initiator status 2020-02-21 13:33:49 +02:00
db.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
doc.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
duplicate_payments.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
error.go channeldb: add historical channel bucket lookup 2020-02-21 13:23:30 +02:00
fees.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
forwarding_log_test.go channeldb: add a set of initial tests for the ForwardingLog 2018-03-06 13:56:09 -05:00
forwarding_log.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
forwarding_package_test.go build: silence new linter errors, tidy modules 2020-03-18 19:35:29 -07:00
forwarding_package.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
graph_test.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
graph.go build: silence new linter errors, tidy modules 2020-03-18 19:35:29 -07:00
invoice_test.go channeldb: inject clock into database 2020-01-20 11:08:30 +01:00
invoices.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go channeldb/migration13: migrate to mpp structure 2020-03-09 18:31:39 +01:00
meta_test.go build: silence new linter errors, tidy modules 2020-03-18 19:35:29 -07:00
meta.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
mp_payment.go channeldb: make database logic MPP compatible 2020-04-02 19:29:14 +02:00
nodes_test.go channeldb: add DeleteLinkNode method 2018-07-17 17:35:25 -07:00
nodes.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
options.go channeldb: inject clock into database 2020-01-20 11:08:30 +01:00
payment_control_test.go channeldb/payment_control_test: simplify HTLC status assertion 2020-04-02 10:24:36 +02:00
payment_control.go channeldb: make database logic MPP compatible 2020-04-02 19:29:14 +02:00
payments_test.go channeldb+routing: store all payment htlcs 2020-03-09 18:31:33 +01:00
payments.go channeldb: make database logic MPP compatible 2020-04-02 19:29:14 +02:00
README.md build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
reject_cache_test.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
reject_cache.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
waitingproof_test.go channeldb: Fix dropped error in migrations test 2019-09-12 15:49:21 +00:00
waitingproof.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
witness_cache_test.go channeldb+witness_beacon: use sha256 lookup+delete witness 2019-02-19 17:06:42 -08:00
witness_cache.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00

channeldb

Build Status MIT licensed GoDoc

The channeldb implements the persistent storage engine for lnd and generically a data storage layer for the required state within the Lightning Network. The backing storage engine is boltdb, an embedded pure-go key-value store based off of LMDB.

The package implements an object-oriented storage model with queries and mutations flowing through a particular object instance rather than the database itself. The storage implemented by the objects includes: open channels, past commitment revocation states, the channel graph which includes authenticated node and channel announcements, outgoing payments, and invoices

Installation and Updating

$ go get -u github.com/lightningnetwork/lnd/channeldb