mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-04-17 08:21:06 +02:00
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.
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