Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Add `SendingParameters` struct for customizable payments by slanesuke · Pull Request #336 · lightningdevkit/ldk-node · GitHub
Skip to content

Add SendingParameters struct for customizable payments - #336

Merged
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters
Aug 27, 2024
Merged

Add SendingParameters struct for customizable payments #336
tnull merged 5 commits into
lightningdevkit:mainfrom
slanesuke:2024-07-introduce-PaymentParameters

Conversation

@slanesuke

@slanesukeslanesuke commented Aug 2, 2024

Copy link
Copy Markdown
Contributor

Based on #166 and #328

This PR introduces a PaymentParameters struct to allow users to override fields like max_total_cltv_expiry_delta, max_total_routing_fee_msat, and expiry_time. I'd appreciate suggestions on other useful fields to include as well.

I've added the optional PaymentParameters param to the send methods for both BOLT11 and Spontaneous payments. But, I need advice on whether we should be including it in the send methods for BOLT12 payments when paying for an offer. Specifically, I'm uncertain if values like max_total_cltv_expiry_delta or expiry_time can be overridden in this context.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 2729da1 to 63fc07dCompareAugust 5, 2024 16:21

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for looking into this!

Comment threadbindings/ldk_node.udl Outdated
Comment threadbindings/ldk_node.udl Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated
Comment threadsrc/payment/store.rs Outdated

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we could also expose max_path_count and max_channel_saturation_power_of_half fields? Although, for the latter I wonder if we could come up with a bit more user-friendly format.

FWIW, I wonder the same for the max_total_routing_fee_msat (e.g., could allow to set it in percent)?

Moreover, should we allow to set a default/node-wide PaymentParameters (or whatever we want to call it) as part of Config?

@joschisan

Copy link
Copy Markdown

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

@tnull

Copy link
Copy Markdown
Collaborator

For fedimint just having max_total_routing_fee_msat as an absolute value would be the most user friendly.

Thanks, good to know!

@slanesukeslanesuke changed the title Add PaymentParameters struct for customizable payments Add SendingParameters struct for customizable payments Aug 12, 2024
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 0179893 to 9242342CompareAugust 12, 2024 20:13
@tnull

Copy link
Copy Markdown
Collaborator

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 9242342 to 7bfed68CompareAugust 13, 2024 12:40
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

Ah, seems this needs a rebase to make CI pass (which we just fixed, excuse the inconvenience!)

done!

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased!

@slanesukeslanesuke reopened this Aug 13, 2024
@tnull

Copy link
Copy Markdown
Collaborator

You'll also need to account for the new send argument in all the test cases (CLN, bindings tests, etc)l

Comment threadtests/integration_tests_cln.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 86a07a4 to 7a0d5a1CompareAugust 13, 2024 13:16
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 7a0d5a1 to 75cf55cCompareAugust 19, 2024 18:32
@slanesuke

Copy link
Copy Markdown
ContributorAuthor

rebased

@tnull

Copy link
Copy Markdown
Collaborator

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

@tnull

tnull commented Aug 21, 2024

Copy link
Copy Markdown
Collaborator

I think CI fails as you haven't updated the Kotlin tests in bindings/kotlin/ldk-node-jvm/lib/src/test/kotlin/org/lightningdevkit/ldknode/LibraryTest.kt yet.

Could you also try to clean up the commit history a bit? Seems there are a few overlapping / back-and-forth commits going on.

@slanesuke

Copy link
Copy Markdown
ContributorAuthor

@tnull I could use some advice on how to go about overriding routing params in the bolt12 methods. In bolt11/spontaneous send methods I could access the route parameters so it was a bit easier. But when paying offers I can't find where/how to override the existing routing params. Any thoughts?

I think unfortunately LDK currently doesn't provide a way to override all of the fields, now opened the issue here: lightningdevkit/rust-lightning#3262

Let's keep this PR BOLT11/Spontaneous only and I'll open a tracking issue to make sure we won't forget to add SendingParameters to Bolt12Payment::send once the API becomes available.

Okay, sounds good.

@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 2 times, most recently from 72775c3 to 850b9d3CompareAugust 21, 2024 19:32
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadsrc/payment/spontaneous.rs Outdated
Comment threadbindings/ldk_node.udl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, could we either split this in one commit per field, or add all fields at once? In any case this split of "initial" and "new" fields doesn't make too much sense, given that they are not new. :)

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that during the commit history cleanup yesterday, I accidentally included some code in the wrong commits. I’m still working on my skills with interactive rebasing 😅. But, I’ve restructured the commits so that they should make more sense now. I squashed all the fields into one commit and then implemented SendingParameters in each method in the following commits.

Comment threadsrc/payment/mod.rs Outdated
Comment threadsrc/config.rs Outdated
Comment threadsrc/config.rs Outdated
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch 3 times, most recently from 1fac6dd to 0b9f3cdCompareAugust 22, 2024 18:54
`SendingParameters` allows users to override opinionated values while
routing a payment such as `max_total_routing_fees`, `max_path_count`
`max_total_cltv_delta`, and `max_channel_saturation_power_of_half`
Updated docs for `max_channel_saturation_power_of_half` for
clarity.
Introduced `sending_parameters_config` to `Config` for node-wide
routing and pathfinding configuration. Also, added default values
for `SendingParameters` to ensure reasonable defaults when no
custom settings are provided by the user.
Updated `Bolt11Payment` `send` method to accept `SendingParameters`,
as a parameter. If the user provided sending params the default
values are overridden.
Added the optional `SendingParameters` to `send_using_amount` in
`Bolt11Payment`. If the user provides sending params the values
will be overridden otherwise they'll use the default values.
Added optional SendingParameters to the send method in
SpontaneousPayment. If the user provides sending params
the values will be overridden otherwise they remain the
same.
@slanesuke
slanesukeforce-pushed the 2024-07-introduce-PaymentParameters branch from 0b9f3cd to 4822336CompareAugust 27, 2024 00:59

@tnulltnull left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool, LGTM.

As I only have a few minor nits/comments I'm going to land this and solve them in a brief follow-up.

Comment threadsrc/config.rs
Comment threadsrc/config.rs
Comment threadsrc/payment/bolt11.rs
Comment threadsrc/payment/spontaneous.rs
@tnull
tnull merged commit 398ece5 into lightningdevkit:mainAug 27, 2024
@tnulltnull mentioned this pull request Aug 27, 2024
tnull added a commit that referenced this pull request Aug 28, 2024
Sign up for freeto 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.

3 participants

@slanesuke@joschisan@tnull