lnd.xprv/channeldb
Johan T. Halseth 178996f0d3
channeldb/payments+control_tower: split OutgoingPayments
This commit changes the format used to store payments within the
DB. Previously this was serialized as one continuous struct
OutgoingPayment, which also contained an Invoice struct we where only
using a few fields of. We now split it up into two simpler sub-structs
CreationInfo, AttemptInfo and PaymentPreimage.

We also want to associate the payments more closely with payment
statuses, so we move to this hierarchy:

There's one top-level bucket "sentPaymentsBucket" which contains a set
of sub-buckets indexed by a payment's payment hash. Each such sub-bucket
contains several fields:
paymentStatusKey -> the payment's status
paymentCreationInfoKey -> the payment's CreationInfo.
paymentAttemptInfoKey -> the payment's AttemptInfo.
paymentSettleInfoKey -> the payment's preimage (or zeroes for
non-settled payments)

The CreationInfo is information that is static during the whole payment
lifcycle. The attempt info is set each time a new payment attempt
(route+paymentID) is sent on the network. The preimage is information
only known when a payment succeeds.  It therefore makes sense to split
them.

We keep legacy serialization code for migration puproses.
2019-05-27 20:18:56 +02:00
..
addr_test.go channeldb/addr_test: add tests for invalid onion addresses 2019-01-17 14:16:15 +01:00
addr.go channeldb/addr: sanity check onion address length before writing to db 2019-01-17 14:16:15 +01:00
channel_cache_test.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_cache.go channeldb/channel_cache: add channelCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
channel_test.go multi: move CsvDelay into ChannelConstraints 2019-01-11 16:58:15 -08:00
channel.go Typo corrections in various comments 2019-05-10 17:15:54 +02:00
codec.go channeldb/codec: add privateKey serialization 2019-05-27 20:18:56 +02:00
control_tower_test.go channeldb: put payment status in new bucket 2019-05-27 20:18:56 +02:00
control_tower.go channeldb: put payment status in new bucket 2019-05-27 20:18:56 +02:00
db_test.go channeldb: ensure restored channels can't be mutated 2019-01-28 20:24:48 -08:00
db.go channeldb: write chan updates through reject+channel cache 2019-04-01 16:34:51 -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+routing: extend edge lookup methods with zombie index check 2019-03-27 13:06:57 -07: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 multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
forwarding_package_test.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
forwarding_package.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
graph_test.go channeldb/graph: don't nil curve of returned PubKey 2019-05-09 10:49:58 +02:00
graph.go channeldb/graph: don't nil curve of returned PubKey 2019-05-09 10:49:58 +02:00
invoice_test.go cnct+htlcswitch+invoices: move invoice parameter check out of link 2019-05-15 14:42:12 +02:00
invoices.go cnct+htlcswitch+invoices: move invoice parameter check out of link 2019-05-15 14:42:12 +02:00
legacy_serialization.go channeldb/legacy_serialization: add deserializeCloseChannelSummaryV6 2018-11-21 10:12:05 +01:00
log.go multi: init subsystem loggers via build pkg 2018-10-05 13:04:45 +09:00
meta_test.go channeldb: add gossiper message store key migration 2019-02-14 18:29:39 -08:00
meta.go multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
migrations_test.go channeldb: add gossiper message store key migration 2019-02-14 18:29:39 -08:00
migrations.go channeldb: write chan updates through reject+channel cache 2019-04-01 16:34:51 -07:00
nodes_test.go channeldb: add DeleteLinkNode method 2018-07-17 17:35:25 -07:00
nodes.go channeldb: add new AddrsForNode method 2019-01-28 20:24:22 -08:00
options.go channeldb/options: add Options w/ functional modifiers 2019-04-01 16:33:13 -07:00
payments_test.go channeldb/payments+control_tower: split OutgoingPayments 2019-05-27 20:18:56 +02:00
payments.go channeldb/payments+control_tower: split OutgoingPayments 2019-05-27 20:18:56 +02:00
README.md build+multi: switch from bolt to bbolt 2018-03-10 19:01:13 -08:00
reject_cache_test.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07:00
reject_cache.go channeldb/reject_cache: add rejectCache w/ randomized eviction 2019-04-01 16:25:31 -07: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 multi: switch from bolt packge to bbolt package for all imports 2018-11-29 20:33:49 -08:00
witness_cache_test.go channeldb+witness_beacon: use sha256 lookup+delete witness 2019-02-19 17:06:42 -08:00
witness_cache.go channeldb+witness_beacon: use sha256 lookup+delete witness 2019-02-19 17:06:42 -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