-
Notifications
You must be signed in to change notification settings - Fork 365
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
Add static invoice creation utils to ChannelManager
#3408
base: main
Are you sure you want to change the base?
Add static invoice creation utils to ChannelManager
#3408
Commits on Nov 14, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 847b43b - Browse repository at this point
Copy the full SHA 847b43bView commit details -
Don't take() outbound invoice requests on retry
Prior to this patch, we would take() the invoice request stored for AwaitingInvoice outbound payments when retrying sending the invoice request onion message. This doesn't work for async payments because we need to keep the invoice request stored for inclusion in the payment onion. Therefore, clone it instead of take()ing it.
Configuration menu - View commit details
-
Copy full SHA for 5c0b804 - Browse repository at this point
Copy the full SHA 5c0b804View commit details -
Fix failure to abandon async payments on invalid static invoice
Prior to this fix, we would attempt to mark outbound async payments as abandoned but silently fail because they were in state AwaitingInvoice, which the mark_abandoned utility doesn't currently work for. These payments would eventually be removed by the remove_stale_payments method, but there would be a delay in generating the PaymentFailed event. Move to manually removing the outbound payment entry.
Configuration menu - View commit details
-
Copy full SHA for 95c3fdd - Browse repository at this point
Copy the full SHA 95c3fddView commit details -
Make create_blinded_payment_paths methods amount optional.
Useful for creating payment paths for static invoices which are typically amount-less.
Configuration menu - View commit details
-
Copy full SHA for 4fc32f9 - Browse repository at this point
Copy the full SHA 4fc32f9View commit details -
Factor invoice expiry into blinded path max_cltv_expiry
Will be useful for static invoices' blinded paths, which may have long expiries. Rather than having a default max_cltv_expiry, we now base it on the invoice expiry.
Configuration menu - View commit details
-
Copy full SHA for 22398b1 - Browse repository at this point
Copy the full SHA 22398b1View commit details -
Add PaymentContext for async payments
This context is stored in the blinded payment paths we put in static invoices and is useful to authenticate payments over these paths to the recipient. We can't reuse Bolt12OfferContext for this because we don't have access to the invoice request fields at static invoice creation time.
Configuration menu - View commit details
-
Copy full SHA for 55b7d65 - Browse repository at this point
Copy the full SHA 55b7d65View commit details -
Add onion message AsyncPaymentsContext for inbound payments
This context is included in static invoice's blinded message paths, provided back to us in HeldHtlcAvailable onion messages for blinded path authentication. In future work, we will check if this context is valid and respond with a ReleaseHeldHtlc message to release the upstream payment if so. We also add creation methods for the hmac used for authenticating the blinded path using the static invoice's corresponding offer id.
Configuration menu - View commit details
-
Copy full SHA for 1e1250f - Browse repository at this point
Copy the full SHA 1e1250fView commit details -
Add utils to create static invoices and their corresponding offers
We can't use our regular offer creation util for receiving async payments because the recipient can't be relied on to be online to service invoice_requests. Therefore, add a new offer creation util that is parameterized by blinded message paths to another node on the network that *is* always-online and can serve static invoices on behalf of the often-offline recipient. Also add a utility for creating static invoices corresponding to these offers. See new utils' docs and BOLTs PR 1149 for more info.
Configuration menu - View commit details
-
Copy full SHA for 51d3a12 - Browse repository at this point
Copy the full SHA 51d3a12View commit details -
Test failures on paying static invoices
Since adding support for creating static invoices from ChannelManager, it's easier to test these failure cases that went untested when we added support for paying static invoices.
Configuration menu - View commit details
-
Copy full SHA for 8feb3cb - Browse repository at this point
Copy the full SHA 8feb3cbView commit details