You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm testing mpp payments with Electrum and we want to enable splitting across multiple trampoline forwarders.
Consider a splitting of (S: sender, R: receiver, T1: trampoline 1, T2: trampoline 2):
S ->- T1 ->- R (500/2000)
T1 ->- R (500/2000)
S ->- T2 ->- R (1000/2000)
In this case, the sender tries to send 2000 sat to R, splitting accross T1 and T2. This already works for E2E trampoline payments, because the trampoline onions that arrive at the receiver have the information about the total amount from the trampoline onions.
In the legacy case, the trampolines T1, T2 carry out a payment to R and they can know about the total amount from their trampoline onion. Right now, T1 encodes a total amount of 1000 sat in the normal onion, causing a legacy receiver to fail the payment, because the total amount doesn't match the invoice amount.
I communicated with @t-bast, and the culprit lies in
discarding the total amount from the trampoline onion and sending a different total amount.
Receiving trampoline onions will probably still take a while which is why I think it's important to support legacy mpp. I'll check whether I can find some time to fix this, if not anybody else wants to.
The text was updated successfully, but these errors were encountered:
I don't think we need to support MPP across multiple trampoline nodes towards nodes that don't support trampoline. Using the trampoline-to-legacy relay is already a hack, that we don't want people to rely on (because trampoline nodes learn the recipient's identity and may steal over-payments or the whole payment in case of an amount-less invoice).
We've already waited for years without this being a real issue in practice, we can wait longer to get recipient to either support trampoline or Bolt 12 (which fixes these issues as well: see the last commit from lightning/bolts#836).
I'm testing mpp payments with Electrum and we want to enable splitting across multiple trampoline forwarders.
Consider a splitting of (S: sender, R: receiver, T1: trampoline 1, T2: trampoline 2):
In this case, the sender tries to send 2000 sat to R, splitting accross T1 and T2. This already works for E2E trampoline payments, because the trampoline onions that arrive at the receiver have the information about the total amount from the trampoline onions.
In the legacy case, the trampolines T1, T2 carry out a payment to R and they can know about the total amount from their trampoline onion. Right now, T1 encodes a total amount of 1000 sat in the normal onion, causing a legacy receiver to fail the payment, because the total amount doesn't match the invoice amount.
I communicated with @t-bast, and the culprit lies in
eclair/eclair-core/src/main/scala/fr/acinq/eclair/payment/relay/NodeRelay.scala
Line 274 in fda3818
discarding the total amount from the trampoline onion and sending a different total amount.
Receiving trampoline onions will probably still take a while which is why I think it's important to support legacy mpp. I'll check whether I can find some time to fix this, if not anybody else wants to.
The text was updated successfully, but these errors were encountered: