Skip to content

Conversation

@21M4TW
Copy link
Contributor

@21M4TW 21M4TW commented Nov 12, 2025

In add_blindedpaths from plugins/offers_invreq_hook.c, find_best_peer should be called with OPT_ONION_MESSAGES so the invoice's first_node_id supports onion messages, similarly to what is done with offers. Otherwise CLN is unable to receive payments when attempted by the payer through blinded paths and the first_node_id does not support option_onion_messages...

Important

25.12 FREEZE October 27th: Non-bugfix PRs not ready by this date will wait for 26.03.

RC1 is scheduled on November 10th

The final release is scheduled for December 1st.

Checklist

Before submitting the PR, ensure the following tasks are completed. If an item is not applicable to your PR, please mark it as checked:

  • The changelog has been updated in the relevant commit(s) according to the guidelines.
  • Tests have been added or modified to reflect the changes.
  • Documentation has been reviewed and updated as needed.
  • Related issues have been listed and linked, including any that this PR closes.

In add_blindedpaths from plugins/offers_invreq_hook.c, find_best_peer
should be called with OPT_ONION_MESSAGES so the invoice's first_node_id
supports onion messages, similarly to what is done with offers.
@rustyrussell
Copy link
Contributor

This patch seems wrong. We are about to issue an invoice, and provide a blinded path. We have already received the invoice request. The peer we use needs to support blinded paths, not onion messages.

@21M4TW
Copy link
Contributor Author

21M4TW commented Nov 13, 2025

This patch seems wrong. We are about to issue an invoice, and provide a blinded path. We have already received the invoice request. The peer we use needs to support blinded paths, not onion messages.

Thanks. Here are the tests I did. I generated an offer with blinded paths (no offer issuer id). I tried fetching an invoice for it, from Phoenix, Misty Breez and from the node that created the offer. This works just fine, I receive an invoice in the three cases. The invoice_node_id and signature are for the last blinded node id within the offer's blinded paths (through which the invoice request was received), as expected from the specs as far as I understand.

However, the invoice had an invoice's first_node_id that points to an LND node (another one of my peers) that does not have onion message support. When I try paying this invoice with either Phoenix, Misty Breez or the node that created the offer, it always fail. In the case of CLN, I get an

plugin-cln-renepay: sendpay_failure notification: {"sendpay_failure":{"code":202,"message":"Malformed error reply"

error (with the apps the failure message is encoded). I assumed this was because the LND node did not support onion messages. So I changed the code as shown in this PR. I fetched new invoices, which this time had an invoice's first_node_id that pointed to a node that supports onion messages (that turned out to be the same node as the first_node_id of the offer). Then when I try paying these invoices the payment goes straight through in all cases (Phoenix, Misty Breez and CLN. Also tried with an independent CLN node).

Maybe there is something else about LND nodes that make these payment through blinded paths (as opposed to a non-blinded invoice_node_id) fail?

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.

2 participants