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

Block RAA `ChannelMonitorUpdate`s on `PaymentClaimed` events

Public commit record

What the developer wrote

Authored by Matt Corallo

90/100 · Strong
Block RAA `ChannelMonitorUpdate`s on `PaymentClaimed` events

We added the ability to block `ChannelMonitorUpdate`s on receipt of
an RAA in order to avoid dropping a payment preimage from a channel
that created a `PaymentSent` event in
9ede794e8e8559f1b2b386c1c57372094fc92fd4. We did not at the time
use the same infrastructure for `PaymentClaimed` events, but really
should have. While a `PaymentClaimed` event may seem a bit less
critical than a `PaymentSent` event (it doesn't contain a payment
preimage that the user needs to make sure they store for proof of
payment), its still important for users to ensure their payment
tracking logic is always correct.

Here we take the (relatively straightforward) action of setting a
`EventCompletionAction` to block RAA monitor updates on channels
which created a `PaymentClaimed` event. Note that we only block one
random channel from an MPP paymnet, not all of them, as any single
channel should provide enough information for us to recreate the
`PaymentClaimed` event on restart.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
The short version

What changed, and why it matters

This commit fixes a reliability issue in the Lightning Dev Kit where a 'payment received' event could be lost if the program restarted at the wrong moment. Previously, the code already protected the 'payment sent' event with a mechanism that blocks certain channel updates until the event is safely handled. This change extends the same protection to the 'payment claimed' (payment received) event, so users' payment records remain accurate even after crashes or restarts. It is a defensive correctness fix rather than a remote exploit.

Recommended action

Review and merge as a defensive reliability fix. Users running nodes should upgrade to ensure payment-received events are durable across restarts. No immediate emergency response is warranted because the issue requires local crash timing and does not enable remote theft of funds.

Security signals we found

01

Durability/crash-recovery fix for payment-received event

02

Prevents loss of payment preimage metadata before user acknowledgment

03

Extends existing RAA-blocking infrastructure to PaymentClaimed events

04

Adds regression test for event reconstruction after restart

Risk score

Why this scored 47/100

Our methodology →
Potential impact 12/30
Exploitability 5/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.