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

Emit SpliceFailed for acceptor contributions

Public commit record

What the developer wrote

Authored by Jeffrey Czyz

68/100 · Adequate
Emit SpliceFailed for acceptor contributions

The maybe_create_splice_funding_failed! macro only emitted SpliceFailed
and DiscardFunding events for the splice initiator. When an acceptor
contributed inputs/outputs and the negotiation failed (e.g., disconnect),
their contributions were silently discarded with no event notification,
preventing the acceptor from reclaiming its UTXOs.

Replace the is_initiator() filter with a post-hoc check on whether there
are contributions to discard. The initiator always gets events, the
acceptor gets events when it has contributions, and acceptors without
contributions get no events (nothing to discard).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
✓ 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's splicing code. When two Lightning nodes tried to update ('splice') a channel together and the negotiation failed, only the node that started the splice got a notification to reclaim its locked-up bitcoins. The other node (the 'acceptor') was silently left without any event, so its wallet software wouldn't know it needed to reclaim its contributed coins. The patch now emits the proper failure event for the acceptor too, but only when the acceptor actually contributed something.

Recommended action

Treat as a bug-fix commit with moderate security relevance. Reviewers should confirm that the new empty-contribution guard prevents spurious events for passive acceptors, and that the regression test covers both splice-in and splice-out acceptor contribution paths. No immediate emergency response is indicated, but downstream wallets should ensure they handle SpliceFailed/DiscardFunding events for acceptor roles.

Security signals we found

01

Funds-availability bug: acceptor UTXOs could remain un-reclaimed after splice failure

02

Missing event emission for failure path

03

State/event asymmetry between initiator and acceptor

04

Regression test added for disconnect-during-splice scenario

Risk score

Why this scored 58/100

Our methodology →
Potential impact 18/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.