]> git.bitcoin.ninja Git - rust-lightning/commit
Use the `PaymentParameter` final CLTV delta over `RouteParameters`
authorMatt Corallo <git@bluematt.me>
Fri, 27 Jan 2023 20:28:20 +0000 (20:28 +0000)
committerMatt Corallo <git@bluematt.me>
Wed, 1 Feb 2023 21:16:18 +0000 (21:16 +0000)
commit2b135578e8e88d3e8a16463be7a8ef4458abd33e
tree30747c14b588928fdb8bc97c61e457edc1e80aa0
parentfbc08477e8dcdd8f3f2ada8ca77388b6185febe2
Use the `PaymentParameter` final CLTV delta over `RouteParameters`

`PaymentParams` is all about the parameters for a payment, i.e. the
parameters which are static across all the paths of a paymet.
`RouteParameters` is about the information specific to a given
`Route` (i.e. a set of paths, among multiple potential sets of
paths for a payment). The CLTV delta thus doesn't belong in
`RouterParameters` but instead in `PaymentParameters`.

Worse, because `RouteParameters` is built from the information in
the last hops of a `Route`, when we deliberately inflate the CLTV
delta in path-finding, retries of the payment will have the final
CLTV delta double-inflated as it inflates starting from the final
CLTV delta used in the last attempt.

When we calculate the `final_cltv_expiry_delta` to put in the
`RouteParameters` returned via events after a payment failure, we
should re-use the new one in the `PaymentParameters`, rather than
the one that was in the route itself.
lightning/src/ln/channelmanager.rs
lightning/src/ln/outbound_payment.rs