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

Don't validate a splice if updates are pending

Public commit record

What the developer wrote

Authored by Leo Nash

68/100 · Adequate
Don't validate a splice if updates are pending

`FundedChannel::get_next_splice_out_maximum` is called in
`FundedChannel::splice_channel`, which can be called when updates are
pending in the channel.

If this is the case, `FundedChannel::get_next_splice_out_maximum` may
report a value that is not yet valid on both commitments, and thus fails
`FundedChannel::validate_splice_contributions`. That value will
nonetheless be valid on both commitments once the updates are cleared
from the channel, and splice negotiation actually begins.

So, we now validate `FundedChannel::get_next_splice_out_maximum` with
`FundedChannel::validate_splice_contributions` only if there are no
pending updates in the channel.

Joost and Wilmer's fuzzing runs caught this discrepancy.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
The short version

What changed, and why it matters

This commit fixes a bug in the Lightning Dev Kit where a proposed channel splice could be incorrectly rejected when there were still unconfirmed updates (like HTLC fulfillments) pending in the channel. The fix skips an internal consistency check in that specific situation, because the check would compare numbers that are temporarily out of sync but will match once the pending updates clear. The bug was found by the developers' own fuzzing, not by an external security researcher.

Recommended action

Treat as a normal correctness/robustness fix. Reviewers should confirm that skipping validate_splice_contributions while updates are pending does not mask real underflow or reserve violations, and that the validation is re-evaluated after updates clear. No immediate security response is indicated.

Security signals we found

01

Logic bug in channel-state validation during splice negotiation

02

Debug-only assertion could trigger on legitimate protocol state

03

State inconsistency between advertised splice maximum and current commitment views

04

Fix gated on pending-update flags rather than changing balance arithmetic

Risk score

Why this scored 43/100

Our methodology →
Potential impact 12/30
Exploitability 5/25
Stealth signal 8/15
Affected reach 6/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.