lnd/graph/db
Erick Cestari 626a0b5f61 multi: drop tor v2 onion production, keep wire codec faithful
Tor stopped serving v2 onion services in October 2021; lnd should not
produce v2 addresses anymore, but it must still verify signatures on
and re-broadcast peer NodeAnnouncement messages that carry v2 entries.

Stop accepting v2 as configuration input (lncfg), strip the legacy
`--tor.v2` flag from the sample config, and remove the
`tor.OnionHostToFakeIP` helper. Operator entry points (`--externalip`,
`--listen`, `lncli connect`, `lncli wtclient towers add`) fail fast on
a v2 `.onion` string, so upgrading nodes must remove any v2 entry from
`lnd.conf` before lnd will start.

Filter persisted v2 state before use without rewriting on-disk records:
the self-announcement builder strips any v2 entry inherited from the
stored self-node; the watchtower client drops v2 entries from each
persisted tower's address list (skipping the tower entirely if no
non-v2 address remains); the autopilot connector, graph bootstrapper,
and static-channel backup restore paths skip v2 entries before
attempting outbound dials. Restrict the Tor controller's ADD_ONION
path to v3 keys, including the encrypted on-disk legacy-key fallback.

For inbound announcements, keep the wire codec wire-faithful:
`lnwire.WriteOnionAddr`, `graph/db.encodeOnionAddr`, and the matching
decoders round-trip v2 bytes so `DataToSign` reproduces the bytes the
remote peer signed, signature validation succeeds, and the announcement
is persisted to the graph DB and re-broadcast across restarts byte-for-
byte. RPC surfaces continue to expose the full address set so external
tools can independently reproduce and verify the signed bytes.

Add a netann regression test that signs a [v3, v2, ipv4] announcement,
round-trips it through Encode/Decode, verifies the signature, and
confirms the resulting models.Node preserves the v2 entry. Add a
graph bootstrapper test asserting v2 entries are skipped while v3 and
plain TCP entries on the same node still surface as bootstrap
candidates.

(cherry picked from commit 2ae1db83b3)
2026-05-26 10:25:30 +00:00
..
migration1 graph/db/migration1: fix defer commit/rollback in test tx executor 2026-02-25 18:52:34 +01:00
models multi: drop tor v2 onion production, keep wire codec faithful 2026-05-26 10:25:30 +00:00
addr.go multi: drop tor v2 onion production, keep wire codec faithful 2026-05-26 10:25:30 +00:00
addr_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
benchmark_test.go graph/db: add node horizon index benchmark 2026-03-31 12:05:36 +02:00
channel_cache.go graph/db: version channelCache by gossip version 2026-02-20 08:46:57 +02:00
channel_cache_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
codec.go channeldb/graphdb: move outpoint ser/deser funcs to graphdb 2024-11-28 13:34:08 +02:00
errors.go graph/db: let IsZombieEdge return an error 2025-06-26 10:19:51 +02:00
graph.go graph/db: add gossip version parameter to FilterKnownChanIDs 2026-04-09 10:45:49 +05:45
graph_cache.go graph/db: refactor CachedEdgePolicy to use explicit boolean fields 2026-02-13 07:21:24 +02:00
graph_cache_state.go graph/db: allow async cache population 2026-03-24 09:49:23 +02:00
graph_cache_test.go graph/db: refactor CachedEdgePolicy to use explicit boolean fields 2026-02-13 07:21:24 +02:00
graph_test.go graph/db: fix FetchChannelEdgesByID zombie fallback versioning 2026-04-09 10:45:49 +05:45
interfaces.go graph/db: add gossip version parameter to FilterKnownChanIDs 2026-04-09 10:45:49 +05:45
kv_store.go graph/db: add gossip version parameter to FilterKnownChanIDs 2026-04-09 10:45:49 +05:45
kv_store_features_test.go graphdb: fix backwards-compat for channel edge feature deserialization 2026-02-03 09:12:04 -08:00
log.go graph/db+log: use v2 logger for graph subsystem 2025-07-29 11:34:47 +02:00
notifications.go graphdb: thread topology update context 2026-02-25 16:11:47 +02:00
options.go graph/db: version NodeUpdatesInHorizon and ChanUpdatesInHorizon 2026-03-31 09:14:49 +02:00
reject_cache.go graph/db: add versioned HasChannelEdge method 2026-02-13 07:21:24 +02:00
reject_cache_test.go graph/db: migrate tests from Fatal to require helpers 2026-02-25 11:14:55 +02:00
setup_test.go refactor: move graph related DB code to graph/db from channeldb 2024-11-28 13:36:13 +02:00
sql_store.go multi: drop tor v2 onion production, keep wire codec faithful 2026-05-26 10:25:30 +00:00
test_kvdb.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00
test_postgres.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00
test_sqlite.go graph/db: add helper variable for tests 2026-02-13 07:21:21 +02:00