-
Notifications
You must be signed in to change notification settings - Fork 366
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Include invoice requests in async payment onions #3207
Include invoice requests in async payment onions #3207
Commits on Oct 24, 2024
-
Configuration menu - View commit details
-
Copy full SHA for cdc0c3b - Browse repository at this point
Copy the full SHA cdc0c3bView commit details
Commits on Oct 30, 2024
-
Add new PaymentFailureReason::BlindedPathCreationFailed
RouteNotFound did not fit here because that error is reserved for failing to find a route for a payment, whereas here we are failing to create a blinded path back to ourselves..
Configuration menu - View commit details
-
Copy full SHA for 3945bf8 - Browse repository at this point
Copy the full SHA 3945bf8View commit details -
Update docs for PaymentFailureReason::RouteNotFound
Since we started using this error in send_payment_for_bolt12_invoice, this error type is no longer only used on retry but also on initial send.
Configuration menu - View commit details
-
Copy full SHA for 88d689a - Browse repository at this point
Copy the full SHA 88d689aView commit details -
Prefix AsyncPaymentsMessageHandler methods with handle_*
"Release" is overloaded in the trait's release_pending_messages method, since the latter releases pending async payments onion messages to the peer manager, vs the release_held_htlc method handles the release_held_htlc onion message by attempting to send an HTLC to the recipient.
Configuration menu - View commit details
-
Copy full SHA for 2ff6524 - Browse repository at this point
Copy the full SHA 2ff6524View commit details -
Stop taking &self in outbound_payments' create_inbound_payment
The method doesn't actually use its &self parameter, and this makes it more obvious that we aren't going to deadlock by calling the method if the outbound_payments lock is already acquired.
Configuration menu - View commit details
-
Copy full SHA for 639446a - Browse repository at this point
Copy the full SHA 639446aView commit details -
Support encoding invreqs in outbound onion payloads
Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously. We use an experimental TLV type for this new onion payload field, since the spec is still not merged in the BOLTs.
Configuration menu - View commit details
-
Copy full SHA for a80af56 - Browse repository at this point
Copy the full SHA a80af56View commit details -
Support including invreqs when building onion payloads
Add a new invoice request parameter to onion_utils::build_onion_payloads. As of this commit it will always be passed in as None, to be updated in future commits. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for 9b3e307 - Browse repository at this point
Copy the full SHA 9b3e307View commit details -
Support including invreqs when building payment onions
Add a new invoice request parameter to onion_utils::create_payment_onion. As of this commit it will always be passed in as None, to be updated in future commits. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for 6a42453 - Browse repository at this point
Copy the full SHA 6a42453View commit details -
Support including invreqs when paying to a route
Add a new invoice request parameter to outbound_payments and channelmanager send-to-route internal utils. As of this commit the invreq will always be passed in as None, to be updated in future commits. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for fead88f - Browse repository at this point
Copy the full SHA fead88fView commit details -
Store invreqs in StaticInvoiceReceived outbound payments
When transitioning outbound payments from AwaitingInvoice to StaticInvoiceReceived, include the invreq in the new state's outbound payment storage for future inclusion in an async payment onion. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for 520ae0b - Browse repository at this point
Copy the full SHA 520ae0bView commit details -
Include invreq in payment onion when sending async payments
Past commits have set us up to include invoice requests in outbound async payment onions. Here we actually pull the invoice request from where it's stored in outbound_payments and pass it into the correct utility for inclusion in the onion on initial send. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for 925a0cb - Browse repository at this point
Copy the full SHA 925a0cbView commit details -
Include invreq in payment onion when retrying async payments
While in the last commit we began including invoice requests in async payment onions on initial send, further work is needed to include them on retry. Here we begin storing invreqs in our retry data, and pass them along for inclusion in the onion on payment retry. Per BOLTs PR 1149, when paying a static invoice we need to include our original invoice request in the HTLC onion since the recipient wouldn't have received it previously.
Configuration menu - View commit details
-
Copy full SHA for d574de9 - Browse repository at this point
Copy the full SHA d574de9View commit details -
Factor invoice requests into payment path length limiting
Async payments include the original invoice request in the payment onion. Since invreqs may include blinded paths, it's important to factor them into our max path length calculations since they may take up a significant portion of the 1300-byte onion.
Configuration menu - View commit details
-
Copy full SHA for 34e710e - Browse repository at this point
Copy the full SHA 34e710eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 240dd0a - Browse repository at this point
Copy the full SHA 240dd0aView commit details