lnd/channeldb
positiveblue 8563e1f409
channeldb/invoices: add IsAMP and IsKeysend helpers
The only way to know if an invoice is AMP, Keysend, etc is to look at
its shape/characteristics. This commit adds a couple of helper functions
to encapsulate the logic of these checks.

If all these types cannot intersect: an invoice cannot be AMP and
Keysend or Keysend and Bolt12, etc it could be useful to add an extra
field to store this information instead of relying on checking how the
invoice looks like.
2023-01-20 03:43:39 -08:00
..
migration multi: fix make fmt 2022-08-23 22:10:24 +08: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: fix make fmt 2022-08-23 22:10:24 +08:00
migration26 multi: fix make fmt 2022-08-23 22:10:24 +08:00
migration27 multi: fix make fmt 2022-08-23 22:10:24 +08:00
migration29 channeldb: BigSize migration, store zero-conf, scid-alias bits 2022-07-07 17:10:27 -04:00
migration30 channeldb: add shouldFail param to ApplyMigrationWithDB 2023-01-11 13:59:03 +02:00
migration_01_to_11 channeldb: use T.TempDir to create temporary test directory 2022-08-24 08:58:16 +08:00
migtest channeldb: add shouldFail param to ApplyMigrationWithDB 2023-01-11 13:59:03 +02:00
models multi: create channeldb/models package 2023-01-16 07:14:55 -08: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: create channeldb/models package 2023-01-16 07:14:55 -08:00
channel.go multi: create channeldb/models package 2023-01-16 07:14:55 -08:00
codec.go channeldb: BigSize migration, store zero-conf, scid-alias bits 2022-07-07 17:10:27 -04:00
db_test.go htlcswitch: keep final htlc outcome 2022-10-27 16:42:36 +02:00
db.go rpcserver: add LookupHtlc call 2022-10-27 16:43:09 +02:00
duplicate_payments.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
error.go multi: break invoice depenency on channeldb 2023-01-16 07:31:09 -08:00
forwarding_log_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
forwarding_log.go multi: Fix typos [skip ci] 2022-01-24 12:19:02 +02:00
forwarding_package_test.go channeldb: use T.TempDir to create temporary test directory 2022-08-24 08:58:16 +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 channeldb: use T.TempDir to create temporary test directory 2022-08-24 08:58:16 +08:00
graph.go server+funding: allow scid-alias, zero-conf chantypes, scid-alias 2022-07-07 17:10:28 -04:00
height_hint_test.go chainntnfs: move cache implementation to channeldb 2023-01-16 03:13:17 -08:00
height_hint.go chainntnfs: move cache implementation to channeldb 2023-01-16 03:13:17 -08:00
invoice_test.go multi: break invoice depenency on channeldb 2023-01-16 07:31:09 -08:00
invoices.go channeldb/invoices: add IsAMP and IsKeysend helpers 2023-01-20 03:43:39 -08:00
legacy_serialization.go Revert "channeldb: remove unsupported migrations" 2019-10-12 00:47:45 -07:00
log.go migration30: add migration to convert old revocation logs 2022-07-12 21:01:08 +08:00
meta_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
meta.go channeldb: export DB migration related functions 2022-10-13 09:45:07 +02:00
mp_payment_test.go channeldb: read raw htlc attempt session key 2021-05-19 09:03:52 +02:00
mp_payment.go lnwire: allow longer failure messages 2022-12-02 14:27:59 +01:00
nodes_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
nodes.go multi: fix make fmt 2022-08-23 22:10:24 +08:00
options_test.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
options.go channeldb: add optional meta and migration30 2022-07-12 21:01:11 +08:00
paginate.go multi: formatting and comment fixes 2022-02-10 11:02:02 +01:00
payment_control_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
payment_control.go channeldb+routing: fix format 2022-12-07 18:38:01 +08:00
payment_status.go channeldb: move payment status code into new file 2022-12-07 18:38:01 +08:00
payments_test.go channeldb+lnd: rpc server filters payments by date 2022-12-05 20:04:47 +08:00
payments.go channeldb: move payment status code into new file 2022-12-07 18:38:01 +08:00
peers_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
peers.go kvdb: move channeldb/kvdb to top level 2021-05-07 14:18:56 +02:00
README.md scripted-diff: replace ⛰ emoji with $ [skip ci] 2022-10-28 12:06:49 -04: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 multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
reports.go multi: use btcd's btcec/v2 and btcutil modules 2022-03-09 19:02:37 +01:00
revocation_log_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
revocation_log.go multi: fix make fmt 2022-08-23 22:10:24 +08:00
setup_test.go channeldb/test: test with postgres 2021-10-29 10:54:44 +02:00
waitingproof_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
waitingproof.go multi: run gosimports 2022-02-10 11:02:01 +01:00
witness_cache_test.go multi: replace defer cleanup with t.Cleanup 2022-10-13 17:46:54 +08:00
witness_cache.go multi: fix make fmt 2022-08-23 22:10:24 +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