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
Validate fallback addresses when decoding Bolt 11 invoices. Note that we must remove an existing test that used invalid addresses.
Fixes #3135
86/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validation
AI analysis · Moderate 51/100
This change tightens validation of Bitcoin fallback addresses embedded in Lightning invoices (Bolt 11). Previously, Eclair would accept invoices containing fallback addresses that were malformed or invalid for the invoice's network. Now it rejects such invoices during decoding. This is a defensive correctness fix that prevents downstream bugs or confusion, but the commit itself does not describe a specific exploitable vulnerability.
Add `maxCltvExpiryDelta` parameter to `findRoute*` APIs (#3234)
We add a parameter to `findroute` API variants to limit the total CLTV expiry delta of the route(s) returned.
Fixes #2617
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100
This commit adds a new optional setting called maxCltvExpiryDelta to Eclair's route-finding APIs. It lets users tell the Lightning node not to return payment routes whose total time-lock delay exceeds a chosen limit. The change is a feature addition, not a fix for an active vulnerability, and it does not alter default behavior when the new parameter is omitted.
Lower-priorityfixup! Add API methods to spend funds sent to taproot channel addresses (#3220) (#3228)by pm47 · 288c5418 · Jan 2, 2026 · 1 fileMessage 58 · ThinLow 41Details
Commit message · pm47
fixup! Add API methods to spend funds sent to taproot channel addresses (#3220) (#3228)
58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Low 41/100
This is a tiny one-line bugfix in Eclair's code for spending funds sent to Lightning channel addresses. The change corrects which Bitcoin script is checked to decide whether a channel uses the newer taproot format. Previously it checked the script of the destination address the user provided; now it checks the script of the actual output being spent from the funding transaction. Using the wrong script could cause the code to choose the wrong spending path or signature scheme, potentially making it impossible to recover funds sent to a taproot channel address or, in the worst case, constructing an invalid or insecure transaction. There is no claim in the commit that this is a security issue, and the fix is a follow-up to a recently added feature, so it likely fixes a functional bug rather than an active vulnerability.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathsigning or wallet pathparser or protocol path
AI analysis · Low 27/100
This commit updates Eclair to use a newer version of its underlying Bitcoin library (bitcoin-lib 0.46). The main change is a code refactor in how Taproot addresses and scripts are created: instead of passing an optional script tree, callers now explicitly choose between a 'key path' tweak (for simple key-spending) or a 'script path' tweak (for script-spending). The commit also updates related cryptographic checksums and test code. There is no direct evidence in the commit message or diff that this fixes a known security vulnerability; it appears to be a routine dependency and API refactor.
Lower-priorityDon't scan the blockchain for spent external channels (#3226)by Bastien Teinturier · 36822bb6 · Dec 17, 2025 · 8 filesMessage 93 · StrongLow 30Details
Commit message · Bastien Teinturier
Don't scan the blockchain for spent external channels (#3226)
When an external channel is spent, we don't immediately remove it from our network graph in case the spending transaction is a splice (see https://github.com/lightning/bolts/pull/1270 for more details).
A side-effect of this change, introduced in #2936, is that when we start watching a channel after receiving its `channel_announcement`, we will scan the blockchain if it is actually already spent. This can be expensive if peers send us `channel_announcement`s for channels that have been spent a long time ago since `bitcoind` doesn't provide an index for spending transactions. It is also misleading, because if we give up after scanning X blocks of the blockchain, we will create a log line saying that funds are at risk: they're never at risk since those are not our channels.
This commit fixes this issue by only checking whether the channel is already spent by a confirmed transaction or not when setting the watch (which is an inexpensive and efficient RPC call to `bitcoind`), without scanning the blockchain to find the spending transaction. If it is already spent, we immediately remove it from our network graph, even if the spending transaction was actually a splice. This is fine, since that channel will be re-added to our graph whenever we receive the `channel_announcement` for the splice. In the worst case, we will simply not route through an actually available channels for a few blocks while its splice transaction is confirming.
Co-authored-by: pm47 <pm.padiou@gmail.com>
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
AI analysis · Low 30/100
This commit fixes a performance and usability bug in the Eclair Lightning node. When the node learned about an old public channel that had already been closed, it would wastefully scan the entire Bitcoin blockchain looking for the closing transaction, which could be very slow and produced scary 'funds at risk' log messages even though no user funds were actually in danger. The fix makes the node simply check whether the channel output is already gone and, if so, remove the channel from its routing map without hunting for the closing transaction.
Lower-priorityAllow remote `dust_limit_satoshis` up to 5000 sats (#3227)by Bastien Teinturier · 5aea5142 · Dec 17, 2025 · 1 fileMessage 81 · StrongLow 37Details
Commit message · Bastien Teinturier
Allow remote `dust_limit_satoshis` up to 5000 sats (#3227)
Set allow remote `dust_limit_satoshis` up to 5000 sats, which means that HTLC outputs should be claimable at feerates lower than `25 sat/kw`.
Given that our default `dust-tolerance` is set to 50 000 sats, this allows at least 10 pending dust HTLCs before we start failing dust HTLCs back instead of relaying them.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 37/100
This commit lowers the maximum dust-limit Eclair will accept from a remote Lightning peer from 10,000 satoshis to 5,000 satoshis. Dust limits determine which tiny channel outputs can be created on-chain. The change is framed as a defensive tightening: with Eclair's default dust tolerance of 50,000 sats, it still allows at least 10 tiny HTLCs to be pending before the node stops relaying them. The commit message itself describes the change in security-relevant terms (preventing uneconomical on-chain HTLC claims), but the diff is a single configuration value change and does not fix an obvious, exploitable bug.
Security candidateIdentify failing node by its index (#3224)by Thomas HUET · 856e236f · Dec 15, 2025 · 16 filesMessage 76 · AdequateLow 35Details
Commit message · Thomas HUET
Identify failing node by its index (#3224)
When a HTLC is failed remotely, the failing node was previously identified by its node id. However this is not enough if the same node appears multiple times in the payment route, for instance for circular rebalancing. We now identify the failing node using its index in the payment route.
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
cryptography-sensitive path
AI analysis · Low 35/100
This commit fixes a routing bug in the Eclair Lightning node. When a payment failed somewhere along the path, the software used to identify the failing node only by its public key. That caused confusion when the same node appeared more than once in a route (for example, in circular rebalancing payments), because the wrong occurrence could be blamed. The fix adds the failing node's position (index) in the route so the correct hop is identified. This is a correctness/reliability improvement rather than a direct theft-of-funds vulnerability, but misidentifying the failing hop could lead to poor routing decisions, unnecessary retries, or incorrect blacklisting of channels/nodes.
After a splice transaction confirms, we don't need to keep watching the previous funding output: it has been irrevocably spent and needlessly consumes resources in the `Watcher` actor.
Those watches are cleaned up when the `Channel` actor dies, which does not happen if the channel isn't closed and the `Peer` actor is kept alive while disconnected.
Whenever we receive a new block, we log the number of watches we have. This lets us detect whether we're missing some clean-up of old watches in edge cases.
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 25/100
This commit fixes a resource cleanup issue in the Eclair Lightning node. After a channel is upgraded via a 'splice' transaction, the old funding transaction output is permanently spent. Previously, Eclair kept watching that old output indefinitely if the channel stayed open and the peer stayed disconnected, wasting memory and processing power in the blockchain watcher. The change explicitly tells the watcher to stop watching those old, already-spent outputs. It also adds logging so operators can spot similar leftover watches. There is no direct evidence in the commit that this was exploitable to steal funds or attack other nodes; it appears to be a performance and robustness improvement.
Lower-priorityAdd API methods to spend funds sent to taproot channel addresses (#3220)by Fabrice Drouin · 38dc4072 · Dec 4, 2025 · 4 filesMessage 81 · StrongInformational 11Details
Commit message · Fabrice Drouin
Add API methods to spend funds sent to taproot channel addresses (#3220)
Add API methods to spend funds sent to taproot channel addresses
This PR adds new API calls that extend spendFromChannelAddress* calls to taproot channels.
---------
Co-authored-by: pm47 <pm.padiou@gmail.com>
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 11/100
This commit adds new API methods to let users spend funds that were accidentally sent to taproot-style Lightning channel addresses. It extends existing recovery tools to support a newer address format. There is no indication in the commit that this fixes a security vulnerability; it appears to be a feature addition.
Lower-priorityFix links to 'Reaching The Ground With Lightning' (#3219)by ekzyis · e1775eeb · Dec 4, 2025 · 2 filesMessage 58 · ThinInformational 15Details
Commit message · ekzyis
Fix links to 'Reaching The Ground With Lightning' (#3219)
58/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100
This commit only updates two broken documentation links in markdown files. It does not change any program code, configuration, or security behavior. There is no security issue.
Lower-priorityMonitor the internal state of `ReputationRecorder` (#3216)by Bastien Teinturier · a87963b1 · Nov 19, 2025 · 2 filesMessage 81 · StrongInformational 17Details
Commit message · Bastien Teinturier
Monitor the internal state of `ReputationRecorder` (#3216)
It is quite hard to reason about the internal state of this actor, and it tracks every pending HTLC. If for some reason we're not removing HTLCs correctly, this would create a memory leak.
We log the number of pending HTLCs every 5 minutes to help detect if clean-up is correctly implemented.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 17/100
This commit adds a periodic log message to an internal bookkeeping actor so developers can spot if pending payment records are piling up unexpectedly. It does not fix a known bug or change how payments are processed; it is purely an observability/monitoring improvement.
Update default configuration for revoked HTLC clean-up (#3212)
The default configuration for removing old rows containing revoked HTLC data after a channel close was too slow and inadequate for most nodes. We update it to use smaller batches without a much shorter interval.
Thanks @DerEwige for providing data about their experiments.
Fixes #3211
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 28/100
This commit changes default settings and timing logic for a database cleanup task that removes old Lightning channel data after channels close. The old defaults deleted very large chunks very infrequently, which could slow down or stress busy nodes. The new defaults use smaller, more frequent deletions and avoid stacking up cleanup jobs when the database is already busy. There is no direct security vulnerability being patched; it is a performance and operational-stability improvement.
Lower-priorityAllow high remote `dust_limit_satoshis` (#3215)by Bastien Teinturier · f6a5a3ca · Nov 17, 2025 · 1 fileMessage 88 · StrongLow 33Details
Commit message · Bastien Teinturier
Allow high remote `dust_limit_satoshis` (#3215)
Now that we only accept anchor output channels and beyong, we should let our peers use high `dust_limit_satoshis` values to ensure that the transaction outputs are economically spendable.
We can't yet raise our `dust_limit_satoshis`: we must first accept high values, and in the next release (and once other implementations support it as well), then we'll be able to increase our default value.
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
AI analysis · Low 33/100
This commit raises the maximum dust limit Eclair will accept from remote Lightning peers from 600 to 10,000 satoshis. Dust limits determine the smallest transaction output a channel will create. The change is framed as a forward-compatibility and economic-spendability improvement for newer 'anchor output' channels, not as a security fix. It does not change Eclair's own dust limit (still 546 satoshis).
✓ Descriptive subject✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
signing boundarycryptography-sensitive path
AI analysis · Informational 12/100
This is a routine dependency update for Eclair, a Bitcoin Lightning node. It bumps the internal 'bitcoin-lib' library from version 0.45 to 0.45.1 and its related 'bitcoin-kmp-jvm' component from 0.28.0 to 0.28.1. The commit message says the purpose is to add support for 'P2A PSBTs' (a new Bitcoin transaction format feature). The change only updates version numbers and recorded checksums; no application code is modified in this commit. There is no mention of a security fix, bug, or vulnerability.
Use 73 bytes der-encoded signatures in weight estimation (#3210)
While 73 bytes der-encoded signatures aren't standard (they're only possible with high-S signatures), miners could accept such signatures.
Most of our tests use 72 bytes der-encoded signatures because we will never generate 73 bytes der-encoded signatures ourselves. But it's more safe to use a 73 bytes signature in our weight estimation because:
- it's what the BOLTs recommend - it's what other implementations use (e.g. LDK) which means they may reject our interactive-tx attempts by thinking we're under-paying fees
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✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 35/100
This commit adjusts how Eclair estimates the 'weight' (a measure of transaction size used to calculate Bitcoin mining fees) for funding inputs in Lightning channel transactions. It increases the assumed signature size from 72 to 73 bytes, matching what the Lightning specification recommends and what other implementations like LDK use. The change is defensive: it helps prevent Eclair's interactive transaction proposals from being rejected by peers who think Eclair is under-paying fees, and it avoids edge cases where miners might accept a slightly larger signature than Eclair accounted for.
Allow aborting liquidity purchases after signing (#3206)
When a liquidity purchase is signed, we eagerly add it to our DB before receiving the remote `interactive-tx` signatures. If we reach that step, our peer should always finalize the signing steps, so we didn't bother handling the case where they would instead send `tx_abort`. When that happened, we kept the upstream HTLCs pending until they got close to their expiry, at which point we failed them.
We've seen cases where seemingly non-malicious mobile wallets abort that kind of liquidity purchases after a disconnection. It is harmful for an honest sender to keep the HTLCs pending, so we now immediately fail them in that case.
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 boundarysigning or wallet path
AI analysis · Low 47/100
This commit fixes a bug in Eclair, a Bitcoin Lightning Network node implementation. When a user tried to buy extra spending capacity (a 'liquidity purchase') and the remote peer backed out after the local node had already signed, Eclair kept the related incoming payments stuck in limbo until they nearly expired. The patch makes Eclair immediately fail those stuck payments when the peer aborts, which is fairer to honest senders and avoids unnecessary delays. It is a correctness/availability improvement rather than a direct theft-of-funds vulnerability.
Lower-priorityCheck that relay fees are nonnegative (#3209)by Thomas HUET · ff1ce1fe · Nov 5, 2025 · 1 fileMessage 53 · ThinModerate 54Details
Commit message · Thomas HUET
Check that relay fees are nonnegative (#3209)
Fixes #3204
53/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Moderate 54/100
This commit adds a server-side check to make sure users cannot set negative Lightning Network routing fees through the API. Previously, the API accepted negative values for base and proportional relay fees, which could cause a node to pay others when forwarding payments or create confusing, loss-inducing channel policies. The fix rejects such inputs with a validation error.
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.
Enable detailed monitoring for singleton actors (#3200)
This allows tracking the `mailbox-size` for those actors, while existing group-level monitoring only tracks `time-in-mailbox`.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit is a routine observability/monitoring change. It renames a few internal actor identifiers (for example from 'zmqblock' to 'zmq-block') and adds a Kamon monitoring configuration so that specific singleton actors report their mailbox size. There is no security fix or vulnerability present in the diff.
Lower-priorityAdd more logs around `commit_sig` (#3202)by Bastien Teinturier · 767bae8b · Oct 31, 2025 · 3 filesMessage 76 · AdequateInformational 15Details
Commit message · Bastien Teinturier
Add more logs around `commit_sig` (#3202)
We have a few force-close caused by invalid commit_sig messages. This may happen when multiple devices are used in parallel, but some reports don't seem to be using multiple devices.
Unfortunately, we didn't log the details of the commit tx we're building in every case. Also, we only logged details of our local commit tx after validating the remote `commit_sig`, which means we cannot troubleshoot the case where we reject that remote `commit_sig`.
We now log details of the commit tx construction in every scenario, which should allow detecting discrepancies between the local and remote states.
76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit only adds extra logging messages around Lightning channel commitment signatures. It does not change any security logic, validation rules, or cryptographic checks. The goal is to make debugging easier when a peer's signature is rejected, which can sometimes lead to a channel force-close. There is no vulnerability being fixed here.
✓ Subject identifies a change✓ Links an issue, advisory, or supporting reference! Too few words to establish purpose! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
cryptography-sensitive pathparser or protocol path
AI analysis · Informational 15/100
This commit is a small cleanup pull request titled 'Nits'. It fixes a typo in documentation, corrects a log message to show the right commitment format name, changes a debug log to info level for transaction signing, adds structured logging context for authenticated peer connections, and removes an outdated ASCII diagram comment. None of these changes affect security.
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.
Lower-priorityStop sending `update_fee` for mobile wallets (#3186)by Bastien Teinturier · 3b690131 · Oct 27, 2025 · 6 filesMessage 81 · StrongLow 36Details
Commit message · Bastien Teinturier
Stop sending `update_fee` for mobile wallets (#3186)
We stop sending `update_fee` and set the feerate to `1 sat/byte` for channels with mobile wallet users. This removes edge cases around `update_fee` handling in tricky cases (splicing, shutdown, etc) while still allowing channels to force-close thanks to package relay.
Note that mobile wallets that don't have an on-chain wallet to use CPFP on the commit transaction may not be able to get their commit tx confirmed, but that was already the case before that change since the LSP decides the commit feerate. This will get better with v3 txs and https://delvingbitcoin.org/t/zero-fee-commitments-for-mobile-wallets/1453
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 36/100
This change adjusts how Eclair sets on-chain fees for channels with mobile wallets (specifically Phoenix). Instead of repeatedly sending fee-update messages and using higher feerates, it now pins the commitment transaction feerate to 1 satoshi per byte and stops sending update_fee for those channels. The goal is to simplify fee handling during complex operations like splicing and shutdown, relying on Bitcoin's package relay to still allow force-closes to propagate. The commit notes a trade-off: mobile wallets without their own on-chain funds may struggle to confirm force-close transactions via CPFP, but that was already the case because the LSP (the node running Eclair) controlled the feerate anyway.
Security candidateRemove support for non-anchor channels (#3173)by Bastien Teinturier · 9911cb73 · Oct 27, 2025 · 86 filesMessage 98 · StrongLow 34Details
Commit message · Bastien Teinturier
Remove support for non-anchor channels (#3173)
We remove support for `static_remotekey` channels and `default` channels, as advertised in the v0.13 release. This lets us remove some code related to feerate management and simplifies the test matrix.
Node operators that still have such channels must not run this version of `eclair`, which will otherwise fail to start.
Note that for now, we keep sending `update_fee` whenever necessary. We could remove that now that package relay allows 1p1c packages to propagate even when the parent is below the mempool minimum feerate, but we defer that to a later PR for simplicity.
98/100 · StrongMessage clarity
✓ 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
cryptography-sensitive pathsigning or wallet pathauthentication pathparser or protocol path
AI analysis · Low 34/100
This commit removes support for older Lightning channel types ('static_remotekey' and 'default' channels) from the Eclair node software. It is a deliberate feature-removal change announced in the previous release. The main risk is operational: node operators who still have legacy channels and upgrade to this version will find Eclair fails to start, potentially leaving them unable to manage funds until those channels are closed with an older version. The patch also simplifies fee-rate handling because anchor-style channels handle fees differently, and it removes wallet-public-key caching code that was only needed for the obsolete channel types.
Require closed channels migration before starting (#3198)
We require closed channels to be migrated to the closed channels table introduced in #3170 before starting `eclair`. This ensures that we will not lose channel data when removing support for non-anchor channels in the next release.
Node operators will have to:
- run the v0.13.0 release to migrate their channel data to v5 - run the v0.13.1 release to migrate their closed channels
Afterwards, they'll be able to update to the (future) v0.14.x release once all of their pre-anchor channels have been closed.
81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Low 26/100
This commit changes Eclair's database startup checks so that the node refuses to start unless the operator has already run the v0.13.0 and v0.13.1 releases to migrate channel data. The migration code that used to run automatically when Eclair started has been removed from the startup path and replaced with a hard requirement. This is a defensive, operational-safety change, not a remotely exploitable vulnerability fix. It prevents accidental data loss for operators who skip intermediate releases, but it does not patch a security bug that an attacker could abuse.