4ae0b008ed
In this commit we comptely overhaul the existing storage of the OpenChannel struct to use the new common serialization defined within the codec.go file. Additionally, we’ve modified the structure of the channel database on disk. Rather then use the existing prefix based segmentation, everything is now bucket based. This has resulted in much simpler and easier to follow code. The bucket progression is: openChannelBucket -> nodeBucket -> chainBucket -> channelBucket. We add a chainBucket as it’s possible that in the future we may have several channels on distinct chains with a given node. With the above changes, we’re able to delete much of the existing code within the file, drastically reducing its size. |
||
---|---|---|
.. | ||
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 |
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