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

offers: when creating an invoice for an offer, only reuse fronting paths.

Public commit record

What the developer wrote

Authored by Rusty Russell

85/100 · Strong
offers: when creating an invoice for an offer, only reuse fronting paths.

Now we know whether blinded paths in the offer were added explicitly
(by the fronting_nodes option to the `offer command, or via the
`payment-fronting-node` config option) we know whether we need to use
them when minting an invoice.

Previously when I introduced fronting nodes in this release, we
*always* reused them. But that's not quite right: the blinded path
for the offer can use any peer, but for the invoice we need to use
a peer with sufficient capacity to pay us. For some offers we won't
even know the amount at the time the offer is made.

So now we only force reuse of the offer's paths when they were set by
the user in the first place: otherwise, we can be more flexible in
path selection when minting the invoice. This is consistent with what
we did before introducing fronting.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
The short version

What changed, and why it matters

This change fixes a bug in how Core Lightning creates invoices from offers. Previously, the software always reused the hidden routing paths (blinded paths) from the original offer when making the invoice. That could force payments through nodes that lacked enough capacity, or through paths chosen before the final amount was known. Now it only forces reuse of those paths when the user explicitly configured them as 'fronting nodes.' Otherwise it picks a better path when the invoice is created. Two previously failing tests are re-enabled, suggesting the bug caused real payment failures.

Recommended action

Treat as a reliability and minor security fix worth including in the next release. Review related BOLT 12 invoice path-selection code to ensure no other unconditional reuse of offer paths remains. Run the re-enabled tests (test_blinded_path_max, test_xpay_simple) to confirm stability.

Security signals we found

01

Fixes a functional bug that could cause invoice creation to select blinded paths with insufficient HTLC capacity

02

Removes two xfail markers from payment tests, showing the change resolves previously known failures

03

Changes path-selection logic for BOLT 12 offers/invoices, which affects payment privacy and reliability

04

No explicit security framing by the author; described as a correctness/consistency fix

Risk score

Why this scored 35/100

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