lnd.xprv/channeldb
Andras Banki-Horvath 02f9d91e49 kvdb+etcd: only lock on bucket path mod revision for reads and writes
This commit reduces the compare set size the STM will submit in
transactions by adding only the bucket keys along the bucket path to a
specific lock set. This lock set then used to filter the read set,
effectively removing all read only keys from the transaction predicate
that are not bucket keys.
By tracking if a read-write tx actually changes something, we can also
"bump" the mod revision of the bucket keys.
With this trick we essentially implement a read-write lock for our
bucket structure greatly reducing transaction processing time.
2020-05-22 11:26:25 +02:00
..
kvdb kvdb+etcd: only lock on bucket path mod revision for reads and writes 2020-05-22 11:26:25 +02:00
migration_01_to_11 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration12 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migration13 channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
migtest channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07: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 kvdb+etcd: enable channeldb testing with both bdb/etcd 2020-05-22 11:26:25 +02:00
channel.go channeldb/channel: don't print ChanStatusDefault when it's not 2020-04-10 16:11:44 -07:00
codec.go channeldb: Fix dropped error in migrations test 2019-09-12 15:49:21 +00:00
db_test.go kvdb+etcd: enable channeldb testing with both bdb/etcd 2020-05-22 11:26:25 +02:00
db.go kvdb+etcd: enable channeldb testing with both bdb/etcd 2020-05-22 11:26:25 +02:00
doc.go channeldb: create new channeldb package, update lnwallet to use new API 2015-12-26 12:35:15 -06:00
duplicate_payments.go channeldb: export sequenceNum in MPPayment 2020-04-07 07:03:21 +02:00
error.go channeldb: add historical channel bucket lookup 2020-02-21 13:23:30 +02: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: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
forwarding_package_test.go build: silence new linter errors, tidy modules 2020-03-18 19:35:29 -07:00
forwarding_package.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
graph_test.go channeldb+routing: remove tx arg for ForEachNode 2020-05-12 17:53:20 -07:00
graph.go channeldb+routing: remove tx arg for ForEachNode 2020-05-12 17:53:20 -07:00
invoice_test.go channeldb: inject clock into database 2020-01-20 11:08:30 +01:00
invoices.go channeldb: (nit) remove size argument from map make 2020-04-24 19:15:08 +02:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go channeldb/migration13: migrate to mpp structure 2020-03-09 18:31:39 +01:00
meta_test.go kvdb+etcd: enable channeldb testing with both bdb/etcd 2020-05-22 11:26:25 +02:00
meta.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
mp_payment.go routing: return full htlc attempt from shard handler 2020-05-12 19:56:50 +02:00
nodes_test.go channeldb: add DeleteLinkNode method 2018-07-17 17:35:25 -07:00
nodes.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07:00
options.go channeldb/db: adds optional dry-run abort for migrations 2020-05-11 15:38:45 -07:00
payment_control_test.go channeldb+htlcswitch: don't use fastsha256 in tests 2020-05-20 11:07:38 +02:00
payment_control.go channeldb: return updated payment on attempt update 2020-04-08 08:54:01 +02:00
payments_test.go channeldb: remove dead code from payments test 2020-04-24 19:15:08 +02:00
payments.go channeldb: eliminate extra copy in QueryPayments 2020-05-04 12:13:47 -07: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: Fix dropped error in migrations test 2019-09-12 15:49:21 +00:00
waitingproof.go channeldb: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07: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: convert to uniformly use new kvdb abstractions 2020-03-18 19:34:49 -07: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