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
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 22/100
This commit updates Eclair's underlying Bitcoin library from version 0.47 to 0.48 and makes small code adjustments to match the new library's API. The changes touch how private keys are derived and how test data is converted. There is no direct evidence in the commit that this fixes a security vulnerability, but library updates can include bug fixes or improvements that affect cryptographic handling.
We refactor the attribution data code to make it more consistent with the rest of the Sphinx-related code. We add comments and intermediate variables to make it more readable. We introduce intermediate classes to hold data and add better symmetry between the success and failure cases.
This will make it easier to implement trampoline attribution and add fulfillment data (https://github.com/lightning/bolts/pull/1344).
* Refactor trampoline attribution data
We correctly extract shared secrets (including trampoline shared secrets) and detect when we're inside a blinded path to avoid including attribution data. Note that we don't use the trampoline shared secret yet, since full trampoline isn't implemented (see https://github.com/ACINQ/eclair/pull/2819 for the full changes).
We add tests for attribution data with blinded paths and trampoline payments.
88/100 · StrongMessage clarity
✓ Descriptive subject✓ 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 path
AI analysis · Low 34/100
This commit is a code refactor of how Eclair handles 'attribution data'—extra encrypted timing and accountability information attached to Lightning payment success and failure messages. It restructures the code to support future trampoline payments and blinded routes, and adds tests. The commit itself does not claim to fix a security bug; it is described as making later features easier to implement. However, the refactor changes how shared secrets are extracted and how attribution data is included or omitted for blinded and trampoline payments, which touches privacy-sensitive logic.
Lower-priorityRemove deprecated `bip125 replaceable` field in mempool transaction class (#3319)by Fabrice Drouin · cfe47a8c · Jun 17, 2026 · 2 filesMessage 81 · StrongInformational 20Details
Commit message · Fabrice Drouin
Remove deprecated `bip125 replaceable` field in mempool transaction class (#3319)
`bip125-replaceable` field in Bitcoin Core RPC had been deprecated since v29 and has now been removed. Full RBF has been the default policy since v28.
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 20/100
This commit removes support for a deprecated Bitcoin Core RPC field called `bip125-replaceable` from Eclair's internal mempool transaction model. Bitcoin Core stopped providing this field, so Eclair is updating its code to keep working with newer Bitcoin Core versions. It is a compatibility/maintenance change, not a fix for an active security vulnerability.
Lower-prioritySend `splice_locked` if necessary while reconnecting (#3318)by Bastien Teinturier · 7fb62fc5 · Jun 11, 2026 · 2 filesMessage 81 · StrongModerate 55Details
Commit message · Bastien Teinturier
Send `splice_locked` if necessary while reconnecting (#3318)
When we lock a commitment while reconnecting, we currently have a bug where if we've sent our `channel_reestablish` but we haven't received the remote `channel_reestablish`, we will not send `splice_locked` which results in a mismatch in the expected number of `commit_sig` messages for our peer, triggering a force-close.
We now send `splice_locked` when we are in the `SYNCING` state when that makes sense. The logic is very similar to the `NORMAL` state, but we don't emit events that are meant to be used when the channel is ready to handle payments.
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 · Moderate 55/100
This commit fixes a bug in Eclair, a Bitcoin Lightning Network node implementation. During reconnection after a splice (a way to resize a payment channel), if a funding transaction became confirmed at a specific moment, the node would fail to notify its peer. That missing notification caused the peer to expect a different number of signature messages, leading both sides to force-close the channel and settle on the blockchain. The fix makes the node send the required `splice_locked` message even while it is still synchronizing with the peer. It is a bug fix, not an exploit by an attacker, but it could be triggered by normal network timing.
AI review queuedBack to dev (#3313)by Bastien Teinturier · 2dda7946 · May 21, 2026 · 8 filesMessage 36 · OpaqueInformational 15Details
Commit message · Bastien Teinturier
Back to dev (#3313)
After the 0.14.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 software version from 0.14.0 to 0.15.0-SNAPSHOT across build files, creates a placeholder for future release notes, re-enables a Maven trusted-checksum feature used for build verification, and adds an explicit safety guard that refuses to start the node unless a special override flag is set. There is no vulnerability fix or security flaw introduced in the diff itself.
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Informational 15/100
This commit is a routine version-bump release tag for Eclair v0.14.0. It updates Maven project versions from 0.14.0-SNAPSHOT to 0.14.0, removes a temporary 'unsafe startup' guard that was only meant for pre-release builds, renames the release notes file, and disables Maven's trusted-checksum post-processor for the release build. There is no security patch or vulnerability fix in this commit itself.
When using blinded paths in our Bolt12 invoices, we may use a feature where instead of making the payer pay the fees for the blinded path, we deduce them from the amount we wish to receive (the recipient pays for the privacy it gains from using blinded paths, instead of making the payer pay for something that they didn't opt into). See #2993 for more details.
The constraint on path fees was wrong in some rounding cases, so we fix that, otherwise we would unnecessarily reject some payments. This was found by testing blinded trampoline payments.
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
AI analysis · Low 32/100
This commit fixes a rounding bug in Eclair's handling of Bolt12 (a newer Lightning Network invoice format) blinded-path fees. When a recipient hides their real node behind a private payment path, they can choose to pay those path fees themselves rather than charging the payer. The code that computed the maximum such fee used the wrong amount in some rounding cases, causing Eclair to reject valid incoming payments unnecessarily. The fix uses the larger of the invoice amount and the actual received amount when computing the fee limit, and adjusts default/test settings accordingly.
Security candidateAdd support for zero-fee commitment format (#3192)by Bastien Teinturier · 35403401 · May 20, 2026 · 42 filesMessage 100 · StrongLow 34Details
Commit message · Bastien Teinturier
Add support for zero-fee commitment format (#3192)
* Add support for zero-fee commitment format
We add support for the zero-fee commitment format specified in https://github.com/lightning/bolts/pull/1228.
Channels using this commitment format benefit from better protection against pinning attacks (thanks to TRUC/v3 transactions), don't need the `update_fee` mechanism, have less dust exposure risk, and use an overall simpler state machine.
In this commit, we simply introduce the commitment format and create the corresponding transactions.
* Rename `ClaimRemoteDelayedOutputTx`
It isn't delayed anymore for v3 transactions. We could use static wallet public key, but in most cases it wouldn't work and adds extra complexity so we don't do it. We add a comment in the documentation of this class to explain why we're always making a 2nd-stage transaction.
* Validate channel parameters
We apply slightly different validation for zero-fee commitments:
- the commit feerate must be `0 sat/byte` - the max number of accepted HTLCs must be at most 114 - `update_fee` cannot be used
We verify those requirements during channel creation and add tests for normal channel operation.
* Handle force-closing zero-fee channels
We add support for force-close zero-fee channels. When publishing the local commit, this works mostly the same way as other channel types. The only difference is that we don't even attempt to publish the commit tx individually: we always bundle it with the anchor transaction.
When we detect the remote commit though, we're able to introduce some new behavior:
- if we have a large enough main output, we use that to pay the fees of the remote commit tx (unless it is already confirmed), which avoids using a wallet input - otherwise, we spend the anchor output, which competes with the remote peer package
Since we're only using the anchor transaction or our main output to spend the ephemeral anchor, we cannot publish HTLC txs until the commit tx is confirmed. We will in the future make *all* transactions go through the `ReplaceableTxPublisher`, and at the point we'll be able to simplify this, but it's too early for this refactoring, so for now we simply wait for the commit tx to be confirmed before publishing HTLC txs.
* Don't force-close on remote `error`
When using zero-fee commitments, we don't force-close when receiving an `error` from our peer: if they want to force-close the channel, they can publish their commitment instead of forcing us to publish ours. It is especially true when the commit tx doesn't pay any fees, because the publisher will pay the entire fees for the force-close.
Note that for wallet peers, we could introduce a mechanism where they send us their signed commit tx in the error message if they don't have any wallet input to pay the fees, and we could be nice and publish it while paying the fees from our main output (which isn't delayed since it is the remote commit from our point of view).
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
explicit security languagedefensive validationsigning or wallet path
AI analysis · Low 34/100
This commit adds an experimental new Lightning channel type to Eclair called 'zero-fee commitments.' It is a large feature patch implementing a draft BOLT specification (PR 1228), not a fix for a known vulnerability. The change introduces new transaction formats, validation rules, and force-close behavior. Because it is experimental, disabled by default, and extensively tested, it is unlikely to be an immediate security issue, but any large change to consensus-sensitive transaction code carries risk of subtle bugs.
Lower-priorityChange RBF feerate bump rule to match BIP125 (#3298)by Bastien Teinturier · 06538ada · May 19, 2026 · 1 fileMessage 81 · StrongLow 37Details
Commit message · Bastien Teinturier
Change RBF feerate bump rule to match BIP125 (#3298)
The 25/24 multiplicative feerate bump for `tx_init_rbf` can produce increments too small for Bitcoin Core to relay the replacement transaction under BIP125's minimum relay fee policy (default `incrementalRelayFee` of 0.1 sat/vB since Bitcoin Core v30.0). Add a minimum additive increment of 25 sat/kw alongside the existing multiplicative rule, using whichever produces a higher feerate.
See https://github.com/lightning/bolts/pull/1327
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 fixes how Eclair increases transaction fees when replacing a funding transaction via RBF (Replace-By-Fee). Previously, Eclair only required the new fee rate to be 25/24 (about 4.17%) higher than the old one. Under recent Bitcoin Core defaults, that small bump can be too low for the network to accept the replacement. The fix adds a minimum flat bump of 25 sat/kw and uses whichever is larger. This is a protocol correctness / liveness fix rather than a theft-of-funds bug, but it can prevent channel funding from getting stuck.
Lower-priorityUpdate features early on reconnection (#3310)by pm47 · 8876ef18 · May 12, 2026 · 2 filesMessage 65 · AdequateLow 34Details
Commit message · pm47
Update features early on reconnection (#3310)
Otherwise some upgrade paths may fail.
65/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
AI analysis · Low 34/100
This patch fixes the order in which Eclair updates Lightning protocol feature flags when a channel reconnects. Previously, the code built the reconnection message using stale feature information and only updated features afterward. Now features are refreshed first, so the reconnection handshake uses the correct, current capabilities. The commit message says this prevents some upgrade paths from failing. There is no direct evidence this is exploitable for theft or denial of service, but using stale feature data during a protocol handshake can cause compatibility or state-mismatch problems.
Lower-priorityFix edge case in `availableBalanceForSend/Receive` (#3308)by Bastien Teinturier · befdcd54 · May 12, 2026 · 1 fileMessage 91 · StrongLow 36Details
Commit message · Bastien Teinturier
Fix edge case in `availableBalanceForSend/Receive` (#3308)
There was a small discrepancy between `availableBalanceForSend/Receive` and `canSendAdd/canReceiveAdd` when the sender is not paying the commit tx fees. In `canSendAdd/canReceiveAdd`, we verify that the receiver (who pays the commit fees) can still pay those fees after adding the new HTLC to the commit tx. In `availableBalanceForSend/Receive`, we did not verify that.
This only happens in very rare cases where the receiver is paying the commit fees and is very close this its channel reserve, so it should rarely happen in practice, but it sometimes makes our fuzz tests fail.
91/100 · StrongMessage clarity
✓ Specific, 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
fuzzing or regression evidence
AI analysis · Low 36/100
This patch fixes a mismatch in how Eclair calculates how much Bitcoin can be sent or received through a Lightning channel. Previously, the balance estimate could say a payment was possible, but the actual safety check would later reject it because the other party couldn't afford the on-chain transaction fees. This could cause payment attempts to fail unexpectedly, especially in edge cases where one side is nearly out of funds. It is a consistency bug rather than a direct theft-of-funds vulnerability.
Lower-priorityCompute channel keys once on on startup (#3306)by Bastien Teinturier · e1330154 · May 7, 2026 · 10 filesMessage 86 · StrongInformational 17Details
Commit message · Bastien Teinturier
Compute channel keys once on on startup (#3306)
We compute channel keys when we load and verify channels from our database, and pass them along instead of re-computing them later (which can be expensive when done at scale).
Implemented by @sstone, with small modifications by @t-bast.
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
AI analysis · Informational 17/100
This commit is a performance optimization, not a security fix. It changes Eclair so that cryptographic channel keys are computed once when channels are loaded from the database at startup, then passed around with the channel data, instead of being recomputed every time they are needed. This reduces CPU work when many channels are active. There is no indication in the commit that it fixes a vulnerability or changes security behavior.
Security candidateBump org.postgresql:postgresql version (#3305)by Bastien Teinturier · 76da19f1 · May 7, 2026 · 2 filesMessage 81 · StrongLow 36Details
Commit message · Bastien Teinturier
Bump org.postgresql:postgresql version (#3305)
This fixes a vulnerability, which doesn't apply to eclair in known deployements, but is worth fixing in case some nodes use untrusted database hosts which could lead to DoS attacks.
81/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
This commit updates the PostgreSQL database driver used by the Eclair Lightning node software from version 42.7.8 to 42.7.11. The commit message says this fixes a vulnerability that could allow denial-of-service (DoS) attacks if a node connects to an untrusted database host. The developers state it does not affect known Eclair deployments, but they are patching it as a precaution.
Otherwhile the build will wait for a user input and eventually fail.
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit fixes a Docker build problem by adding the '-y' flag to an apt-get install command. Without this flag, the build would pause waiting for a human to confirm installation, causing automated builds to time out and fail. It is a build reliability fix, not a security fix.
Add previous commitments to ChannelFundingConfirmed event (#3303)
Event stream subscribers could use this field to find extra information about previous states that could have been pruned from the current commitments.
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 an extra data field to an internal event notification so that subscribers can see information about older channel states that may have been removed from the current state. It is a small, informational change to an event object and does not appear to fix an active security bug.
We add metrics for liquidity ads (purchased amount and mining fee refund).
We refactor the interactive-tx metrics to record them *after* tx validation, instead of *before*. We also remove the input/output count for the "shared" case, since it's always 0 or 1.
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 and reorganizes internal metrics (statistics counters and histograms) for monitoring liquidity advertisements and interactive Bitcoin transactions. It does not change how funds are handled, validated, or secured. The code that records metrics was moved to run after transaction validation instead of before, which is a safer ordering, but no vulnerability is being fixed.
Lower-priorityAdd metrics on interactive-tx inputs and outputs (#3300)by pm47 · 113d8fba · May 6, 2026 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · pm47
Add metrics on interactive-tx inputs and outputs (#3300)
We track: - global input/output count by type and distribution of amounts - per-session input/output count by type
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100
This commit only adds new telemetry (metrics) to observe how many inputs and outputs are used in interactive Bitcoin transactions during Lightning channel funding or splicing. It records counts and amounts into monitoring histograms but does not change any transaction validation, cryptographic checks, or user-facing behavior. There is no security issue visible in the diff.
Security candidateFix flaky DER signature weight test (#3299)by Bastien Teinturier · 0f5d4b89 · May 5, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · Bastien Teinturier
Fix flaky DER signature weight test (#3299)
This test was flaky because for the funding output, we provide two signatures, which means that we need twice the slack for the variable DER encoding length.
100/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✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100
This commit only adjusts a flaky unit test that checks transaction weight estimates. It widens the allowed tolerance for variable-length ECDSA signatures when two signatures are involved instead of one. There is no change to production code, no security fix, and no vulnerability.
AI review queuedUse official feature bit for `option_simple_taproot` (#3144)by Bastien Teinturier · 872cb663 · May 5, 2026 · 14 filesMessage 81 · StrongLow 37Details
Commit message · Bastien Teinturier
Use official feature bit for `option_simple_taproot` (#3144)
Use the official feature bit and name for taproot channels and the corresponding channel types. Activate taproot channels support by default (without support for announcing such channels yet).
See https://github.com/lightning/bolts/pull/995
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 pathparser or protocol pathsecond-pass: security-sensitive path
AI analysis · Low 37/100
This commit updates the Eclair Lightning node software to use the official protocol feature bit and name for a new kind of Bitcoin payment channel called 'taproot channels.' It turns taproot channel support on by default, but only for private (unannounced) channels, because the public-announcement rules are not finalized. The change is mostly a rename and feature-bit swap from an earlier experimental/staging version, plus adding guards so users cannot accidentally open a public taproot channel. It is a protocol-alignment change, not a fix for an active security bug.
Security candidateAdd support for the official splicing protocol (#2887)by Bastien Teinturier · 68b0096a · Apr 30, 2026 · 24 filesMessage 93 · StrongLow 35Details
Commit message · Bastien Teinturier
Add support for the official splicing protocol (#2887)
We replace our experimental version of `splice_init`, `splice_ack` and `splice_locked` by their official version. If our peer is using the experimental feature bit, we convert our outgoing messages to use the experimental encoding and incoming messages to the official messages.
We also change the TLV fields added to `tx_add_input`, `tx_signatures` and `splice_locked` to match the spec version. We always write both the official and experimental TLV to updated nodes (because the experimental one is odd and will be ignored) but we drop the official TLV if our peer is using the experimental feature, because it won't understand the even TLV field.
We do the same thing for the `commit_sig` TLV. For peers who support the official splicing version, we insert the `start_batch` message before the batch of `commit_sig` messages.
This guarantees backwards-compatibility with peers who only support the experimental feature.
We introduce a `retransmit_flags` field to `my_current_funding_locked` and `next_funding` to ask our peer to retransmit `commitment_signed` or `announcement_signatures` if we're expecting them. With this change, we don't need to retransmit `splice_locked` on reconnection anymore to trigger the exchange of `announcement_signatures`. We don't need to retransmit it to let our peer know that we've seen enough confirmations for the splice either, since `my_current_funding_locked` implies that.
This allows us to completely remove retransmission of `splice_locked` on reconnection, and also get rid of the `your_last_funding_locked` TLV, which greatly simplifies the reconnection logic. We do keep them for backwards-compatibility with existing Phoenix users though, but we'll be able to clean it up once they have updated.
Note that this works with taproot channels since we will simply provide nonces in `channel_reestablish` when we need our peer to send announcement signatures (not supported yet since taproot channels are never announced).
We rollback using the `next_commitment_number` to let our peer know that we haven't received their `commit_sig` and instead use the retransmit flags added to the `next_funding` TLV, unless our peer is using the legacy splicing protocol.
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
signing boundarysigning or wallet pathauthentication pathparser or protocol path
AI analysis · Low 35/100
This commit adds official Lightning channel splicing support to Eclair and replaces an experimental protocol. It includes backwards-compatibility shims for older Phoenix wallets, changes how reconnection messages request retransmission of signatures, and renumbers some protocol feature bits. The changes are broad and touch consensus-critical wire protocol and channel state logic, so bugs could affect channel safety, but the commit itself is a feature implementation rather than a clear security fix.
More aggressive peer scorer idle channels management (#3295)
We previously lowered fees from idle channels only if our latest update was from more than 24 hours ago, and closed them if our latest update was more than 5 days ago and using our minimal fees.
The issue is that our channel update may have been refreshed without changing the relay fees, for example if our peer disconnected. We don't track when our relay fees reached the minimum amount, so we may have a recent channel update even though we reached our minimum relay fees weeks ago.
We use smaller durations for those thresholds to see if that helps reclaim liquidity more aggressively.
We also disable old peers revival by default. This feature is useful when feerates have been high for a while and funding was thus put on hold, but when feerates are frequently below our feerate threshold, this is wasting liquidity. It should be enabled after a high-fee period.
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 24/100
This commit tweaks Eclair's automated liquidity-management logic so the node becomes more aggressive about lowering fees and closing channels that sit idle. It also turns off a feature that automatically re-funds old peers by default. The changes are operational/economic policy adjustments, not a fix for a software vulnerability that an attacker can exploit. There is a small operational risk that a node could close channels or lower fees more eagerly than before, but that is a business-logic trade-off rather than a security flaw.
Security candidateStore our closing_complete in the simple close session (#3289)by Fabrice Drouin · da7cd962 · Apr 21, 2026 · 4 filesMessage 96 · StrongLow 32Details
Commit message · Fabrice Drouin
Store our closing_complete in the simple close session (#3289)
In the simple close session, which is never persisted, we just need to remember our closing_complete and the partial signatures it contains, instead of keeping our musig2 nonces and generating our partial signatures a second time to build the final closing tx when we receive our peer's partial signatures. We also check our peer's partial signature and fail early if they're not valid, instead of building a fully sign closing tx and then verify that it is correct.
96/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarynonce handlingsigning or wallet path
AI analysis · Low 32/100
This commit changes how Eclair (a Bitcoin Lightning node) remembers its own closing signatures during a mutual channel close. Previously, the code re-generated signing nonces and re-signed closing transactions when the peer's signature arrived. Now it stores the original closing message and reuses its signatures. It also adds an early check that the peer's partial signature is valid before trying to build a final signed transaction. The change is a defensive correctness improvement rather than a clear fix for an active exploit.
We connect to bitcoind over ZMQ right after spawning all actors in the system, which can consume a lot of our available sockets/bandwidth. We increase the default timeout from 5 seconds to 30 seconds.
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 19/100
This commit increases the startup timeout from 5 to 30 seconds for Eclair's connections to Bitcoin's ZMQ notification service and its own TCP server port. It is a reliability/configuration fix, not a security patch. There is no indication it fixes a vulnerability or was triggered by a security report.
Add threshold for disabling `from_future_htlc` (#3293)
When funding a transaction using `from_future_htlc`, we are taking the risk that the remote node doesn't fulfill the corresponding HTLCs. If we detect that too many peers fail such HTLCs, this may indicate a bug on the wallet side, so we automatically disable `from_future_htlc` to limit our exposure.
We also ensure that nodes that already had one suspicious payment are blacklisted for other payments. This issue can happen when wallet users use multiple devices in unsupported scenarios.
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 48/100
This commit adds a safety limit to a Lightning node feature called 'from_future_htlc,' which lets peers pay channel funding fees using HTLCs that haven't arrived yet. The change makes the node track how many distinct peers look suspicious (e.g., accept funding but then reject the future HTLCs), and once a threshold is reached, it stops allowing that funding method. It also lets operators keep specific nodes blacklisted when re-enabling the feature. This is a defensive hardening patch, not a fix for an active exploit in the code itself.
We add release notes about the peer scorer for node operators who like living on the bleeding edge. We also remove the workaround for the lack of DB data on restart.
We also add metrics to track rolling profit and payment volume.
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 user-facing documentation for a new experimental feature and adds metrics that report profit and payment volume. It also removes a temporary workaround that delayed automated actions until enough historical data was available. There is no security-relevant code change visible in the diff.