lnd/channeldb
yyforyongyu 7cf28773bf
multi: export channel status field in migration25
Previously, in `migration25.OpenChannel`, there was a private field
`chanStatus` used to keep track of the channel status. The following
migrations, `migration26` and `migration27` also have their own
`OpenChannel` defined, with `migration26` inherited from `migration25`,
and `migration27` inherited from `migration26`. The private field
`chanStatus`, however, is NOT inherited and each of the migrations uses
its own. This is fine for reading and writing as, under the hood, the
`chanStatus` is just a `uint8` value. Because each migration has its own
fetcher and putter, it can safely access its private field to read and
write it correctly.

The issue pops up when we use the method
`migration25.FundingTxPresent()`. Because it's evaluating its channel
status using its own private field `chanStatus`, this field would always
be the default value(`ChanStatusDefault`), leading the statement
`!c.hasChanStatus(ChanStatusRestored)` to always be true. Thus a
restored channel will be mistakenly considered to have funding tx
present, causing failures in reading the channel info in the following
migrations.

We fix this by exporting the `ChanStatus` field so its value can be set
by following migrations.
2022-05-23 03:55:00 +08: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 multi: export channel status field in migration25 2022-05-23 03:55:00 +08:00
migration26 multi: export channel status field in migration25 2022-05-23 03:55:00 +08:00
migration27 multi: export channel status field in migration25 2022-05-23 03:55:00 +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 channeldb: use TLV for InitialLocalBalance and InitialRemoteBalance 2022-05-18 19:46:09 +08: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+migration27: patch balance fields for historical chan 2022-05-20 06:55:31 +08: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