LL
← All projectsLightning Labs

LND

Go implementation of a complete Lightning Network node.

BitcoinLightning NetworkNormal
Repository coverage

1239 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

116security candidates168second-pass queue908AI analyses
55commits · 30 days
169commits · 60 days
828commits · 180 days
1227commits · 365 days
Backfill bands
Aug 5 → Feb 6405 seen5 candidatesComplete
Feb 6 → Jun 6665 seen28 candidatesComplete
Jun 6 → Jul 689 seen4 candidatesComplete
Jul 6 → Aug 569 seen0 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

67/100 average clarity
279Strong · 80–100
562Adequate · 60–79
367Thin · 40–59
31Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Olaoluwa Osuntokun19940130374
ziggie41015315164
Jared Tobin908171
Elle Mouton26731205067
Erick Cestari26724070
bitromortac46543067
yyforyongyu55345065
saubyk15213070
Oli727057
Suheb323075
elnosh323071
George Tsagkarelis32120066
Analysis record

Published AI watches

Last scanned 32 minutes ago

Moderate 63 AI analysisMessage 58 · Thin
LL Lightning LabsLND BitcoinLightning Network

Merge pull request #11024 from ziggie1984/invoices-update-validation

This commit tightens how LND processes invoice payments, especially for newer multi-path (MPP) and AMP invoices, keysend payments, and replayed payments. It adds checks that ensure the right payment preimage is used for each invoice type a…

Preimage validation added for AMP and regular invoice replaysAMP invoices forced into MPP update path, preventing legacy-path processingLegacy settlement now fails when invoice-level preimage is missing
61f3b5a7by ziggieXXX+482−114 files
No security note in commit
Moderate 59 AI analysisMessage 35 · Opaque
LL Lightning LabsLND BitcoinLightning Network

invoices: refine update handling

This commit tightens how LND handles invoice payment updates, especially for newer 'AMP' invoices and old-style 'keysend' payments. It adds checks so that the wrong kind of payment cannot be processed against the wrong kind of invoice, and…

Added preimage/hash mismatch checks for both regular and AMP invoice replaysAMP records now require an MPP payload, preventing AMP processing on the legacy pathLegacy path now rejects AMP invoices and invoices missing invoice-level preimages
6be6350eby ziggie+476−113 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: update 0.21.2 release notes

This commit only updates the release notes document for version 0.21.2. It adds a bullet point describing a previously merged code change about invoice handling and adds a contributor name to the credits list. No actual code was changed, s…

758bbb8eby ziggie+6−01 file
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: move gossip bounds note to v0.21.2

This commit only moves an existing release-note entry from one version's notes (v0.22.0) to another (v0.21.2). It does not change any code, build files, configuration, or tests. The change is purely editorial documentation bookkeeping.

83e7eb8cby ziggie+11−112 files
No security note in commit
High 72 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

discovery: bound channel range reply buffering

This change fixes a way a malicious or buggy peer could make an LND node use an unpredictable amount of memory while syncing the Lightning channel graph. Before the fix, the node only limited the size of one compressed reply message, but a…

Resource exhaustion / unbounded memory growth in gossip syncRemote peer can influence memory allocation via ReplyChannelRange streamMissing aggregate limit on decoded working set
ceff94faby Olaoluwa Osuntokun+335−153 files
Vendor flagged security relevance
Low 33 AI analysisMessage 47 · Thin
LL Lightning LabsLND BitcoinLightning Network

docs: update release notes

This commit updates the release notes for LND 0.21.2 to describe a fix for a bug in the HTLC interceptor RPC. The bug caused LND to fail to forward payments in blinded routes when the next hop was identified by node ID instead of channel I…

Blinded route forwarding failure could disrupt payment routing or be used to probe path structure.Sentinel value change in RPC API could cause client misclassification of forwards if not handled.Release notes describe the change as a fix for a forwarding issue, not as a security vulnerability.
f42b4298by bitromortac+20−01 file
No security note in commit
Informational 14 AI analysisMessage 83 · Strong
LL Lightning LabsLND BitcoinLightning Network

itest: cover blinded route next_node_id forwarding

This commit only adds new integration tests for an existing feature in LND: forwarding blinded payments where the next hop is identified by node ID rather than channel ID. It does not change production code, fix a bug, or introduce any new…

da6a40c0by bitromortac+432−02 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

witness beacon: report node-ID next hop to the on-chain HTLC interceptor

This change fixes a reporting gap in LND's 'witness beacon,' a component that watches on-chain transactions and tells the HTLC interceptor where a payment should go next. Previously, when the next hop was identified by a node ID rather tha…

Missing security-critical metadata in on-chain interception pathBehavioral parity between on-chain and off-chain HTLC interceptionPotential misclassification of node-ID forwards as final receives
9c4b8bfeby bitromortac+59−52 files
No security note in commit
Moderate 59 AI analysisMessage 81 · Strong
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: forward node-ID blinded hops via non-strict forwarding

This commit fixes a bug in LND's payment forwarding for 'blinded routes'—a privacy feature in the Lightning Network. Previously, if the next hop was identified by node ID rather than a specific channel ID, the payment could not be forwarde…

Fixes a functional forwarding failure for blinded-route payments using node-ID next hops (issue #10937).Prevents private channel SCID leakage in failure messages for node-ID blinded hops by returning FailUnknownNextPeer instead of a channel_update.Adds circular-route filtering for node-ID next hops before non-strict forwarding selection.
dbc57040by bitromortac+334−416 files
No security note in commit
Informational 19 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch+lnrpc: report node-ID next hop to the off-chain HTLC interceptor

This change improves how the Lightning Network Daemon (LND) reports forwarding details to external plugins that inspect HTLCs (payment packets). For a new type of blinded route where the next hop is identified by node ID rather than a spec…

Information-correctness fix for HTLC interceptor APIPrevents misclassification of node-ID forwards as exit hopsAdds explicit sentinel to disambiguate zero SCID semantics
32373b76by bitromortac+29−13 files
No security note in commit
Low 25 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: classify a node-ID forward as a forward event

This commit fixes a bookkeeping bug in LND's HTLC event stream. When a payment is forwarded to a 'blinded' next hop identified only by a node public key (not a channel ID), and it fails before the switch picks an outgoing channel, the even…

Event misclassification in HTLC event stream (forward reported as receive)Blinded/node-ID forwarding path introduced prior to this fixFailure and resolution packets dropped next-hop metadata before fix
a4844ef5by bitromortac+149−04 files
No security note in commit
Low 29 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch/hop: decode next_node_id blinded hops

This commit adds support in LND for a different way of identifying the next hop in a private ('blinded') Lightning payment route. Previously LND expected the next hop to be identified by a channel ID; now it also accepts the next node's pu…

New validation enforces BOLT 4 mutual exclusivity of short_channel_id and next_node_id in blinded route dataPreviously ambiguous or unhandled next_node_id forwarding case now explicitly decodedNo memory-safety, cryptographic, or authorization changes observed
4fd4289aby bitromortac+471−86 files
No security note in commit
Moderate 60 AI analysisMessage 78 · Adequate
LL Lightning LabsLND BitcoinLightning Network

lnwire: cap decoded short channel IDs

This commit tightens a safety limit in LND's Lightning wire protocol parser. Previously, a compressed network message could decompress into an unbounded number of short channel IDs, potentially consuming far more memory than the wire messa…

Resource-limit bypass: compressed-input bound did not bound decoded outputMemory-exhaustion risk from zlib decompression of peer-supplied dataTruncated/corrupt zlib streams previously accepted as valid partial results
d1622919by Olaoluwa Osuntokun+271−502 files
No security note in commit
Informational 18 AI analysisMessage 85 · Strong
LL Lightning LabsLND BitcoinLightning Network

lnrpc/routerrpc: add outgoing_node_id to HTLC intercept request

This commit only updates the API definition and auto-generated code for LND's HTLC interceptor. It adds a new optional field, outgoing_requested_node_id, and documents that when a blinded route uses a node ID instead of a channel ID, the e…

No runtime logic changed; only protobuf schema and generated stubsNew field is explicitly documented as unpopulated until later commitsSentinel value (MaxUint64) introduced to prevent misclassification of final receive vs node-addressed forward
14640a50by bitromortac+48−73 files
No security note in commit
Informational 18 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

multi: represent the blinded forwarding next hop as an fn.Either

This commit is a behind-the-scenes code cleanup in the LND Lightning node. It changes how the 'next hop' for forwarding payments is stored internally so that, in the future, blinded routes can identify the next hop by a node's public key i…

Refactor of core HTLC forwarding data structure (ForwardingInfo.NextHop)Preparation for blinded route next-hop identification by node public keyEncapsulation of Either type behind IsExit() and NextHopChannel() to centralize exit-hop detection
d28a7176by bitromortac+83−2612 files
No security note in commit
Low 44 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

htlcswitch: key the aux traffic shaper on the evaluated channel

This commit fixes a routing bug in LND's Lightning payment forwarding. When a payment could take any of several parallel channels to the same next peer, the node was accidentally asking an optional 'auxiliary traffic shaper' about the chan…

Logic error: wrong channel identifier used for auxiliary policy/bandwidth checkPotential information disclosure: real SCID could leak if passed to shaper-driven wire messages; commit explicitly prevents thisParallel-channel forwarding correctness issue
b1667800by bitromortac+133−12 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

github: bump gateway code-review to v0.6.0

This commit updates a GitHub Actions workflow that runs an optional code-review bot called 'gateway'. It only changes two pinned version numbers (SHA hashes) for the bot's action and its runtime, moving from v0.5.0 to v0.6.0. There is no c…

17a4d42fby Suheb+4−41 file
No security note in commit
Moderate 58 AI analysisMessage 68 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: recover missing db version

This patch fixes a database migration bug in LND's channel database. Some databases were created without recording their schema version number, which could cause future mandatory upgrades to be skipped. The fix detects that missing version…

Database schema version key can be absent due to an init-ordering regressionMissing version key previously caused migration selection to treat DB as latest, potentially skipping mandatory migrationsFix recovers baseline from last mandatory version before the regression (33)
68264c70by Elle Mouton+176−33 files
Vendor flagged security relevance
Informational 22 AI analysisMessage 73 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: make waiting proof migration repeatable

This commit fixes a database migration in LND so it can safely run twice. Previously, if a certain recovery process re-ran migration 35 on a database that already had newer-format 'waiting proof' records, the migration would likely fail or…

Database migration idempotency/robustness fixPotential data corruption or node startup failure if migration re-run against mixed-format bucketNo input validation of attacker-controlled data; issue is local/state-recovery only
3aff61aeby Elle Mouton+93−02 files
No security note in commit
Moderate 54 AI analysisMessage 76 · Adequate
LL Lightning LabsLND BitcoinLightning Network

channeldb: preserve db version during init

This commit fixes a database initialization bug in LND's channel database. Previously, creating an empty metadata bucket during setup could trick the code into thinking an old or partially-created database was already fully up-to-date, pot…

Database version detection logic flawPotential migration skip due to incorrect initialized-state detectionNew explicit error for missing DB version key
619913bfby Elle Mouton+111−104 files
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-prioritydocs: add release-notesby ziggie · b6a05f79 · Feb 25, 2026 · 1 fileMessage 40 · ThinInformational 15Details
Commit message · ziggie

docs: add release-notes

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the release notes document for version 0.21.0. It adds a short description of a payment store improvement project and adds two names to the contributor list. No program code was changed, and there is no security relevance.

Lower-prioritylnd+paymentsdb: introduce harness for the payment sql backendby ziggie · 93626822 · Feb 25, 2026 · 4 filesMessage 73 · AdequateInformational 15Details
Commit message · ziggie

lnd+paymentsdb: introduce harness for the payment sql backend

We prepare the code for the sql payment backend. However no
payment db interface method for the sql backend is implemented
yet. This will be done in the following commits. They currently
use the embedded KVStore to satify the build environment.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is purely preparatory infrastructure. It adds scaffolding for a future SQL-based payments database backend in LND, but explicitly does not implement any actual payment database methods yet. The new SQL store currently falls back to the existing key-value store implementation to satisfy build requirements. There is no security-relevant behavior change or vulnerability introduced in this patch.

Lower-priorityscripts: add gpg key for georgetsagkby George Tsagkarelis · 05d1df6d · Feb 23, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · George Tsagkarelis

scripts: add gpg key for georgetsagk

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply adds a new trusted PGP public key for a person named georgetsagk to the project's release-signature verification script. It is an administrative onboarding change, not a code fix or vulnerability patch. There is no security issue visible in the diff itself.

Lower-priorityinvoices/sql_store: add tests for targeted invoice query variantsby ziggie · d26bf848 · Feb 21, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · ziggie

invoices/sql_store: add tests for targeted invoice query variants

Add testFetchPendingInvoicesAccepted to explicitly verify the state
filtering behaviour of FetchPendingInvoices across all four contract
states:

ContractOpen (state 0) – must be returned
ContractAccepted (state 3) – must be returned
ContractSettled (state 1) – must be excluded
ContractCanceled (state 2) – must be excluded

This directly exercises the `state IN (0, 3)` predicate introduced in
the FetchPendingInvoices SQL query and addresses the review request for
explicit test coverage of the new targeted query variants. The test
runs against the KV, SQLite, and Postgres backends.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds a new automated test for an existing invoice database query. It does not change any production code, so it cannot introduce a security vulnerability or fix one directly. The test verifies that a function called FetchPendingInvoices correctly returns invoices that are still open or accepted, and excludes settled or canceled ones.

Lower-prioritydocs: add release notes for invoice SQL query performance improvementsby ziggie · 1e5e6f27 · Feb 21, 2026 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · ziggie

docs: add release notes for invoice SQL query performance improvements

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds a release note describing a previous performance improvement to invoice database queries. It changes documentation text only and does not modify any code, configuration, or security behavior. There is no security issue here.

Lower-prioritysqldb/sqlc: remove deprecated FilterInvoices queryby ziggie · 9becdfa8 · Feb 21, 2026 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · ziggie

sqldb/sqlc: remove deprecated FilterInvoices query

All call sites have been migrated to the targeted replacement queries
in the previous commit. Remove FilterInvoices and its associated
params struct from the SQL source and regenerate.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit simply deletes an unused database query called FilterInvoices and its supporting code. The commit message says all places that used it have already been switched to newer, more targeted queries. There is no security issue visible in this change; it is routine code cleanup.

Lower-priorityinvoices/sql_store: switch to targeted queries, default timestamp boundsby ziggie · 774ebaf1 · Feb 21, 2026 · 2 filesMessage 73 · AdequateInformational 19Details
Commit message · ziggie

invoices/sql_store: switch to targeted queries, default timestamp bounds

Replace all four FilterInvoices call sites with the focused queries
introduced in the previous commit:

FetchPendingInvoices → FetchPendingInvoices
InvoicesSettledSince → FilterInvoicesBySettleIndex
InvoicesAddedSince → FilterInvoicesByAddIndex
QueryInvoices → FilterInvoicesForward / FilterInvoicesReverse

The first three are straight 1:1 swaps — the new params structs carry
only the fields that are actually used, and the removed fields (Reverse,
PendingOnly, unused index bounds) were always left at their zero values.

QueryInvoices is restructured more substantially. The forward/reverse
branch now selects between FilterInvoicesForward and
FilterInvoicesReverse, each of which takes a concrete id bound that is
always set:

forward: AddIndexGet = IndexOffset + 1 (≥ 1 when IndexOffset = 0)
reverse: AddIndexLet = IndexOffset - 1 (or MaxInt64 when offset = 0)

Timestamp parameters are changed from nullable (sql.NullTime with
OR-based SQL fallbacks) to always-on Go-side defaults, consistent with
the approach used by the payments query:

createdAfter → time.Unix(0, 0).UTC() (epoch, before any invoice)
createdBefore → time.Date(9999, 12, 31, …) (far future, no upper cap)

This ensures the planner always sees plain range predicates on
created_at and can use the invoices_created_at_idx index.

The SQLInvoiceQueries interface is updated to expose the five new
methods and drop FilterInvoices.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This commit is a backend cleanup of how LND searches its invoice database. It replaces one large catch-all query with several smaller, focused queries and always supplies concrete date and index bounds. The main practical effect is better database query planning and indexing, which can improve performance and reduce load. It is not a fix for an active security vulnerability, but it removes a pattern (nullable OR-based SQL fallbacks) that can sometimes hide subtle correctness or denial-of-service risks.

Lower-prioritysqldb/sqlc: add targeted invoice queriesby ziggie · 866efbd7 · Feb 21, 2026 · 3 filesMessage 80 · StrongInformational 22Details
Commit message · ziggie

sqldb/sqlc: add targeted invoice queries

The existing FilterInvoices query uses optional parameters via the
pattern `(col >= param OR param IS NULL)` for every filter. SQLite
cannot use indexes with this pattern because the OR prevents the query
planner from determining at plan time which rows satisfy the condition,
resulting in a full table scan regardless of the available indexes
(invoices_state_idx, invoices_settle_index_idx, and the primary-key
clustered index on id).

Additionally, the conditional ORDER BY:

ORDER BY CASE WHEN reverse = FALSE ... THEN id ELSE NULL END ASC,
CASE WHEN reverse = TRUE ... THEN id ELSE NULL END DESC

prevents the planner from using the index ordering and forces an
explicit sort.

Add five focused replacements, each with a plain sargable predicate and
a direct ORDER BY so the planner can always choose an index scan:

- FetchPendingInvoices: WHERE state IN (0, 3)
- FilterInvoicesBySettleIndex: WHERE settle_index >= $1
- FilterInvoicesByAddIndex: WHERE id >= $1
- FilterInvoicesForward: WHERE id >= $1 ... ORDER BY id ASC
- FilterInvoicesReverse: WHERE id <= $1 ... ORDER BY id DESC

FilterInvoicesForward and FilterInvoicesReverse accept non-nullable
timestamp parameters (created_after, created_before) so the planner
always sees plain range predicates on created_at. Callers supply
Go-side defaults when no date filter is needed, following the same
convention already used by the payments query.

FilterInvoices is kept in this commit so all existing call sites
continue to compile. It will be removed once all callers have been
migrated.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 22/100

This commit adds new database query helpers for listing Lightning Network invoices in ways that let SQLite use indexes efficiently. It is a performance and maintainability change, not a security patch. The old catch-all query is kept so existing code still compiles, and will be removed later after callers are switched over.

Lower-prioritydocs: update release notesby bitromortac · 3a00ed4a · Feb 20, 2026 · 1 fileMessage 47 · ThinInformational 15Details
Commit message · bitromortac

docs: update release notes

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the release notes document for version 0.21.0. It adds a bullet point describing that a feature now emits channel update events, and it adds one contributor name to the contributors list. There are no code changes, no bug fixes, and no security-related content.

Lower-prioritylnd: handle channel update events in SubscribeChannelEventsby bitromortac · 10e8a69c · Feb 20, 2026 · 1 fileMessage 50 · ThinInformational 16Details
Commit message · bitromortac

lnd: handle channel update events in SubscribeChannelEvents

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 16/100

This commit adds handling for a new type of channel update event in LND's RPC server. Previously, the SubscribeChannelEvents stream likely ignored or dropped ChannelUpdateEvent notifications. The change makes the RPC server emit a properly formatted CHANNEL_UPDATE message to subscribers. There is no direct security vulnerability visible in the diff; it appears to be a missing-feature/bug-fix patch that improves event completeness.

Lower-priorityitest: test channel update subscriptionby bitromortac · fa572235 · Feb 20, 2026 · 3 filesMessage 55 · ThinInformational 15Details
Commit message · bitromortac

itest: test channel update subscription

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adds a new integration test that checks whether users subscribed to channel events receive real-time notifications when a Lightning channel is opened, becomes active, or processes a payment. It does not change production code or fix any bug.

Lower-priorityproto: add ChannelCommitUpdate to channel event updatesby bitromortac · 4f22a513 · Feb 20, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · bitromortac

proto: add ChannelCommitUpdate to channel event updates

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new notification type to LND's public API definitions (protobuf files). It tells client applications that a channel's commitment state has changed, but does not change how LND processes payments, channels, or secrets. There is no security issue visible in the diff itself.

AI review queuedlnwallet: expose channel stateby bitromortac · 19860bb9 · Feb 20, 2026 · 2 filesMessage 58 · ThinInformational 18Details
Commit message · bitromortac

lnwallet: expose channel state

We create a deep copy of the channel state as we want to later expose
the data structure to the rpc, which already has helper methods to
marshal this representation to the rpc representation.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This commit adds a read-only accessor that returns a private copy of a Lightning channel's internal state. It is a defensive code change: by making a deep copy before handing data out, it prevents callers from accidentally or intentionally modifying sensitive internal state. There is no direct security vulnerability in the patch itself; it is a hardening measure.

Lower-priorityhtlcswitch: let link notify on remote commit sigby bitromortac · 4701f00c · Feb 20, 2026 · 1 fileMessage 45 · ThinLow 30Details
Commit message · bitromortac

htlcswitch: let link notify on remote commit sig

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Low 30/100

This small change makes a Lightning payment channel component notify subscribers whenever the remote side signs a new commitment. It is a state-visibility improvement, not a direct fix for a known exploit. The commit message and diff do not describe a security vulnerability, but missing or delayed channel-state notifications could theoretically contribute to stale state in dependent subsystems.

Lower-prioritypeer+htlcswitch: inject notification endpointby bitromortac · 0f147253 · Feb 20, 2026 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · bitromortac

peer+htlcswitch: inject notification endpoint

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This commit adds a new notification hook so the channel link can tell other parts of the program when a channel's state has been updated. It is purely an infrastructure/plumbing change: it wires up a new callback but does not change any existing security behavior, validation, or access control. There is no indication this fixes or introduces a vulnerability.

Lower-prioritychannelnotifier: let notifier take channel updatesby bitromortac · a3d87f16 · Feb 20, 2026 · 2 filesMessage 50 · ThinInformational 13Details
Commit message · bitromortac

channelnotifier: let notifier take channel updates

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 13/100

This commit adds a new internal notification type so that parts of the LND program can be told when a Lightning channel's state changes. It is purely an infrastructure/observability change: it adds a new event struct, a function to send the event, and a unit test. There is no change to network-facing behavior, authentication, cryptography, or money-handling logic.

Lower-prioritygraph/db: version highest chan idby Elle Mouton · 769d6260 · Feb 20, 2026 · 7 filesMessage 68 · AdequateLow 29Details
Commit message · Elle Mouton

graph/db: version highest chan id

Add a gossip version parameter to HighestChanID in the Store interface
and both KV/SQL implementations. Update callers in the discovery
ChanSeries and server bootstrap code.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 29/100

This commit changes how LND tracks the newest channel ID in its network graph so the lookup can be filtered by a specific gossip protocol version. It is a structural refactoring to support multiple gossip versions, not a fix for an active security flaw. The change adds version checks that reject unsupported gossip versions, which is a defensive improvement, but the commit message and diff do not describe any vulnerability or security incident.

Lower-prioritydocs: update release notesby Elle Mouton · 09e20dc7 · Feb 20, 2026 · 1 fileMessage 47 · ThinInformational 15Details
Commit message · Elle Mouton

docs: update release notes

47/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates the release notes documentation by adding a link to another pull request. It does not change any code, configuration, or security behavior.

Lower-prioritygraph/db: version fetch chan infosby Elle Mouton · acb3240d · Feb 20, 2026 · 6 filesMessage 78 · AdequateInformational 15Details
Commit message · Elle Mouton

graph/db: version fetch chan infos

Add a gossip version parameter to FetchChanInfos in the Store interface
and both KV/SQL implementations. Update the graph builder caller and
refactor related tests.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a routine code refactoring. It adds a 'gossip version' parameter to a function called FetchChanInfos so the graph database can handle both old (v1) and new (v2) Lightning network gossip formats consistently. It also updates callers and tests. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-prioritygraph/db: fetch policy version in cache paginated queryby Elle Mouton · 7c7a0ae1 · Feb 20, 2026 · 3 filesMessage 73 · AdequateLow 34Details
Commit message · Elle Mouton

graph/db: fetch policy version in cache paginated query

The ListChannelsWithPoliciesForCachePaginated query was missing the
policy version column, causing extractChannelPolicies to hardcode
lnwire.GossipVersion1 for that row type. Add cp1.version and
cp2.version to the query and use the fetched values instead.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 34/100

This commit fixes a bug in LND's channel graph cache where a database query forgot to fetch the 'version' field for routing policies. The code was then hardcoding an older policy version (GossipVersion1) for those cached policies. This could cause newer, extended routing policy fields to be misinterpreted or ignored when the cache is used, potentially leading to stale or incorrect routing information.

Lower-prioritygraph/db: version batched edge and cache node channel testsby Elle Mouton · 95d6af12 · Feb 20, 2026 · 1 fileMessage 75 · AdequateInformational 15Details
Commit message · Elle Mouton

graph/db: version batched edge and cache node channel tests

Convert testBatchedAddChannelEdge and testGraphCacheForEachNodeChannel
to run against both v1 and v2 gossip versions.

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only changes test code. It makes two existing graph database tests run against both v1 and v2 gossip protocol versions, and adjusts the test setup and assertions to handle differences between those versions. There is no change to production code and no security fix or vulnerability introduced.

Lower-prioritygraph/db: version edge info and policy update testsby Elle Mouton · 672b999d · Feb 20, 2026 · 3 filesMessage 83 · StrongInformational 15Details
Commit message · Elle Mouton

graph/db: version edge info and policy update tests

Convert testEdgeInfoUpdates and testBatchedUpdateEdgePolicy to run
against both v1 and v2 gossip versions, exercising the versioned
Store methods added in prior commits.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit is a routine test and code-cleanup change. It removes an unused wrapper method, extends two existing tests to run against both old and new gossip protocol versions, and updates a database helper to accept both known gossip versions instead of only version 1. There is no security fix or vulnerability patch here.

Lower-prioritygraph/db: version disabled channel IDsby Elle Mouton · fc19a24d · Feb 20, 2026 · 9 filesMessage 68 · AdequateLow 28Details
Commit message · Elle Mouton

graph/db: version disabled channel IDs

Add a gossip version parameter to DisabledChannelIDs in the Store
interface and both implementations. Add a new version-filtered SQL
query and update the builder caller.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Low 28/100

This commit extends the Lightning Network Daemon's channel graph database so it can separately list disabled channels for the older gossip protocol version (v1) and the newer one (v2). Previously the disabled-channel lookup only handled v1. The change is a feature completion / correctness fix: without it, a node running with v2 gossip could either get wrong disabled-channel data or fail to prune stale channels. There is no direct evidence in the commit that this was a security vulnerability, but an incorrect disabled-channel list could affect routing and channel pruning behavior.

Lower-prioritygraph/db: version ChannelID lookupby Elle Mouton · 28fe3585 · Feb 20, 2026 · 5 filesMessage 78 · AdequateInformational 19Details
Commit message · Elle Mouton

graph/db: version ChannelID lookup

Add a gossip version parameter to the ChannelID method (outpoint to
short channel ID lookup) in the Store interface and both KV/SQL
implementations. Update the VersionedGraph wrapper and tests.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 19/100

This commit changes how the Lightning Network Daemon (LND) looks up a compact channel identifier from a funding transaction outpoint. It adds a 'gossip version' parameter to the lookup so that the database can distinguish between different protocol versions when resolving channel IDs. The change is a structural/API update rather than a fix for an active security flaw. It does not, on its own, prevent or enable a known attack, but it is part of making the graph database version-aware, which can help avoid mismatches between how channels are stored and queried.

Lower-prioritygraph/db: version createChannelEdgeby Elle Mouton · 2f6cc185 · Feb 20, 2026 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Elle Mouton

graph/db: version createChannelEdge

Refactor the createChannelEdge test helper to be version-aware,
supporting both v1 and v2 channel and policy creation. This prepares
the test infrastructure for subsequent commits that version individual
Store methods.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only changes a test helper function in a test file. It makes the function able to create fake channel data in two different formats (v1 and v2) instead of only one. There is no change to production code, no bug fix, and no security issue.