LDK
← All projectsLightning Dev Kit

rust-lightning

Composable Rust libraries for building Lightning wallets, nodes, and services.

BitcoinCryptographic librariesLightning NetworkNormal
Repository coverage

1497 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.

225security candidates209second-pass queue1479AI analyses
74commits · 30 days
208commits · 60 days
663commits · 180 days
1491commits · 365 days
Backfill bands
Aug 5 → Feb 6819 seen18 candidatesComplete
Feb 6 → Jun 6468 seen16 candidatesComplete
Jun 6 → Jul 6128 seen8 candidatesComplete
Jul 6 → Aug 561 seen3 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.

69/100 average clarity
359Strong · 80–100
790Adequate · 60–79
288Thin · 40–59
60Opaque · 0–39
3security candidates 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.
Elias Rohrer15315153667
Matt Corallo35847356473
Jeffrey Czyz17741177168
Wilmer Paulino14939149169
Leo Nash11613116162
Valentine Wallace13710135169
Vincenzo Palazzo10210184
Joost Jager16224162069
elnosh301330056
shaavan22622069
Carla Kirk-Cohen78366068
benthecarman18318071
Analysis record

Published AI watches

Last scanned 13 minutes ago

Low 32 AI analysisMessage 91 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Merge PR 'Only fetch TXIDs instead of entire block during gossip verification' (#4846)

This commit changes how the Lightning Dev Kit's block-sync module verifies Lightning network gossip announcements. Instead of downloading entire Bitcoin blocks (which can be large), it now downloads only the list of transaction IDs for a b…

API surface change in UtxoSource traitReduced data exposure: no longer fetches full blocks for gossip verificationNew JSON parsing for txid lists and TxOut values
ebe7a447by Matt Corallo+275−1025 files
No security note in commit
Low 35 AI analysisMessage 81 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Merge PR 'Allow filtered block rescans at the current tip' (#4847)

This commit changes how the Lightning Dev Kit (LDK) node software handles receiving the same block twice through its filtered-block interface. Previously, calling filtered_block_connected with the current tip again would trigger an asserti…

Assertion relaxation in block connection pathPotential denial-of-service vector removed: previously a malicious or buggy filter provider could crash the node by replaying the current tipNew test coverage for same-block filtered rescan
54ddbd0bby Matt Corallo+177−486 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Add test framework coverage of `Listen` block connection replays

This commit only adds a new test mode to the project's internal testing framework. It lets developers simulate a specific way blocks are delivered to the Lightning node (a 'replay' through the Listen interface) so that behavior is covered …

bf6ad23eby Matt Corallo+18−32 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Update functional test block connection to detect block replays

This commit changes only internal test helper code in the Lightning Dev Kit repository. It makes the functional test framework smarter about 'block replays'—situations where the same block is fed to a test node more than once—so the fake b…

No production code modifiedNo cryptographic, consensus, or networking changesCommit message frames change as test-framework correctness, not security
477facb4by Matt Corallo+41−333 files
No security note in commit
Moderate 66 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Correct HTLC confusion on unrevoked counterparty commitment txs

This patch fixes a bug in the Lightning Dev Kit where the software could confuse HTLCs (payment contracts) on live, unrevoked counterparty commitment transactions with ones from old, revoked transactions. Previously, it relied only on whet…

Incorrect revocation state detection for counterparty commitment transactionsHTLC direction not previously checked when matching against pending HTLCsPromotion of debug assertions to full assertions for HTLC claim path consistency
f06a08a6by Matt Corallo+26−192 files
Vendor flagged security relevance
Low 47 AI analysisMessage 85 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Return `Err`s` instead of panicking on oversized messages

This commit changes how the Lightning networking code handles oversized encrypted messages. Previously, certain conditions would cause the program to crash with a panic. Now the code returns errors instead, which is a defensive improvement…

panic-to-error conversion for oversized message encryption/decryptiondenial-of-service hardening against oversized peer messagesdebug_assert retained to preserve test coverage of invariant violations
08f12bc7by Matt Corallo+68−313 files
Vendor flagged security relevance
Moderate 62 AI analysisMessage 85 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Avoid panicking when attempting to send an oversized message

This commit fixes a crash bug in the Lightning Dev Kit's peer message handling. Previously, if a message grew too large to be sent over the encrypted peer connection, the code would panic (abruptly terminate the whole program). The patch m…

Replaces a `.expect()` panic path with a fallible `Result` in peer message encryptionAdds graceful peer disconnection when a critical message cannot be sentIncludes a regression test for oversized-message handling
c5fdc3bfby Matt Corallo+148−901 file
Vendor flagged security relevance
High 74 AI analysisMessage 78 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Avoid oversized relayed failure messages

This patch fixes a crash bug in the Lightning Dev Kit's handling of HTLC failure messages. A downstream peer could send a maximally-sized failure message without attribution data. When the node added its own attribution data while relaying…

Denial-of-service via remote-triggered panic in message encryptionOversized message exceeding Noise/Lightning wire framing limitMissing length validation before adding attribution data during relay
6b1dfb1aby Matt Corallo+64−191 file
Vendor flagged security relevance
Moderate 64 AI analysisMessage 83 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Reject attempts to advance one-hop blinded forward paths

This commit fixes a denial-of-service bug in rust-lightning where a maliciously crafted one-hop blinded reply path could cause the node to panic when it tried to respond. The fix rejects paths with too few hops before advancing them, and a…

Denial-of-service vector via malformed blinded pathPanic in onion construction due to zero-hop pathUntrusted reply path input validation gap
969a40cfby Matt Corallo+49−14 files
Vendor flagged security relevance
High 72 AI analysisMessage 96 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

lightning-types: replace Zl/Zp separators in `PrintableString`

This commit fixes a log-forgery risk in a Rust Lightning library helper called PrintableString. That helper is meant to make untrusted text safe to print by replacing dangerous characters with a placeholder. It already caught most control …

log injection / log forgery via U+2028/U+2029 line separatorsincomplete input sanitisation in PrintableStringpeer-controlled strings (node alias, BOLT 12 description/issuer/payer_note, peer_msg) as attack surface
75defa9cby Vincenzo Palazzo+63−83 files
Vendor flagged security relevance
Moderate 69 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Apply the unfunded channel peer limit to all unaccepted channels

This commit fixes a rate-limiting bug in the Lightning Dev Kit (LDK) that let a single peer bypass the cap on how many different peers can have unfunded (not-yet-funded) channels open. Previously, if a peer sent multiple channel requests q…

Denial-of-service resource exhaustion via rapid inbound channel open requestsLogic error in rate-limiting conditionRegression test added for the bypass scenario
56a4ee43by Matt Corallo+87−62 files
Vendor flagged security relevance
Moderate 60 AI analysisMessage 88 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Allow filtered block rescans at the current tip

This commit fixes a bug where replaying the current blockchain block through a normal listener callback could crash two core Lightning components (ChannelManager and OutputSweeper) with a panic. The fix recognizes a same-block replay as a …

panic in chain listener callbacksame-block replay/rescan mishandlingassertion failure on valid chain input
686f9860by Elias Rohrer+118−123 files
Vendor flagged security relevance
Moderate 57 AI analysisMessage 78 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Avoid panic when reorged claims cannot merge

This commit fixes a crash bug in the Lightning Dev Kit's on-chain transaction handler. During a deep blockchain reorganization, a previously settled HTLC claim could be 'resurrected' at a block height where it could no longer be combined w…

Assertion/panic in reorg handling pathDeep blockchain reorg as trigger conditionHTLC claim resurrection after reorg
f1dc8487by Matt Corallo+219−52 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 45 · Thin
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Update crate repository links to forgejo

This commit simply updates the 'repository' web links in 15 package metadata files from GitHub to a self-hosted Forgejo instance. It does not change any program code, build logic, dependencies, or security behavior. There is no security is…

eb77676dby benthecarman+15−1515 files
No security note in commit
Low 45 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Account for message type prefix len in prevtx length enforcement

This commit fixes a small but real accounting bug in how rust-lightning checks whether a previous transaction (prevtx) attached to a funding input will make the resulting Lightning wire message too large. The code previously compared the m…

Off-by-constant length check in protocol message size enforcementPotential acceptance of a prevtx that produces an oversized Lightning wire messageDenial-of-service / protocol-interop risk from peer message rejection
d29e1415by Wilmer Paulino+21−41 file
No security note in commit
Moderate 54 AI analysisMessage 73 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Retransmit splice_locked for 0-conf channels missing tx_signatures

This commit fixes a bug in the Lightning Dev Kit where, after a disconnection, a node could fail to retransmit a 'splice_locked' message to a peer that was still waiting for transaction signatures. Without this retransmission, the two peer…

Protocol state desynchronization between channel peers after reconnectionMissing retransmission of splice_locked for 0-conf splice channelsPotential channel unusability or stuck splice negotiation
5434015bby Wilmer Paulino+266−12 files
No security note in commit
Low 37 AI analysisMessage 83 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

bolt12: add pay_for_bolt12_invoice for externally-sourced invoices

This commit adds a new API, pay_for_bolt12_invoice, that lets users pay a BOLT 12 invoice even if LDK did not originally request it. It is intended for advanced use cases like multi-sender payments and replaces an older, more restrictive A…

New API removes internal invoice-origin verification, shifting trust boundary to callerDocumentation explicitly warns caller to verify invoice via Bolt12Invoice::verify_using_metadata and to ensure unique payment_id to avoid duplicate paymentsInput validation added for zero amount, overpay, and partial-amount-without-MPP
5b80fe9cby Alkamal01+550−156 files
No security note in commit
Low 26 AI analysisMessage 90 · Strong
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Include to_self_delay size in DelayedPaymentOutput weight calculation

This commit fixes a small accounting bug in how the Lightning wallet estimates the size (and therefore transaction fee) of a special Bitcoin transaction that sweeps funds back to the user after a channel closes. The old code always assumed…

debug assertion failure possible in development/testing buildstransaction weight/fee estimate overestimation up to 3 WUconstant replaced with per-descriptor length computation
e6652237by Matt Morehouse+97−83 files
No security note in commit
Informational 18 AI analysisMessage 65 · Adequate
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

Correct docs on `ChannelSigner::get_per_commitment_point`

This commit only updates documentation comments for a Rust function called get_per_commitment_point. It removes an outdated warning that the method was non-asynchronous and that returning an error could cause a crash, and replaces it with …

Documentation-only changeRemoves outdated panic warningAdds retry/unblock guidance for signer errors
5057809bby Matt Corallo+6−31 file
No security note in commit
Informational 16 AI analysisMessage 35 · Opaque
LDK Lightning Dev Kitrust-lightning BitcoinCryptographic librariesLightning Network

ln/refactor: remove BlindedTrampolineEntrypoint

This commit is a small internal code cleanup in the Lightning Dev Kit's Trampoline routing code. It removes a separate 'BlindedTrampolineEntrypoint' payload variant and folds an optional blinding point into the existing 'Forward' variant. …

Refactor-only change with no added bounds checks or validationNo mention of vulnerability, CVE, security fix, or bug in commit messageTLV field changed from required to optional, but only for a newly unified variant used in internal construction
3e0c2697by Carla Kirk-Cohen+8−263 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-priorityDrop `cfg(async_payments)` from testsby Elias Rohrer · 2d7a53f0 · Oct 20, 2025 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · Elias Rohrer

Drop `cfg(async_payments)` from tests

We previously dropped `cfg(async_payments)` but didn't drop the actual
`cargo test` call from our CI. Here we do that.

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

This commit simply removes one test command from the project's continuous integration script. It is a cleanup change with no security relevance: it stops running tests under an 'async_payments' configuration flag that had already been removed from the code. There is no vulnerability, no bug fix, and no user-facing behavior change.

Lower-priorityAdd missing release stats for 0.1by Matt Corallo · 4ed40945 · Oct 16, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Matt Corallo

Add missing release stats for 0.1

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only adds contributor statistics and author names to the project's CHANGELOG.md for the 0.1 release. It contains no code changes, no bug fixes, and no security-related modifications.

Lower-priorityTest propose channel splice while disconnectedby Wilmer Paulino · 5452f15e · Oct 14, 2025 · 2 filesMessage 55 · ThinInformational 15Details
Commit message · Wilmer Paulino

Test propose channel splice while disconnected

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 only adds a new test case and a small test helper. It does not change production code, so it cannot introduce a runtime security vulnerability. The test exercises a specific Lightning protocol scenario: proposing a channel splice while the peer is temporarily disconnected, including node reload and zero-conf channel variants.

AI review queuedCapture stfu send in reconnection testsby Wilmer Paulino · 3c4e70c1 · Oct 14, 2025 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Wilmer Paulino

Capture stfu send in reconnection tests

We'll use this in the next commit to test that we'll send a stfu message
for a splice we intend to initiate upon reconnecting.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes test code. It updates a test helper macro and related reconnection tests to capture and optionally handle 'stfu' messages sent when Lightning channels reconnect. There is no change to production code, so it does not introduce or fix a security vulnerability on its own.

Lower-priorityAttempt queued splice after existing pending splice becomes lockedby Wilmer Paulino · d91e14ba · Oct 14, 2025 · 1 fileMessage 73 · AdequateLow 35Details
Commit message · Wilmer Paulino

Attempt queued splice after existing pending splice becomes locked

Since we don't yet support contributing to an incoming splice, we need
to make sure we attempt our splice negotiation eventually if the
counterparty was also attempting a splice at the same time but they won
the quiescence tie-breaker. Since only one pending splice (without RBF)
is allowed at a time, we do this after the existing splice becomes
locked.

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

This patch fixes a logic gap in the Lightning Dev Kit where two sides tried to splice the same channel at the same time. If the counterparty won the tie-breaker, the local node's queued splice could be forgotten and never attempted. The fix re-queues the local splice once the counterparty's splice becomes locked, so the channel eventually reaches the intended upgraded state.

Lower-priorityAllow outgoing splice request while disconnectedby Wilmer Paulino · ab9769f4 · Oct 14, 2025 · 2 filesMessage 68 · AdequateLow 29Details
Commit message · Wilmer Paulino

Allow outgoing splice request while disconnected

This is crucial for peers that serve liquidity for low-availability
(i.e., mobile) nodes. We should allow users to queue a splice request
while the peer is offline, such that it is negotiated once reconnected.
Note that there currently isn't a way to time out/cancel these requests,
this is planned for the near future.

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

This change lets a user queue a Bitcoin Lightning 'splice' request even when the other party is offline, so it can proceed once they reconnect. Previously the software rejected splice requests while disconnected. The patch also adds clearer logging when the protocol waits for reconnection. It is a feature change, not a fix for an active exploit.

Security candidateSend 0conf splice_locked upon tx_signatures exchangeby Wilmer Paulino · 1802b6e8 · Oct 14, 2025 · 3 filesMessage 65 · AdequateLow 42Details
Commit message · Wilmer Paulino

Send 0conf splice_locked upon tx_signatures exchange

Splices negotiated with 0 confirmations require that we immediately lock
it after exchanging `tx_signatures`.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing boundary
AI analysis · Low 42/100

This commit fixes a protocol-handling gap for zero-confirmation channel splices in the Lightning Dev Kit. When two peers agree to a splice that does not require waiting for blockchain confirmations, the node now immediately sends a 'splice_locked' message right after exchanging transaction signatures. Previously, this message was only sent after blocks were mined, which could leave a 0-conf splice stuck and unusable. The change is a correctness fix in the Lightning state machine rather than a patch for a remote exploit.

Lower-priorityLog broadcast of interactive funding transactionby Wilmer Paulino · 17260475 · Oct 14, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Wilmer Paulino

Log broadcast of interactive funding transaction

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

This commit only adds a log message when an interactive funding transaction is broadcast, and refactors three call sites to use a shared helper function. It does not change any security-critical behavior, transaction validation, or network logic. There is no indication of a vulnerability being fixed.

Lower-priorityReturn an error when the intercept SCID is unknown to the LSPS2 serviceby Willem Van Lint · 1d2b0ed3 · Oct 14, 2025 · 1 fileMessage 73 · AdequateLow 34Details
Commit message · Willem Van Lint

Return an error when the intercept SCID is unknown to the LSPS2 service

HTLCs can be intercepted for multiple reasons unrelated to this handler:
- Other HTLC interceptors might have generated intercept SCIDs.
- The SCID of a closed channel might have fallen into the fake SCID
namespace.

The LSPS2 handler needs to indicate whether the specific SCID was known
to it, so other handlers can be called or the HTLC can be failed back.

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

This change fixes a logic bug in the LSPS2 liquidity service of rust-lightning. Previously, when an intercepted HTLC carried a short channel ID (SCID) that the LSPS2 service did not recognize, the handler silently did nothing. Now it returns a clear error so the caller can route the HTLC to another handler or fail it back. The fix prevents HTLCs from getting stuck or being silently dropped when multiple interceptors are active or when old SCIDs overlap with the fake SCID namespace.

Lower-priorityAdd a CI job to emulate docs.rs buildsby Matt Corallo · d3faa030 · Oct 13, 2025 · 3 filesMessage 80 · StrongInformational 15Details
Commit message · Matt Corallo

Add a CI job to emulate docs.rs builds

Sadly, our docs.rs build failed for 0.1.6 due to the unstable
`doc_auto_cfg` feature being removed. Here, we try to emulate
docs.rs builds as best we can in CI to head that off in the future.

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

This commit only adds a new automated documentation-build check to the project's continuous integration (CI) pipeline. It does not change any production code, cryptographic logic, network handling, or user-facing behavior. There is no security vulnerability here.

AI review queuedReplace docs.rs build `doc_auto_cfg` feature with `doc_cfg`by Matt Corallo · 6aea5865 · Oct 13, 2025 · 10 filesMessage 85 · StrongInformational 15Details
Commit message · Matt Corallo

Replace docs.rs build `doc_auto_cfg` feature with `doc_cfg`

These have been merged, causing our docs.rs builds to fail. Sadly,
we saw our docs.rs build fail for the 0.1.6 upload because of this.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine documentation build fix. It swaps one Rust compiler feature flag used only when building documentation on docs.rs (`doc_auto_cfg`) for another (`doc_cfg`) because the old one was removed/merged in the Rust toolchain. It does not change any runtime code, network behavior, or security logic.

Lower-priorityUse proper TLV type for CommitmentSigned::funding_txidby Wilmer Paulino · bddd5c70 · Oct 10, 2025 · 1 fileMessage 73 · AdequateInformational 22Details
Commit message · Wilmer Paulino

Use proper TLV type for CommitmentSigned::funding_txid

Now that we are sure we will be moving forward with the `funding_txid`
TLV, we use the TLV type as mandated per the spec.

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

This commit changes the numeric identifier (TLV type) used for an optional extra field in a Lightning protocol message called CommitmentSigned. Previously a temporary placeholder number (1001) was used; now it is changed to the final spec-mandated number (1). This is a protocol-correctness update, not a fix for an active security vulnerability. However, because it alters wire serialization, mismatched versions of the software could fail to understand each other's messages, which could in turn affect channel state consistency.

Lower-priorityUpdate ChannelManager::splice_channel docsby Jeffrey Czyz · 9fee80de · Oct 10, 2025 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · Jeffrey Czyz

Update ChannelManager::splice_channel docs

Update the ChannelManager::splice_channel docs to reflect the current
state of the implementation and splicing-related events.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit only updates the documentation comments for a function called splice_channel. It does not change any actual code logic. The new docs explain how splicing works, what events are emitted, and how fees are handled. There is no security issue here.

Lower-priorityPersist when ChannelMangager::splice_channel is Okby Jeffrey Czyz · b9f34e4c · Oct 10, 2025 · 1 fileMessage 73 · AdequateLow 43Details
Commit message · Jeffrey Czyz

Persist when ChannelMangager::splice_channel is Ok

When ChannelMangager::splice_channel returns Ok, a QuiescentAction is
set. Since this is persisted with a FundedChannel, an Ok result should
trigger persistence.

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

This is a small bug fix in a Bitcoin Lightning Network library. After a successful 'splice' operation (a way to resize a payment channel), the software now correctly saves the updated channel state to disk. Before, it skipped saving. The risk is that if the program crashed or restarted right after a splice, it could lose track of the new channel state and potentially behave incorrectly or lose funds.

Security candidateEmit SpliceFailed upon disconnect while quiescentby Jeffrey Czyz · d10d0002 · Oct 10, 2025 · 3 filesMessage 68 · AdequateLow 32Details
Commit message · Jeffrey Czyz

Emit SpliceFailed upon disconnect while quiescent

Since quiescence is terminated upon disconnection, any outstanding
splice negotiation should result in emitting a SpliceFailed event as
long as we haven't reached FundingNegotiation::AwaitingSignatures. This
may occur if we explicitly disconnect the peer (e.g., when failing to
process splice_ack) or if the connection is lost.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
AI analysis · Low 32/100

This change fixes a bookkeeping bug in the Lightning Dev Kit's splicing feature. When a peer disconnects while a splice is being negotiated (but before signatures are exchanged), the software now emits a SpliceFailed event so the user's wallet knows the splice attempt is dead and can unlock any reserved funds. Previously, the internal splice state was reset on disconnect but no event was emitted, which could leave a wallet waiting indefinitely for a splice that would never complete.

Security candidateEmit SpliceFailed event upon reloadby Jeffrey Czyz · 8fe9aebf · Oct 10, 2025 · 4 filesMessage 68 · AdequateLow 32Details
Commit message · Jeffrey Czyz

Emit SpliceFailed event upon reload

Similarly to when a peer is disconnected, when a node is reloaded any
splice that hasn't reaching FundingNegotiation::AwaitingSignatures will
be reset. This should produce a SpliceFailed event. However, since other
FundingNegotiation variants are not persisted, the data to produced the
SpliceFailed event upon reload is lost. Therefore, opportunistically
persist a SpliceFailed event for these cases such that it is available
upon reload.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundary
AI analysis · Low 32/100

This commit fixes a bug in the Lightning Dev Kit where a wallet reload could silently drop an in-progress channel splice. Previously, if the program restarted while a splice was in an early negotiation state, the user would never receive a 'SpliceFailed' event, so their funds could appear stuck or the failure could go unnoticed. The fix temporarily saves a failure event during persistence so it can be emitted after the reload, then removes it from storage. It is a reliability/notification fix, not a direct theft or remote-exploitation vulnerability.

Lower-priorityExtract _internal macro for new mon update handlingby Valentine Wallace · b5884317 · Oct 10, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Valentine Wallace

Extract _internal macro for new mon update handling

Finishes work over the past few commits of breaking up the
handle_new_monitor_update macro.

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

This commit is a routine internal code cleanup in the Lightning Dev Kit's Rust implementation. It splits one large Rust macro into two smaller ones, with no change to what the code actually does. There is no security issue visible in the change.

Lower-priorityExtract macro for new monitor upd, process actions laterby Valentine Wallace · 99df17e3 · Oct 10, 2025 · 1 fileMessage 77 · AdequateInformational 12Details
Commit message · Valentine Wallace

Extract macro for new monitor upd, process actions later

Makes handle_new_monitor_update more readable. Also documents the variant and
why someone may want to use it.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode
AI analysis · Informational 12/100

This commit is a code cleanup: it pulls out an existing code pattern into a new macro with a clearer name and adds documentation. It does not change behavior or fix a security issue.

Lower-priorityExtract post-close monitor update macroby Valentine Wallace · f0de03ab · Oct 10, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Valentine Wallace

Extract post-close monitor update macro

Makes handle_new_monitor_update more readable.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a pure code cleanup: it pulls one specialized branch of a large Rust macro out into its own named macro and updates the three call sites to use the new name. No behavior, logic, or security properties change.

Lower-priorityExtract macro for initial monitor persistby Valentine Wallace · cd9bb859 · Oct 10, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Valentine Wallace

Extract macro for initial monitor persist

Makes handle_new_monitor_update more readable.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a small internal code cleanup in the Lightning Dev Kit's Rust implementation. It pulls out a repeated block of code into a new macro named handle_initial_monitor and updates the existing macro accordingly. There is no change to what the code actually does, no bug fix, and no security-relevant behavior change.

Lower-priorityExtract monitor update res handling to fnby Valentine Wallace · 66adb78f · Oct 10, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Valentine Wallace

Extract monitor update res handling to fn

Generally we'd like to use functions instead of macros where we can both for
readability and for compile times.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup in the Lightning Dev Kit's Rust implementation. It takes a chunk of logic that was duplicated inside a macro and moves it into a normal Rust function. The behavior is intended to be identical; there is no user-facing change or security fix.

Lower-prioritySignal splice prototype feature bit insteadby Wilmer Paulino · 7a53d67f · Oct 10, 2025 · 1 fileMessage 78 · AdequateInformational 18Details
Commit message · Wilmer Paulino

Signal splice prototype feature bit instead

As our splice implementation is not yet complete (missing RBF support)
and we still need to do cross-compatibility testing with eclair/CLN, we
signal the agreed upon prototype feature bit instead.

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

This commit changes which experimental 'feature bit' the Lightning Dev Kit software advertises to peers for an unfinished channel-splicing capability. It stops advertising the older production-like bit and starts advertising a prototype bit that was agreed upon with other Lightning implementations. This is a protocol-compatibility and testing change, not a security fix or vulnerability.

Lower-priorityAdd a test of upgrading an old node with V1 `remote_key` derivationby Matt Corallo · 06a6c3e4 · Oct 10, 2025 · 2 filesMessage 60 · AdequateInformational 15Details
Commit message · Matt Corallo

Add a test of upgrading an old node with V1 `remote_key` derivation

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit only adds a new automated test and a CI formatting check. It does not change any production code, fix a bug, or alter behavior. The test verifies that an older Lightning channel using a legacy key derivation can still be properly spent after upgrading to newer LDK code. There is no security issue in this commit itself.

AI review queuedCorrect name of `get_counterparty_payment_script` methodby Matt Corallo · 9dbec804 · Oct 10, 2025 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Matt Corallo

Correct name of `get_counterparty_payment_script` method

`get_counterparty_payment_script` fetches the countersigner's (i.e.
non-broadcaster) payment script, but that could be ours or or
counterparty's. Thus, it should read
`get_countersigner_payment_script`, which we fix here.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple rename of an internal function from get_counterparty_payment_script to get_countersigner_payment_script, plus an update to its documentation. The old name was misleading because the function actually returns the payment script for the non-broadcaster in a commitment transaction, which can be either party. No behavior of the code changes, and there is no security fix or vulnerability here.

AI review queuedAdd a method to fetch all possible remote-closure `script_pubkey`sby Matt Corallo · e2e0d8a0 · Oct 10, 2025 · 1 fileMessage 73 · AdequateInformational 19Details
Commit message · Matt Corallo

Add a method to fetch all possible remote-closure `script_pubkey`s

In the previous commit we (finally) allowed users to opt into a
static `remote_key` derivation scheme, enabling them to scan the
chain for funds on counterparty commitment transactions without any
state at all.

This is only possible, however, of course, if they have the full
list of scripts to scan the chain for, which we expose here.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit adds a new public helper method that lets users of the Lightning Dev Kit wallet generate a list of Bitcoin addresses (script_pubkeys) where their funds could end up if a channel counterparty force-closes a channel. It is a recovery/scanning feature, not a bug fix or vulnerability. The change also adds a test-only assertion to make sure the generated list actually contains the expected address when signing a counterparty payment.