Skip to content

Add support for fulfillment payload #3321

Draft
t-bast wants to merge 1 commit into
masterfrom
fulfillment-payload-support
Draft

Add support for fulfillment payload #3321
t-bast wants to merge 1 commit into
masterfrom
fulfillment-payload-support

Conversation

@t-bast

@t-bast t-bast commented Jun 19, 2026

Copy link
Copy Markdown
Member

This adds support for including a payload in update_fulfill_htlc that the recipient encrypts for the payer. This can be useful to transmit data atomically with the fulfillment of a payment. The main challenge is that intermediate nodes may drop or tamper with this fulfillment payload, which is why we include it in the HMACs of the attribution data, which lets senders detect which pair of nodes may be malicious.

See lightning/bolts#1344 for the detailed specification.

We don't currently include any fulfillment payload when we're the final node, but we correctly relay fulfillment payloads from downstream and correctly decrypt them when we're the sender. When we start including a fulfillment payload as the final node, we should also:

  • store the fulfillment payload inside the payment DB (on the sender side)
  • make sure that fulfillment payloads are correctly wrapped when using on-the-fly funding
  • make sure we correctly wrap fulfillment payloads in blinded routes where we added dummy hops

This adds support for including a payload in `update_fulfill_htlc` that
the recipient encrypts for the payer. This can be useful to transmit
data atomically with the fulfillment of a payment. The main challenge
is that intermediate nodes may drop or tamper with this fulfillment
payload, which is why we include it in the HMACs of the attribution
data, which lets senders detect which pair of nodes may be malicious.

See lightning/bolts#1344
@t-bast t-bast force-pushed the fulfillment-payload-support branch from 16130a1 to 66c9499 Compare July 7, 2026 09:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant