Skip to content

Conversation

rustyrussell
Copy link
Contributor

@rustyrussell rustyrussell commented Aug 26, 2025

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
...
899 18
602 20
...
4352 34
...
15256 40
...

26793 80
...
9527 100
...
14303 144
...
105 288
...
12 500
...
1 1900
1 2016

Fixes: #7718

@rustyrussell rustyrussell added this to the v25.09 milestone Aug 26, 2025
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 <rusty@rustcorp.com.au>
Changelog-Changed: Protocol: Offers on nodes with only private channels are now payable (i.e. no more blinded path errors!).
Fixes: ElementsProject#7718
@Lagrang3
Copy link
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?

@endothermicdev
Copy link
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.)
ACK 8ce0fda

@rustyrussell rustyrussell merged commit afa7aea into ElementsProject:master Aug 27, 2025
106 of 113 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

offers: poor interop with other implementations
3 participants