lnd.xprv/channeldb
Olaoluwa Osuntokun 6bf15e8f2b
channeldb: fix bug in pruneGraphNodes by switching to using ref counting
In this commit, we fix an existing bug in the pruneGraphNodes method.
Before this commit, if a node was involved in a channel, but only one of
the edges was advertised, then either it, or the other node would be
erroneously pruned from the graph. They shouldn't be pruned as there's
still an edge connecting the, although only 1/2 of the edge is actually
advertised.

In order to fix this, we'll now do two passes: the first pass will
populate a ref count map of all known nodes in the graph, the second
pass will increment the ref count each time a node is found in the
graph. With this two pass method, we ensure that nodes are only deleted
if there are absolutely no edges pointing to them within the graph.
2018-07-22 18:59:36 -07:00
..
addr_test.go channledb/addr_test: add negative test for unknown types 2018-07-03 17:07:10 -07:00
addr.go channledb/addr: remove silent encoding failure for unknown types 2018-07-03 17:07:10 -07:00
channel_test.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
channel.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
codec.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
db_test.go multi: comprehensive typo fixes across all packages 2018-02-06 19:11:11 -08:00
db.go channeldb+server: prune link nodes on startup 2018-07-17 17:35:31 -07:00
doc.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
error.go channeldb: add new ForwardingLog storage namespace 2018-03-06 13:56:06 -05: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/forwarding_log: use public Read/WriteElements 2018-07-03 17:07:09 -07:00
forwarding_package_test.go multi: switch over import paths from roasbeef/* to btcsuite/* 2018-07-13 17:05:39 -07:00
forwarding_package.go build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
graph_test.go channeldb: modify TestPruneGraphNodes to test nodes w/ single edge 2018-07-22 18:57:18 -07:00
graph.go channeldb: fix bug in pruneGraphNodes by switching to using ref counting 2018-07-22 18:59:36 -07:00
invoice_test.go channeldb: add new test for duplicate invoice settles 2018-07-17 16:27:04 -07:00
invoices.go channeldb: ensure that we return an invoice on duplicate settles 2018-07-17 16:28:08 -07:00
log.go lnd: remove seelog logger 2017-06-25 14:19:56 +01:00
meta_test.go build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
meta.go build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
migrations.go channeldb: add new migration to finalize invoice migration for outgoing payments 2018-07-12 00:22:28 -07:00
nodes_test.go channeldb: add DeleteLinkNode method 2018-07-17 17:35:25 -07:00
nodes.go channeldb: refactor methods to allow using existing db transaction 2018-07-17 17:35:26 -07:00
payments_test.go channeldb+lnrpc: store the payment pre-image not rhash 2018-01-27 18:36:33 -08:00
payments.go lntest: ensure we always cancel active streaming notifications 2018-07-06 12:21:54 -07:00
README.md build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
waitingproof_test.go channeldb: use raw pub keys and signatures directly in vertex/edge structs 2018-02-06 20:14:31 -08:00
waitingproof.go channeldb/waitingproof: improve external consistency of store 2018-06-05 21:33:47 -07:00
witness_cache_test.go channeldb: add new WitnessCache structure 2018-01-22 19:19:37 -08:00
witness_cache.go build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08: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