AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Moderate 52 Bitcoin

Reject incoming HTLCs with a high `cltv_expiry` (#3323)

Public commit record

What the developer wrote

Authored by Bastien Teinturier

93/100 · Strong
Reject incoming HTLCs with a high `cltv_expiry` (#3323)

We currently reject HTLCs with a `cltv_expiry` higher than 2 weeks in
the future when sending them (in the `sendAdd` method). That's because
they would lock up our funds for a long period of time if our peer
decided to force-close. Also, a large `cltv_expiry` makes slow jamming
easier.

We now apply the same limits to incoming HTLCs for consistency (since
they may differ by `cltv_expiry_delta`). Note that we don't do it in
the `receiveAdd` function, which would trigger a force-close. We just
accept those HTLCs and then fail them, since it is harmless to have
them only temporarily in our commitment as long as we don't relay.
✓ 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
The short version

What changed, and why it matters

This change tightens a safety limit on the Bitcoin Lightning Network node Eclair. Previously, Eclair already refused to send outgoing payments whose refund deadline (the 'cltv_expiry') was more than about two weeks in the future, because that would lock up funds for too long and make certain spam/jamming attacks easier. Now it also rejects incoming payments with similarly distant deadlines, but it does so gracefully by accepting the payment into the channel and then immediately failing it, rather than force-closing the channel. This is a defensive hardening patch, not a fix for an active exploit, and it reduces the risk of funds being locked up or the node being used for 'slow jamming' of the network.

Recommended action

Treat as a defensive hardening improvement. Review whether the chosen maxExpiryDelta (default 2 weeks) aligns with operational risk tolerance. Ensure downstream operators and integrators know that very long-expiry incoming payments will now be rejected. No emergency deployment is indicated by the commit alone.

Security signals we found

01

Adds upper-bound validation for cltv_expiry on incoming HTLCs

02

Prevents long fund lock-up in case of peer force-close

03

Mitigates slow jamming by capping maximum expiry delta

04

Avoids force-close by failing HTLC after acceptance instead of inside receiveAdd

05

Consistent with existing outgoing HTLC limit in sendAdd

Risk score

Why this scored 52/100

Our methodology →
Potential impact 12/30
Exploitability 10/25
Stealth signal 8/15
Affected reach 10/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.