offers: loosen payment_constraints on invoices' blinded paths.#8500
Merged
rustyrussell merged 1 commit intoElementsProject:masterfrom Aug 27, 2025
Merged
Conversation
cb6a11a to
3fcdf35
Compare
In practice, we were too strict. Here's Phoenix paying my node via another node:
```
2025-08-25T13:57:53.311Z DEBUG 02...-chan#216: Failing HTLC because of an invalid payload (TLV 10 pos 103): cltv_expiry 911816 > payment_constraint 911721
```
We add 6 blocks, but this is supposed to be the *max* allowed. Increase it to 1008, to allow shadow padding. Here are the CLTV delays across advertized channels in the network: most are far less than this:
Count Delay
1 0
1 4
3 12
899 18
602 20
1 22
3 24
1 25
9 26
5 29
72 30
54 32
4352 34
2 35
6 36
10 37
27 38
8 39
15256 40
94 42
102 44
13 45
20 46
87 48
230 50
100 51
14 55
316 60
29 64
30 65
24 68
82 69
9 70
779 72
13 77
243 78
1 79
26793 80
1 82
6 83
1 84
18 85
1 86
9 87
16 88
101 89
2 90
11 96
113 99
9527 100
41 112
34 118
132 119
403 120
24 128
232 140
138 142
14303 144
2 145
41 150
6 160
3 172
8 174
27 180
4 190
297 200
99 210
34 216
219 222
15 240
105 288
17 300
7 336
1 360
19 400
24 420
26 432
20 450
1 480
12 500
1 720
1 850
1 1000
1 1002
1 1144
1 1192
5 1201
1 1444
1 1795
1 1900
1 2016
Signed-off-by: Rusty Russell <[email protected]>
Changelog-Changed: Protocol: Offers on nodes with only private channels are now payable (i.e. no more blinded path errors!).
Fixes: ElementsProject#7718
3fcdf35 to
8ce0fda
Compare
Collaborator
|
(disclaimer: I am not an LN protocol expert) I am a bit confused. If 6 is the max allowed, how can we add 1008 instead? |
Collaborator
|
Nit: I would prefer to pad the CLTV with 288 blocks as it covers the vast majority of channels for even 2 hops while allowing a longer path prior to the blinded path entry. Can confirm that this commit allows paying a blinded path from phoenix through a CLN blinded_path entry node with nonstandard CLTV delta. (I did still have to connect to the Eclair node for Phoenix to fetch the invoice though.) |
afa7aea
into
ElementsProject:master
106 of 113 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
In practice, we were too strict. Here's Phoenix paying my node via another node:
We add 6 blocks, but this is supposed to be the max allowed. Increase it to 1008, to allow shadow padding. Here are the CLTV delays across advertized channels in the network: most are far less than this:
Count Delay
...
899 18
602 20
...
4352 34
...
15256 40
...
26793 80
...
9527 100
...
14303 144
...
105 288
...
12 500
...
1 1900
1 2016
Fixes: #7718