Fix final blinded hop CLTV expiry on send.
authorValentine Wallace <vwallace@protonmail.com>
Wed, 20 Dec 2023 00:16:37 +0000 (19:16 -0500)
committerValentine Wallace <vwallace@protonmail.com>
Thu, 11 Jan 2024 16:36:08 +0000 (11:36 -0500)
commitf1e4645edffe1c65b8ac5224ec2750d3c7fae6d6
tree721b46cfd7776490cb943c3a640d3cfb6546b00a
parent4a0170a9417aaa3adac25e1d790031789d0de545
Fix final blinded hop CLTV expiry on send.

Previously, we were setting the final blinded hop's CLTV expiry height to
best_block_height + total_blinded_path_cltv_delta + shadow_cltv_offset. This is
incorrect, it should instead be set to best_block_height + shadow_cltv_offset
only -- it doesn't make sense to include the delta for the other blinded hops
in the final hop's expiry.

The reason this too-high final cltv value didn't cause test failures previously
is because of a 2nd bug that is fixed in an upcoming commit where the sender
adds the shadow offset twice to the total path CLTV expiry. This 2nd offset
meant that intermediate nodes had some buffer CLTV to subtract their delta from
while still (usually) have enough leftover to meet the expiry in the final hop's
onion.
lightning/src/ln/onion_utils.rs