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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This commit updates the PostgreSQL database driver used by Eclair from version 42.7.11 to 42.7.12. It is a routine dependency bump by an automated tool. The commit itself does not say what bugs the new driver fixes, but small point-release…
Dependency version bump of a database driverPoint-release upgrade may include upstream security fixes, but none are named in the commitNo application code changes or direct vulnerability evidence in the diff
This commit updates Eclair's Bitcoin library dependency from version 0.48 to 0.49, which internally uses newer versions of bitcoin-kmp and secp256k1-kmp. The code changes only replace old property accesses (like `.txid`) with new method ca…
Dependency version bump for Bitcoin and secp256k1 cryptographic librariesSource changes are API adaptations (.txid -> .getTxid), not logic changesSecurity-critical validation code is touched (PSBT/transaction integrity checks against malicious Bitcoin Core)
This commit is a routine build-system update. It upgrades several Maven plugin versions, removes the git commit ID from one jar manifest field to avoid a build-time circular dependency, and adds an optional build profile for a fuzz-testing…
This commit closes a cross-site request forgery (CSRF) hole in Eclair's admin API. Before the change, a malicious web page visited by a node operator could silently submit authenticated API requests (for example, to send funds or close Lig…
New origin-check directive rejecting all requests with an Origin headerRemoval of CORS response headers from API responsesCSRF protection described in commit message and release notes
This commit is a routine post-release housekeeping change. It bumps the project version from 0.14.3 to 0.15.0-SNAPSHOT across several build files, re-enables a Maven trusted-checksum feature used for build verification, adds a placeholder …
No security-relevant code changesNo vulnerability indicatorsNo bug fixes or patches
This commit adjusts build packaging settings to make compiled releases more reproducible across different computers. It sets consistent file permissions and line endings for packaged documentation and runtime files. There is no indication …
This is a large security patch for the Eclair Lightning node that fixes multiple ways an attacker could steal funds, burn money to miners, or lock funds forever. The fixes include: preventing force-closes with un-publishable splice transac…
Force-close uses latest publishable commitment to avoid unconfirmable splice commit txsClosing fee bounded by maxClosingFeerate when local node pays feesNew max-funding-feerate configuration caps funding/splice miner fees
This change expands when Eclair will allow password-based authentication to a Tor control port. Previously, only loopback addresses (the same machine) were considered safe enough for password auth. Now, private/site-local and link-local ne…
Relaxation of authentication-method restriction for Tor control portPassword authentication now permitted on site-local and link-local addressesOriginal code explicitly rejected password auth for non-loopback addresses
This commit is a routine post-release housekeeping change. It bumps the project version from 0.14.2 to 0.15.0-SNAPSHOT, re-enables a Maven trusted-checksum feature used for build verification, adds a placeholder release-notes file, and del…
No security-relevant code changes indicating a vulnerabilityBoot.scala startup guard prevents accidental deployment of an unsafe development snapshotMaven trusted checksum verification is re-enabled, improving supply-chain/build integrity
This commit hardens Eclair's handling of the Lightning 'splicing' feature when a peer misbehaves. Splicing lets two nodes resize an open payment channel without closing it on-chain. The patch adds extra checks so that if a peer sends unexp…
Adds commitment-index consistency checks before completing splice/RBF funding attemptsRejects forbidden update messages while remote peer is quiescingRejects commit_sig during quiescence to prevent commitment-index desync
This commit adds a safety net to the Eclair Lightning node to limit how many incoming peer connections can sit unfinished before completing the cryptographic handshake. Previously, an attacker could open many TCP connections and leave them…
Resource-exhaustion mitigation: bounds unauthenticated incoming connections to prevent memory/file-descriptor/CPU exhaustionNew kill reason TooManyPendingConnections added to PeerConnection.KillReasonNew metrics incomingconnections.pending/evicted/rejected for monitoring abuse
This commit fixes three security issues in how Eclair connects to the Tor network and stores sensitive files. First, it changes the default Tor authentication from password to safecookie, and blocks password mode when the Tor control port …
Default authentication changed from password to safecookiePassword authentication rejected for remote Tor control portsTor cookie length validated to be exactly 32 bytes
This commit fixes a bug in the Eclair Lightning node where a peer could send a message containing both a correct standard signature and an incorrect partial signature. The old code would verify the correct signature but then store the inva…
Type-confusion between IndividualSignature and PartialSignatureWithNonce in channel messagesInvalid partial signature could be stored after valid individual signature was verifiedNew signatureFor helper enforces commitment-format-aware signature selection
This change makes the Eclair Lightning node force-close a payment channel if a peer tries to add a payment whose timeout value (cltv_expiry) is 500,000,000 or higher. Such large values are invalid according to the Lightning BOLT 2 specific…
BOLT 2 compliance check added for HTLC cltv_expiry >= 500,000,000Invalid cltv_expiry now triggers local error and channel force-closeOff-by-one fix in locktime threshold interpretation (<= changed to <)
This commit adds a new optional encrypted payload to Lightning payment fulfillment messages. It is a feature implementation, not a fix for an active vulnerability. The code does introduce a safety check: if a peer sends an oversized fulfil…
New cryptographic payload handling added to payment fulfillment pathSize limits and silent truncation applied to failure packets, fulfillment payloads, and attribution dataChannel force-close triggered on oversized peer fulfillment payload
This commit fixes five low-severity security or robustness issues in the Eclair Lightning node. It removes a risky type cast that could crash the node on corrupted channel data, forces encrypted cluster communication to prevent private dat…
Unsafe type cast removed from channel codecCluster mode now requires tls-tcp transportAPI error responses no longer include exception messages
This commit fixes a bug in the Eclair Lightning node where, after a restart, the node could be tricked into keeping the wrong incoming payments alive. An attacker could reuse the same payment identifier (payment_hash) from a legitimate in-…
Fixes a logic bug that could lead to forced channel closuresAttack vector: payment_hash reuse to pin unrelated HTLCsChanges identifier from payment_hash to unique (channel_id, htlc_id)
This commit only updates user documentation. It adds warnings that the Bitcoin node (bitcoind) should run on the same machine as Eclair, and if it runs remotely, operators must use a secure encrypted tunnel. No code was changed, so this pa…
Documentation-only changeNo code, configuration, or cryptographic modificationsDescribes pre-existing deployment risk rather than a new vulnerability
This commit fixes several bugs in Eclair's 'on-the-fly funding' feature, which lets a node open a Lightning channel and pay for it using future payment fees. The bugs could allow a malicious peer to make the node pay twice, lose money on f…
Double-payment vulnerability fixed: paymentAlreadyRelayed now checks commitment transactions in addition to pending local changes, preventing relay of already-cross-signed HTLCs after restart.Loss-of-funds vulnerability fixed: funded channels with unpaid future-HTLC fees are force-closed before upstream HTLCs are failed, avoiding a race where the peer fulfills a cross-signed downstream HTLC after we failed upstream.Upstream settlement gap fixed: preimages received after HTLC expiry are now relayed upstream, preventing the node from paying downstream without being paid upstream.
This commit tightens file and folder permissions for Eclair's sensitive data. It ensures that seed files (which protect the node's identity and Lightning channel funds) and the data directory are readable only by the owner on Linux/macOS s…
Hardening of seed file permissions to owner-only read/writeHardening of datadir and chaindir permissions to owner-onlyMigration path also re-permissions copied seed files
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
AI review queuedMore tests for accountability (#3240)by Thomas HUET · 0214a1e7 · Jan 8, 2026 · 4 filesMessage 78 · AdequateInformational 15Details
Commit message · Thomas HUET
More tests for accountability (#3240)
These tests are also added to lightning-kmp (https://github.com/ACINQ/lightning-kmp/pull/846) to check compatibility.
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit only adds new test cases for an existing feature called 'accountability' in the Eclair Lightning node software. It does not change any production code, so it cannot introduce a new security vulnerability or directly fix one. The tests verify that invoice and payment onion data containing an 'UpgradeAccountability' marker are encoded and decoded correctly.
AI review queuedCI: fix test with latest bitcoind (#3239)by Fabrice Drouin · 3ac122b9 · Jan 8, 2026 · 1 fileMessage 98 · StrongInformational 15Details
Commit message · Fabrice Drouin
CI: fix test with latest bitcoind (#3239)
Add flag to build without multiprocess architecture which we don't use and requires and additional dependency (capnproto).
98/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
This is a routine GitHub Actions CI workflow change. It adds a build flag to disable an optional Bitcoin Core multiprocess feature that the project does not use, so that automated tests against the latest bitcoind version can compile without needing an extra dependency (capnproto). There is no change to Eclair's production code, no user-facing behavior change, and no security relevance.
We emit several events during the channel lifecycle, which have become a bit of a mess over the years, especially with the addition of 0-conf, splicing and on-the-fly funding.
We now use the following events:
- `ChannelCreated` once the funding transaction is created - `ChannelFundingConfirmed` once the funding transaction is confirmed, which is also emitted for splice transactions - `ChannelReadyForPayments` once the channel is ready for payments, after exchanging `channel_ready` for the channel creation or `splice_locked` for splice transactions
The order between `ChannelFundingConfirmed` and `ChannelReadyForPayments` depends on whether 0-conf is used or not.
We remove `ChannelOpened`, which was actually a subset of the existing `ChannelReadyForPayments` event (which was added afterwards).
We add a few fields to existing channel events, which we don't yet store in the DB to avoid modifying it, but will store later when we modify the schema of the `AuditDb`.
We now store an entry in the `AuditDb` whenever a splice transaction confirms, which allows tracking the full history of a channel's changes.
88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 20/100
This commit is a routine internal refactoring of Eclair's channel-lifecycle event system. It renames and splits events (for example replacing 'channel-opened' with 'channel-confirmed' and 'channel-ready') so the software can correctly track normal channels, zero-confirmation channels, and splice transactions. It also records more details in the audit database, such as the funding transaction ID for each splice. There is no direct security vulnerability in the diff; it is a maintainability and observability improvement.
AI review queuedAccountable HTLCs (#3217)by Thomas HUET · e3fd1867 · Jan 5, 2026 · 68 filesMessage 58 · ThinLow 37Details
Commit message · Thomas HUET
Accountable HTLCs (#3217)
Add accountability signal for HTLCs, it replaces endorsement. See https://github.com/lightning/bolts/pull/1280
58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathparser or protocol pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Low 37/100
This commit replaces an older 'endorsement' anti-jamming signal with a new 'accountable' signal for Lightning HTLCs, following a draft specification update. It changes how invoices, payment onions, and channel messages carry and propagate this signal. Importantly, the release notes state the protections are not yet enforced: the node only collects data and logs what it would have rejected. The change is a protocol update and data-collection feature, not an active enforcement that directly blocks payments today.
While we send `commit_sig` messages individually on the wire, we need a codec for the batch object when using the cluster mode, when peer connection actors live on remote machines.
66/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 21/100
This commit adds a new internal-only message format called CommitSigBatch so that Eclair nodes running in cluster mode can send groups of commit_sig messages between internal machines. It is not a change to the public Lightning network protocol; peers still receive commit_sig messages one at a time. The change is a straightforward codec addition with a matching unit test.
AI review queuedAdd more tolerance in tests (#3199)by pm47 · 6dd9f769 · Oct 29, 2025 · 1 fileMessage 78 · AdequateInformational 15Details
Commit message · pm47
Add more tolerance in tests (#3199)
DER encoding size can vary by +- 3 bytes, not +- 2.
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit only widens the allowed margin in a test assertion about DER-encoded ECDSA signature sizes, from plus/minus 2 bytes to plus/minus 3 bytes. It is a test-only change and does not alter production code, transaction validation, or cryptographic handling.
AI review queuedBack to dev (#3197)by Bastien Teinturier · ddf75bc6 · Oct 27, 2025 · 7 filesMessage 36 · OpaqueInformational 15Details
Commit message · Bastien Teinturier
Back to dev (#3197)
After the v0.13.1 release.
36/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine post-release housekeeping change. It bumps the project version from 0.13.1 to 0.14.0-SNAPSHOT, re-enables Maven trusted checksum verification for development builds, adds a placeholder release notes file, and intentionally prevents accidental production use of the new development snapshot by refusing to start unless a special override flag is set. There is no security vulnerability here.
AI review queuedCreate fresh shutdown nonce on reconnection (#3184)by Bastien Teinturier · d1863f94 · Oct 8, 2025 · 2 filesMessage 93 · StrongModerate 59Details
Commit message · Bastien Teinturier
Create fresh shutdown nonce on reconnection (#3184)
When we disconnect after sending `shutdown`, we must re-send `shutdown`. When using taproot, we must generate a fresh nonce and store the private nonce locally, otherwise we won't be able to create our `closing_sig`.
93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Moderate 59/100
This patch fixes a bug in the Eclair Lightning node that occurs when a channel is closing using the newer Taproot channel type and the connection drops after a shutdown message was sent. On reconnection, the node must resend shutdown, but it was reusing an old cryptographic nonce. For Taproot, each shutdown needs a fresh nonce, and the node must keep the matching private nonce to later sign the closing transaction. Without the fix, the node could be unable to produce its closing signature after reconnecting, potentially stalling or complicating mutual channel closure.
✓ Subject identifies a change✓ Links an issue, advisory, or supporting reference! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
parser or protocol pathsecond-pass: opaque commit messagesecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit contains two tiny cleanups: it fixes the order of flags in a shell command example in build documentation, and removes decorative ASCII table borders from a code comment describing the layout of an encrypted failure message. Neither change alters program behavior or fixes a security issue.
AI review queuedFix encoding of channel type TLV in splice_init/splice_ack (#3178)by Fabrice Drouin · 5b4368a6 · Sep 23, 2025 · 2 filesMessage 81 · StrongLow 45Details
Commit message · Fabrice Drouin
Fix encoding of channel type TLV in splice_init/splice_ack (#3178)
Fix encoding of channel type TLV in splice_init/splice_ack
The channel type codec that we use is a "TLV field codec", wrapping it in a tlvField() codec was wrong and messed up the encoding.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 45/100
This commit fixes a wire-encoding bug in Eclair's Lightning splicing messages. The channel type field was being wrapped twice, which produced an incorrect byte layout. The fix removes the extra wrapper so the messages encode and decode correctly. It is a protocol-compatibility bug rather than a direct theft-of-funds vulnerability, but it could cause peers to reject or misinterpret splice messages.
AI review queuedReject offers with some fields present but empty (#3175)by Thomas HUET · abe2cc9c · Sep 22, 2025 · 6 filesMessage 81 · StrongModerate 52Details
Commit message · Thomas HUET
Reject offers with some fields present but empty (#3175)
Offers or invoices where the fields `offer_chains`, `offer_paths`, `invoice_paths`, `invoice_blindedpay` are present but empty are considered invalid. While the spec does not necessarily rejects them explicitly, they can't be paid.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Moderate 52/100
This commit tightens validation of Bitcoin Lightning 'Bolt 12' offers and invoices. Previously, an offer or invoice could include certain list fields (such as payment paths or supported chains) that were technically present but contained zero entries. The code now rejects these empty-but-present fields during parsing. The change prevents malformed or unpayable offers/invoices from being accepted, which could otherwise confuse wallets, break routing, or be used to probe implementations.
AI review queuedResign next remote commit on reconnection (#3157)by Bastien Teinturier · 379abc55 · Sep 12, 2025 · 11 filesMessage 88 · StrongModerate 60Details
Commit message · Bastien Teinturier
Resign next remote commit on reconnection (#3157)
We previously retransmitted our last `commit_sig` on reconnection if it hadn't been received by our peer, without changing it. This can be an issue for taproot channels when remote nodes don't use deterministic nonce derivation, because their nonce may be different on reconnection and our previous `commit_sig` would thus not be valid anymore.
We now re-sign the next commitment on reconnection, using the latest nonces we receive from `channel_reestablish`.
88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Moderate 60/100
This commit fixes a bug in Eclair's Lightning payment channels that use the newer taproot format. When two nodes reconnect after a temporary network interruption, the local node used to resend the exact same cryptographic signature it had sent before. For taproot channels, the remote peer may choose a fresh random 'nonce' after reconnecting, which makes the old signature invalid. The fix makes the local node re-sign the next commitment using the latest nonces received during reconnection, preventing the channel from getting stuck or failing to advance after reconnect.
AI review queuedUpdate taproot commit weight to match `lnd` (#3158)by Bastien Teinturier · a7e57ea7 · Sep 11, 2025 · 1 fileMessage 81 · StrongLow 33Details
Commit message · Bastien Teinturier
Update taproot commit weight to match `lnd` (#3158)
`lnd` uses a pessimistic weight estimate, assuming that varints take 5 bytes instead of 1 (when encoding the number of inputs and outputs of the transaction).
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 33/100
This commit adjusts the estimated transaction size (weight) Eclair reserves when closing or updating Taproot Lightning channels. It makes Eclair's estimate match lnd's more pessimistic assumption about how many bytes are needed to count transaction inputs and outputs. If the estimate is too low, a channel partner could be forced to pay unexpectedly high on-chain fees or a cooperative close could fail; if too high, funds get locked up longer than necessary. The change is a small numeric tweak from 960 to 968, not a clear-cut vulnerability fix.
AI review queuedRemove legacy channel codecs and DB migrations (#3150)by Bastien Teinturier · ae3e44be · Sep 11, 2025 · 100 filesMessage 100 · StrongLow 26Details
Commit message · Bastien Teinturier
Remove legacy channel codecs and DB migrations (#3150)
* Remove legacy channel codecs
We remove legacy channel codecs (versions earlier than v5). We also remove the corresponding DB migrations: if node operators try to upgrade from a version of eclair that is older than v0.13, we tell them to first run the v0.13 version to migrate their channel data.
We regenerate serialization backwards-compatibility test vectors based on anchor outputs or taproot channel types.
* Check channels DB version early
We check the channels DB version before running any DB migration, to ensure that node operators can safely run the v0.13 release first. Otherwise we may have started migrating an unrelated table to a newer version that isn't included in the v0.13 release, which would thus fail at start-up.
* Remove migration from `sqlite` to `postgres`
We now expect users to directly use `postgres` if they expect their node to become large. The `sqlite` option should only be used for small nodes for individuals, where it is performant enough.
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Low 26/100
This commit is a large cleanup of old code in the Eclair Lightning node software. It removes support for reading very old channel data formats (before version 0.13) and removes the built-in tool that migrated data from SQLite to PostgreSQL. The change is intentional and documented: users on versions older than 0.13 must first upgrade to 0.13, which will convert their data, before installing this newer version. There is no evidence of a security vulnerability being introduced; the main risk is that an unprepared operator could accidentally make their node fail to start by skipping the required intermediate upgrade.
AI review queuedBack to dev (#3155)by Bastien Teinturier · 3abc17f9 · Sep 10, 2025 · 7 filesMessage 36 · OpaqueInformational 15Details
Commit message · Bastien Teinturier
Back to dev (#3155)
After the v0.13.0 release.
36/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100
This commit is a routine post-release housekeeping change. It bumps the project version from 0.13.0 to 0.14.0-SNAPSHOT, re-enables a Maven trusted-checksum feature used for build verification, creates a placeholder release notes file, and adds a safety guard in the startup code that refuses to run development snapshot builds unless a special override flag is set. None of these changes fix or introduce a security vulnerability; the startup guard is a deliberate safety measure, not a bug.
It appears that `lnd` nodes don't always set `option_simple_close` when setting `taproot_staging`, which creates disconnection issues.
We will enforce this for the official taproot feature bit, but we should relax it for the staging bit.
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 24/100
This commit removes a technical rule that required a specific Lightning feature flag (simple close) to be enabled whenever another experimental taproot feature flag (taproot staging) was enabled. Some lnd nodes were setting taproot staging without also setting simple close, causing Eclair nodes to disconnect from them. The change makes Eclair more tolerant of this behavior for the staging feature bit, while keeping the stricter rule for the final taproot feature bit. It is a compatibility/interoperability fix, not a security patch.
AI review queuedCatch close commands in `Offline(WaitForDualFundingSigned)` (#3159)by pm47 · c9ff5019 · Sep 9, 2025 · 2 filesMessage 85 · StrongLow 43Details
Commit message · pm47
Catch close commands in `Offline(WaitForDualFundingSigned)` (#3159)
They were previously ignored because we don't yet have a commitment.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 43/100
This patch fixes a state-handling bug in Eclair, a Bitcoin Lightning Network node implementation. When a new dual-funded channel was stuck waiting for both parties to sign, and the node went offline, a force-close command was silently ignored. The fix makes the node properly abort the channel and roll back the funding transaction attempt, preventing funds from being left in limbo.
It saves tedious double parentheses: `FeeratePerKw(FeeratePerByte(1 sat))` -> `FeeratePerByte(1 sat).perKw`.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100
This commit is a pure code cleanup: it replaces nested constructor calls like FeeratePerKw(FeeratePerByte(x)) with new helper methods like x.perKw. The math and behavior are unchanged; only the syntax is shorter and more readable.
AI review queuedFix minor incompatibilities with feature branches (#3148)by Bastien Teinturier · 3d5fd334 · Sep 1, 2025 · 9 filesMessage 81 · StrongInformational 18Details
Commit message · Bastien Teinturier
Fix minor incompatibilities with feature branches (#3148)
* Fix conflict with custom TLVs for `prevtxout`
We already use TLV types 1107 and 1109 for our experimental swap-in-potentiam implementation.
* Store spent outpoints for confirmed funding txs
This can be used in feature branches to catch double-spending issues across interactive-tx sessions early in the flow.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100
This is a small internal maintenance patch for the Eclair Lightning node. It changes an experimental message code number to avoid clashing with another in-development feature, and it starts recording which previous transaction inputs were spent by confirmed funding transactions. There is no direct security fix for a currently exploitable bug; it is preparation/cleanup for feature branches.
AI review queuedSplit commit nonces from funding nonce in `tx_complete` (#3145)by Bastien Teinturier · d7ee6638 · Aug 25, 2025 · 7 filesMessage 81 · StrongLow 25Details
Commit message · Bastien Teinturier
Split commit nonces from funding nonce in `tx_complete` (#3145)
The commit nonces and funding nonce provided in `tx_complete` are actually completely orthogonal:
- the commit nonces must be provided whenever the *next* commitment format is using taproot - the funding nonce must be provided whenever the *previous* commitment format is using taproot
It thus makes more sense to split them into separate TLVs.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: broader security terminologysecond-pass: security-sensitive path
AI analysis · Low 25/100
This commit refactors how cryptographic nonces are packaged inside a Lightning protocol message called tx_complete. Previously, two unrelated nonce types were bundled together; now they are split into separate optional data fields. The change is a protocol cleanup and does not by itself fix a known exploit, but it removes a design ambiguity that could lead to incorrect nonce handling during taproot channel funding or splicing.
AI review queuedOffers with currency must set amount. (#3140)by Thomas HUET · b651e5b9 · Aug 19, 2025 · 2 filesMessage 78 · AdequateLow 40Details
Commit message · Thomas HUET
Offers with currency must set amount. (#3140)
Adds check and corresponding test from lightning/bolts#1279
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 40/100
This commit adds a missing validation rule for a type of Bitcoin Lightning payment request called a BOLT12 offer. Previously, Eclair would accept offers that named a fiat currency (like USD) but did not include an amount. That combination is invalid according to the Lightning specification, because a currency without an amount is meaningless. The fix rejects such malformed offers and adds a test case. The main risk is that an attacker could trick a node into accepting or acting on an ambiguous offer, potentially leading to incorrect pricing, payment routing confusion, or interoperability failures with other implementations.