6bf15e8f2b
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. |
||
---|---|---|
.. | ||
addr_test.go | ||
addr.go | ||
channel_test.go | ||
channel.go | ||
codec.go | ||
db_test.go | ||
db.go | ||
doc.go | ||
error.go | ||
fees.go | ||
forwarding_log_test.go | ||
forwarding_log.go | ||
forwarding_package_test.go | ||
forwarding_package.go | ||
graph_test.go | ||
graph.go | ||
invoice_test.go | ||
invoices.go | ||
log.go | ||
meta_test.go | ||
meta.go | ||
migrations.go | ||
nodes_test.go | ||
nodes.go | ||
payments_test.go | ||
payments.go | ||
README.md | ||
waitingproof_test.go | ||
waitingproof.go | ||
witness_cache_test.go | ||
witness_cache.go |
channeldb
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