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

Disable Bolt12 recipient path fee discount (#3332)

Public commit record

What the developer wrote

Authored by Bastien Teinturier

81/100 · Strong
Disable Bolt12 recipient path fee discount (#3332)

In https://github.com/ACINQ/eclair/pull/2993, we introduced a mechanism
in the default Bolt12 offer handler to let the recipient pay the fees of
the blinded paths they include in their Bolt12 invoices, instead of the
payer having to pay fees for privacy chosen by the recipient (when the
recipient decides to use a "real" blinded path with external nodes they
don't control).

This wasn't correctly taking MPP into account: payers could split the
payment in many tiny parts such that each part used the whole path fee
discount. As a result, the payer would have still paid the whole amount
but most of it would be collected by intermediate nodes inside the path
instead of the recipient, which isn't the goal.

We're thus disabling this feature: we'll need a cleaner protocol to
correctly account for MPP with base fees. Bolt12 isn't used yet by
merchants so it's fine: we'll wait for recipients to adopt it before
deciding how we introduce a blinded path fee discount feature (if this
is something that users request). Note that we also recommend users
to implement their own offer handler to customize their blinded paths,
if they care about privacy, instead of using the default handler which
is mostly there as a reference.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit removes a fee-discount feature for a new kind of Lightning payment (Bolt12 offers). The old feature let the seller pay routing fees for the hidden 'blinded' path they chose for privacy. But when a payer split a payment into many tiny pieces, each piece could claim the full discount, so most of the money would go to routing fees instead of the seller. The patch disables the discount to stop that abuse. It is a defensive fix, not an active exploit being patched in deployed code, because Bolt12 merchant use is still rare.

Recommended action

Upgrade to the release containing this commit. If running a custom offer-handler plugin, ensure it does not set feeOverride_opt in InvoiceRequestActor.Route. Merchants relying on Bolt12 privacy paths should implement their own offer handler rather than use the default reference handler.

Security signals we found

01

Economic/fee griefing via MPP splitting against Bolt12 blinded-path fee discount

02

Recipient-chosen privacy path fees incorrectly applied per payment part instead of per payment

03

Feature disablement pending protocol redesign

04

Release notes explicitly warn custom offer-handler plugins not to set feeOverride_opt

Risk score

Why this scored 60/100

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