lnd.xprv/channeldb
Olaoluwa Osuntokun 2e75499787
channeldb+routing: move adding shell nodes into db txn of AddChannelEdge
In this commit, we fix a slight race condition that can occur when we go
to add a shell node for a node announcement, but then right afterwards,
a new block arrives that causes us to prune an unconnected node. To
ensure this doesn't happen, we now add shell nodes within the same db
transaction as AddChannelEdge. This ensures that the state is fully
consistent and shell nodes will be added atomically along with the new
channel edge.

As a result of this change, we no longer need to add shell nodes within
the ChannelRouter, as the database will take care of this operation as
it should.
2018-07-22 21:02:53 -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+routing: move adding shell nodes into db txn of AddChannelEdge 2018-07-22 21:02:53 -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