lnd/channeldb
eugene 2e3246aafe
channeldb: copy value from boltdb's Get instead of using it directly
This can cause an intermittent panic otherwise if bbolt remaps itself
via munmap and mmap. From bbolt's documentation:

* Byte slices returned from Bolt are only valid during a transaction.
Once the transaction has been committed or rolled back then the memory
they point to can be reused by a new page or can be unmapped from
virtual memory and you'll see an unexpected fault address panic when
accessing it.
2022-05-17 11:14:40 -04:00
..
migration multi: typo fixes [skip ci] 2022-05-03 20:55:40 +00:00
migration12 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration13 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration16 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration20 kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
migration21 multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
migration23 multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
migration24 channeldb+migration: export commonly used methods 2022-04-20 01:18:12 +08:00
migration25 channeldb+migration: add migration test for patching balances 2022-04-20 01:18:13 +08:00
migration_01_to_11 channeldb+migration: export commonly used methods 2022-04-20 01:18:12 +08:00
migtest multi: formatting and comment fixes 2022-02-10 11:02:02 +01: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 channeldb+lnwallet: store revocation log using the new format 2022-04-20 01:18:14 +08:00
channel.go Merge pull request #6347 from yyforyongyu/5388-rm-revc-log 2022-05-05 15:52:59 -07:00
codec.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
db_test.go channeldb+lnwallet: store revocation log using the new format 2022-04-20 01:18:14 +08:00
db.go channeldb: copy value from boltdb's Get instead of using it directly 2022-05-17 11:14:40 -04:00
duplicate_payments.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
error.go channeldb+invoices: use payment addr as primary index 2020-05-26 18:55:27 -07:00
forwarding_log_test.go channeldb: fix for Windows clock resolution 2020-08-05 09:15:03 +02:00
forwarding_log.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
forwarding_package_test.go channeldb: add method to wipe all forwarding packages 2021-09-23 13:22:33 +08:00
forwarding_package.go channeldb: add method to wipe all forwarding packages 2021-09-23 13:22:33 +08:00
graph_cache_test.go channeldb: add new ForEachNode method using the channel graph cache 2021-11-04 15:30:25 -07:00
graph_cache.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
graph_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
graph.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
invoice_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
invoices.go channeldb+invoices: refactor invoice logic when updating 2022-05-11 13:57:46 -04:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go channeldb/migration: remove old forwarding packages 2021-09-23 13:22:34 +08:00
meta_test.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
meta.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
mp_payment_test.go channeldb: read raw htlc attempt session key 2021-05-19 09:03:52 +02:00
mp_payment.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
nodes_test.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
nodes.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
options_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
options.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
paginate.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
payment_control_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
payment_control.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
payments_test.go routing+channeldb: send payment metadata from invoice 2022-04-13 22:55:40 +02:00
payments.go channeldb: add CountTotal option to payment query 2022-05-02 12:32:06 +02:00
peers_test.go multi: store peer flap rate on disk on best effort basis 2020-09-08 13:49:46 +02:00
peers.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
README.md multi: unify code blocks in READMEs 2021-01-22 09:14:11 +01: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
reports_test.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
reports.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
revocation_log_test.go channeldb: use BigSize to encode htlc amount 2022-04-20 01:19:40 +08:00
revocation_log.go channeldb: use BigSize to encode htlc amount 2022-04-20 01:19:40 +08:00
setup_test.go channeldb/test: test with postgres 2021-10-29 10:54:44 +02:00
waitingproof_test.go multi: run gosimports 2022-02-10 11:02:01 +01:00
waitingproof.go multi: run gosimports 2022-02-10 11:02:01 +01:00
witness_cache_test.go channeldb: move makeTestDB out of test to make it available for other tests 2020-07-28 17:57:29 +02:00
witness_cache.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02: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