5e9166e478
In this commit, we make an API change that’s meant to reduce the amount of garbage we generate when doing pathfinding or syncing nodes with our latest graph state. Before this commit, we would always have to fully decode the public key and signatures when reading a edge or vertex struct. For the edges, we may need several EC operations to fully decode all the pubkeys. This has been seen to generate a ton of garbage, as well as slow down path finding a good bit. To remedy this, we’ll now only ever read the *raw* bytes from disk. In the event that we actually need to verify a signature (or w/e), only *then* will we fully decode everything. |
||
---|---|---|
.. | ||
addr.go | ||
channel_test.go | ||
channel.go | ||
codec.go | ||
db_test.go | ||
db.go | ||
doc.go | ||
error.go | ||
fees.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