AQ
← All projectsACINQ

Eclair

Scala implementation of a Lightning Network node.

BitcoinLightning NetworkNormal
Repository coverage

167 commits in the local evidence base

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

33security candidates40second-pass queue26AI analyses
14commits · 30 days
16commits · 60 days
76commits · 180 days
167commits · 365 days
Backfill bands
Aug 5 → Feb 691 seen11 candidatesComplete
Feb 6 → Jun 660 seen5 candidatesComplete
Jun 6 → Jul 62 seen0 candidatesComplete
Jul 6 → Aug 514 seen0 candidatesComplete
Commit communication

Does the history explain itself?

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

78/100 average clarity
100Strong · 80–100
47Adequate · 60–79
14Thin · 40–59
6Opaque · 0–39
1security candidate with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Bastien Teinturier1132219081
Fabrice Drouin1465077
pm471831067
Thomas HUET1610075
Nishant Bansal211084
rorp200077
ekzyis100058
Rusty Russell100081
Analysis record

Published AI watches

Last scanned 0 minutes ago

Low 47 AI analysisMessage 88 · Strong
AQ ACINQEclair BitcoinLightning Network

Ignore repeated invalid `tx_signatures` (#3328)

This update changes how the Eclair Lightning node handles repeated bad 'tx_signatures' messages from a peer during dual-funded channel opens and splices. Previously, every bad signature was processed and logged, which could waste CPU and d…

Rate-limiting of invalid peer messages (tx_signatures) to prevent repeated CPU/disk consumptionRemoval of unnecessary DB writes on shutdown receipt, reducing disk-wear and potential DoS surfaceNo channel force-close on invalid signatures; node remains open and waits for on-chain confirmation
823341e6by Bastien Teinturier+74−402 files
Vendor flagged security relevance
Informational 22 AI analysisMessage 53 · Thin
AQ ACINQEclair BitcoinLightning Network

Use bitcoin-lib 0.48 (#3316)

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 d…

Dependency version bump of cryptographic Bitcoin libraryPrivate key derivation code modifiedTaproot/MuSig2 test vector code adjusted
743dcdd1by Fabrice Drouin+8−44 files
No security note in commit
Low 34 AI analysisMessage 88 · Strong
AQ ACINQEclair BitcoinLightning Network

Refactor attribution data (#3320)

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…

Refactor of cryptographic attribution-data creation/verificationNew shared-secret extraction path parses trampoline onion and path-key/blinded-path stateAttribution data now explicitly suppressed for blinded-route intermediate nodes
4b9ba010by Bastien Teinturier+228−1096 files
No security note in commit
Low 34 AI analysisMessage 100 · Strong
AQ ACINQEclair BitcoinLightning Network

Add support for zero-fee commitment format (#3192)

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 …

Large feature addition (+1618/-276 across 42 files) touching consensus-sensitive transaction construction and signingNew experimental channel type disabled by default; requires explicit opt-in via eclair.confImplements draft BOLT specification (lightning/bolts#1228), not a finalized standard
35403401by Bastien Teinturier+1618−27642 files
No security note in commit
Low 36 AI analysisMessage 81 · Strong
AQ ACINQEclair BitcoinLightning Network

Bump org.postgresql:postgresql version (#3305)

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 con…

Dependency version bump for security fixVendor-disclosed potential DoS vector via untrusted database hostChecksum file updated for reproducible builds
76da19f1by Bastien Teinturier+4−42 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 100 · Strong
AQ ACINQEclair BitcoinLightning Network

Fix flaky DER signature weight test (#3299)

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 cod…

0f5d4b89by Bastien Teinturier+4−51 file
No security note in commit
Low 35 AI analysisMessage 93 · Strong
AQ ACINQEclair BitcoinLightning Network

Add support for the official splicing protocol (#2887)

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 …

Protocol state machine changes for interactive transaction signing and reconnection retransmissionBackwards-compatibility shim that multiplexes two protocol versions based on peer feature bitsTLV type-number collision handling between official and experimental splicing protocols
68b0096aby Bastien Teinturier+867−30524 files
No security note in commit
Low 32 AI analysisMessage 96 · Strong
AQ ACINQEclair BitcoinLightning Network

Store our closing_complete in the simple close session (#3289)

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 arr…

MuSig2 nonce handling changed: local partial signatures are now stored and reused instead of regeneratedEarly signature validation added for peer's partial signature before final transaction aggregationRemoved CloserNonces helper that generated three random nonces per closing attempt
da7cd962by Fabrice Drouin+24−384 files
No security note in commit
Low 35 AI analysisMessage 86 · Strong
AQ ACINQEclair BitcoinLightning Network

Add backwards-compatible parts of the official splicing protocol (#3261)

This commit updates the Eclair Lightning node software to support a new, backwards-compatible draft of the official Bitcoin Lightning 'splicing' protocol. It adds a funding transaction identifier to commitment signatures and introduces a '…

Adds disambiguation of commitment signatures by funding transaction ID, reducing risk of applying a signature to the wrong commitment during multi-funding splicingIntroduces a new odd-length message (start_batch) and odd TLV (FundingTx), which unknown peers should ignore per Lightning spec conventionsMaintains legacy experimental batch TLV for backwards compatibility
129df369by Bastien Teinturier+309−5112 files
No security note in commit
Informational 15 AI analysisMessage 76 · Adequate
AQ ACINQEclair BitcoinLightning Network

Add fuzzing infrastructure (#3276)

This commit adds a new testing-only module that uses a fuzzing tool called Jazzer to automatically throw random data at Eclair's Lightning message parsers. It does not change any production code, network behavior, or security logic. It is …

New test-only fuzzing module addedNo production code changesNo network-facing or cryptographic logic modified
e6c3d6efby Nishant Bansal+363−08 files
No security note in commit
Informational 22 AI analysisMessage 76 · Adequate
AQ ACINQEclair BitcoinLightning Network

Use bitcoin-lib 0.47 (#3268)

This commit updates Eclair to use a newer version of its underlying Bitcoin library (bitcoin-lib 0.47). Most changes are mechanical: replacing local helper functions with new library-provided equivalents for encoding signatures and signing…

Dependency version bump for bitcoin-lib and secp256k1-kmpRefactor of ECDSA signature encoding/signing code pathsRemoval of local DER conversion helpers in favor of library-provided methods
5e741b1aby Fabrice Drouin+66−676 files
No security note in commit
Informational 19 AI analysisMessage 81 · Strong
AQ ACINQEclair BitcoinLightning Network

Add duration information to payment events (#3241)

This commit is a refactoring and observability improvement for the Eclair Lightning node. It adds start/end timestamps to payment events and failures, renames some timestamp fields for consistency, and updates how payment hashes are derive…

Refactoring of payment event data model with new timestamp fieldsPayment hash now derived from preimage instead of passed separatelyRemoval of WaitingToRelayPayment from JSON type hints
9856db85by Bastien Teinturier+407−35532 files
No security note in commit
Low 27 AI analysisMessage 81 · Strong
AQ ACINQEclair BitcoinLightning Network

Use bitcoin-lib 0.46 (taproot tweak refactor) (#3225)

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, caller…

Dependency version bump (bitcoin-lib 0.45.1 -> 0.46)Taproot script construction API refactorNo explicit security claim in commit message or diff
53747cc5by Fabrice Drouin+56−2912 files
No security note in commit
Informational 12 AI analysisMessage 43 · Thin
AQ ACINQEclair BitcoinLightning Network

Update `bitcoin-lib` (#3213)

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 th…

Dependency version bump onlyNo source code changes in commitNo security-related wording in commit message or diff
df75ed5aby Bastien Teinturier+5−52 files
No security note in commit
Low 35 AI analysisMessage 100 · Strong
AQ ACINQEclair BitcoinLightning Network

Use 73 bytes der-encoded signatures in weight estimation (#3210)

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, …

Fee-estimation mismatch between implementations could cause interactive-tx negotiation failuresUnder-estimated weight could lead to insufficient fees if a 73-byte high-S signature is accepted by minersChange aligns with BOLT 3 recommendation and LDK behavior
bfe34ab1by Bastien Teinturier+5−32 files
No security note in commit
Low 47 AI analysisMessage 81 · Strong
AQ ACINQEclair BitcoinLightning Network

Allow aborting liquidity purchases after signing (#3206)

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 ke…

Fixes a denial-of-service / availability issue where upstream HTLCs were held until near CLTV expiry after a peer-aborted liquidity purchaseAdds explicit handling for tx_abort after local signing in dual-funded opens and splicesIntroduces LiquidityPurchaseAborted event and matching cleanup in Peer
5e1a4882by Bastien Teinturier+137−76 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 26 · Opaque
AQ ACINQEclair BitcoinLightning Network

Nits (#3203)

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 loggin…

7ef3c4b2by pm47+7−85 files
No security note in commit
Low 34 AI analysisMessage 98 · Strong
AQ ACINQEclair BitcoinLightning Network

Remove support for non-anchor channels (#3173)

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 operatio…

Removal of legacy commitment format support reduces attack surface for fee-manipulation and transaction-malleability issues present in pre-anchor channels.Simplified fee tolerance removes the 'too low' feerate check, relying on anchor/taproot CPFP/RBF behavior.Explicit channel_type requirement prevents silent downgrade to weaker channel types.
9911cb73by Bastien Teinturier+1129−394286 files
No security note in commit
Low 34 AI analysisMessage 100 · Strong
AQ ACINQEclair BitcoinLightning Network

Configure bitcoind test instances to use bech32m addresses (#3195)

This commit updates Eclair's Bitcoin Core integration to use taproot (bech32m) addresses by default and fixes a fee-calculation bug where the anchor output amount was not being counted. The fee bug caused on-chain fees to be undercounted b…

Fee calculation bug fixed in ReplaceableTxFunder.scalaAnchor output amount (330 sats) now included in currentFee computationDefault bitcoind address type changed to bech32m/taproot
9771b2d8by Bastien Teinturier+25−247 files
No security note in commit
Low 29 AI analysisMessage 81 · Strong
AQ ACINQEclair BitcoinLightning Network

Add `DATA_CLOSED` class when active channel is closed (#3170)

This commit refactors how Eclair stores closed Lightning channels. Instead of keeping all closed channel data in the same table as active channels, it moves them to a dedicated table with only essential summary information. The main stated…

DoS mitigation: channels that never confirmed or had nothing at stake are no longer persisted in the databaseDatabase schema migration removes foreign key constraint on htlc_infosNew closed-channel data class stores only minimal, stringified fields to avoid future backwards-compatibility issues
16a309e4by Bastien Teinturier+762−20426 files
Vendor flagged security relevance
Repository ledger

Explore captured commits

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

Security candidateUpdate `bitcoin-lib` (#3213)by Bastien Teinturier · df75ed5a · Nov 12, 2025 · 2 filesMessage 43 · ThinInformational 12Details
Commit message · Bastien Teinturier

Update `bitcoin-lib` (#3213)

To add support for P2A PSBTs.

43/100 · ThinMessage clarity
✓ 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.

Security candidateUse 73 bytes der-encoded signatures in weight estimation (#3210)by Bastien Teinturier · bfe34ab1 · Nov 5, 2025 · 2 filesMessage 100 · StrongLow 35Details
Commit message · Bastien Teinturier

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.

Security candidateAllow aborting liquidity purchases after signing (#3206)by Bastien Teinturier · 5e1a4882 · Nov 5, 2025 · 6 filesMessage 81 · StrongLow 47Details
Commit message · Bastien Teinturier

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 · ThinTriage 0Details
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 review queuedAdd `CommitSigBatch` codec (#3205)by Bastien Teinturier · 235e95df · Nov 3, 2025 · 2 filesMessage 66 · AdequateTriage 7Details
Commit message · Bastien Teinturier

Add `CommitSigBatch` codec (#3205)

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
Lower-priorityEnable detailed monitoring for singleton actors (#3200)by pm47 · a014211b · Oct 31, 2025 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · pm47

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
Lower-priorityAdd more logs around `commit_sig` (#3202)by Bastien Teinturier · 767bae8b · Oct 31, 2025 · 3 filesMessage 76 · AdequateTriage 0Details
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
Security candidateNits (#3203)by pm47 · 7ef3c4b2 · Oct 31, 2025 · 5 filesMessage 26 · OpaqueInformational 15Details
Commit message · pm47

Nits (#3203)

26/100 · OpaqueMessage clarity
✓ 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 · AdequateTriage 12Details
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
Lower-priorityStop sending `update_fee` for mobile wallets (#3186)by Bastien Teinturier · 3b690131 · Oct 27, 2025 · 6 filesMessage 81 · StrongTriage 0Details
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
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.

Lower-priorityRequire closed channels migration before starting (#3198)by Bastien Teinturier · 26d03507 · Oct 27, 2025 · 5 filesMessage 81 · StrongTriage 0Details
Commit message · Bastien Teinturier

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 review queuedBack to dev (#3197)by Bastien Teinturier · ddf75bc6 · Oct 27, 2025 · 7 filesMessage 36 · OpaqueTriage 0Details
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
Lower-priorityEclair v0.13.1 release (#3196)by Bastien Teinturier · 9830aa60 · Oct 27, 2025 · 12 filesMessage 53 · ThinTriage 0Details
Commit message · Bastien Teinturier

Eclair v0.13.1 release (#3196)

53/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Lower-priorityMore flexible mixing of clearnet addresses and tor proxy (#3054)by rorp · 701f2297 · Oct 27, 2025 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · rorp

More flexible mixing of clearnet addresses and tor proxy (#3054)

We improve the connection logic when a proxy is configured, but Tor shouldn't
be used for IPv4 or IPv6 remote addresses.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Security candidateConfigure bitcoind test instances to use bech32m addresses (#3195)by Bastien Teinturier · 9771b2d8 · Oct 24, 2025 · 7 filesMessage 100 · StrongLow 34Details
Commit message · Bastien Teinturier

Configure bitcoind test instances to use bech32m addresses (#3195)

When addres type or change type is not specified, bitcoind will
now start with addresstype=bech32m and changetype=bech32m.

We take this opportunity to fix feerate tests that failed because
of the following reasons:

- first of all, we had a bug where we didn't take into account the
anchor amount in our fee calculation, so we ended up always adding
`330 sats` to the on-chain fees we paid, which was hidden by our
tolerance interval, but started appearing with smaller p2tr inputs
- then we fix the remaining tests that need manual tweaking of the
utxos available in the test wallet, because they end up creating
transactions where we don't have a change output (and overpay fees
slightly, but not enough to make it worth adding a change output),
these tests simply needed to be tweaked to accomodate p2tr weights

Co-authored by @sstone

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
signing boundary
AI analysis · Low 34/100

This commit updates Eclair's Bitcoin Core integration to use taproot (bech32m) addresses by default and fixes a fee-calculation bug where the anchor output amount was not being counted. The fee bug caused on-chain fees to be undercounted by 330 satoshis, which was previously hidden by test tolerances but surfaced when switching to smaller taproot inputs. The fix is in the ReplaceableTxFunder component, which funds transactions for force-closing Lightning channels. There is no evidence this was a remotely exploitable vulnerability; it is best characterized as a correctness/robustness fix that could lead to slightly overpaying on-chain fees.

Security candidateUpdate `bitcoin-lib` (#3193)by Bastien Teinturier · 7372a877 · Oct 24, 2025 · 2 filesMessage 58 · ThinTriage 15Details
Commit message · Bastien Teinturier

Update `bitcoin-lib` (#3193)

We update `bitcoin-lib` to v0.45, which changes our JNI bindings for
`secp256k1` and adds support for P2A outputs.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
Lower-priorityUpdate Bitcoin Core to v29.2 (#3190)by pm47 · 656a2fe6 · Oct 20, 2025 · 2 filesMessage 68 · AdequateTriage 0Details
Commit message · pm47

Update Bitcoin Core to v29.2 (#3190)

Release note: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-29.2.md

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Lower-priorityAvoid negative on-the-fly funding fee (#3189)by Bastien Teinturier · 711c52ab · Oct 15, 2025 · 2 filesMessage 88 · StrongTriage 0Details
Commit message · Bastien Teinturier

Avoid negative on-the-fly funding fee (#3189)

Since we don't have access to channel params in the `Peer` actor, we
don't know the remote `htlc_minimum` when receiving a splice. This may
lead to cases where we later fail because we end up with a negative
funding fee, which doesn't make any sense.

To avoid those failures, we hard-code the `htlc_minimum` value used by
Phoenix (which is the only consumer of this protocol so far) and use
the max with our local `htlc_minimum`.

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
Lower-priorityOnly store txs spending our commit outputs (#3188)by Bastien Teinturier · 0baddd91 · Oct 15, 2025 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · Bastien Teinturier

Only store txs spending our commit outputs (#3188)

Instead of storing every transaction spending the commit tx (which
potentially included remote anchor transactions, which we aren't
interested in), we explicitly store only the transactions that spend
outputs of the commit tx we're interested in. This is more verbose
than the previous code, but avoids unintended side-effects such as
storing remote transactions.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Lower-priorityDon't store anchor transaction in channel data (#3187)by Bastien Teinturier · 409c7c17 · Oct 15, 2025 · 3 filesMessage 81 · StrongTriage 0Details
Commit message · Bastien Teinturier

Don't store anchor transaction in channel data (#3187)

We don't need to store the anchor transaction in our channel data when
closing a channel: this isn't used anywhere and unnecessarily uses
space in our DB.

Also, once the commit tx is confirmed, we don't need to watch the
anchor output again on restarts.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Lower-prioritySplit MPP by maximizing expected delivered amount (#2792)by Thomas HUET · 51a144c8 · Oct 14, 2025 · 16 filesMessage 73 · AdequateTriage 0Details
Commit message · Thomas HUET

Split MPP by maximizing expected delivered amount (#2792)

As suggested by @renepickhardt in https://github.com/ACINQ/eclair/pull/2785

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
Security candidateUse bitcoin-lib 0.44 (#3185)by Fabrice Drouin · 32082666 · Oct 13, 2025 · 2 filesMessage 53 · ThinTriage 15Details
Commit message · Fabrice Drouin

Use bitcoin-lib 0.44 (#3185)

53/100 · ThinMessage clarity
✓ 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 path
AI review queuedCreate fresh shutdown nonce on reconnection (#3184)by Bastien Teinturier · d1863f94 · Oct 8, 2025 · 2 filesMessage 93 · StrongTriage 0Details
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 review queuedNits (#3183)by pm47 · cc75b135 · Sep 30, 2025 · 2 filesMessage 26 · OpaqueTriage 7Details
Commit message · pm47

Nits (#3183)

26/100 · OpaqueMessage clarity
✓ 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