Good morning Rene,
Please consider the recent discussion about AMP, atomic multi-path.
https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-February/000993.html
Note that only the source (payer) can split the payment into multiple smaller
payments; we cannot safely let intermediaries split the payment as the
intermediaries may very well decide to send it to a ridiculously high-fee
channel. So the payer will make multiple payments that can only be merged at
the destination, each sub-payment has a single route and itself cannot be split
unless the payer decides to split.
> Not sure however how the impacts to the HTLC would be and if it would
> actually be possible to fragment a payment that is encapsulated within the
> onion routing.
The timeouts in particular would be impossible to handle. At any point the
payment should reach the payee within some N blocks and each hop reduces that
margin by a small amount (14 blocks for c-lightning if I remember correctly).
It is likely that there will not be enough time if it goes through a detour,
unless the detour has equal or smaller reduction (delay) than the original hop
with insufficient monetary capacity.
Regards,
ZmnSCPxj
Sent with [ProtonMail](https://protonmail.com) Secure Email.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On March 1, 2018 11:26 PM, René Pickhardt via Lightning-dev
<lightning-dev@lists.linuxfoundation.org> wrote:
> Hey everyone,
>
> disclaimer I am new here and have not a full understanding of the complete
> specs yet - however since I decided to participate in lighting dev I will
> just be brave and try to add my ideas on the problem jimpo posed. So even in
> case by ideas are complete bs please just tell me in a friendly way and I
> know I need to read more code and specs in order to participate.
>
> Reading about the described problem techniques like IP-Fragmentation (
> https://en.wikipedia.org/wiki/IP_fragmentation ) come to my mind. The setting
> is a little bit different but in from my current understanding it should
> still be applicable and also be the favorable solution in comparison to the
> proposed ping:
>
> 1.) IP setting: In IP-Fragmentation one would obviously just split the
> IP-package in order to utilize a link layer protocol that doesn't have enough
> bandwidth for a bigger size package.
> 2.) Lightning case: When the capacity of a channel during routing is not high
> enough - which means that the channel balance on that side is somewhere
> between 0 and the size of the payment - one would have to to send the second
> part of the fragmented package on a different route. This is obvious since
> the insufficient channel balance cannot come out of thin air (as in
> IP-Routing).
>
> My first intuition was that this would become a problem for onion routing
> since the router in question does not know the final destination but only
> knows the next hop which can't be utilized as the channel doesn't have enough
> funds. However I imagine one could just encapsulate the second part of the
> fragmented payment in a new onion routed package that goes on a detour (using
> different payment channels) to the original "next" hop und progresses from
> there as it was originally thought of.
>
> Not sure however how the impacts to the HTLC would be and if it would
> actually be possible to fragment a payment that is encapsulated within the
> onion routing.
>
> If possible the advantage in comparison to your proposed ping method is that
> fragmentation would be highly dynamic and still work if a channel runs out of
> funds while routing payment. In your ping scenario it could very well happen
> that you do a ping for a designated rout, everything looks great, you send a
> payment but while it is on its way a channel on that way could run dry.
>
> best Rene
>
> On Thu, Mar 1, 2018 at 3:45 PM, Jim Posen <jim.po...@gmail.com> wrote:
>
>> My understanding is that the best strategy for choosing a route to send
>> funds over is to determine all possible routes, rank them by estimated fees
>> based on channel announcements and number of hops, then try them
>> successively until one works.
>>
>> It seems inefficient to me to actually do a full HTLC commitment handshake
>> on each hop just to find out that the last hop in the route didn't have
>> sufficient remaining capacity in the first place. Depending on how many
>> people are using the network, I could also forsee situations where this
>> creates more payment failures because bandwidth is locked up in HTLCs that
>> are about to fail anyway.
>>
>> One idea that would likely help is the ability to send a ping over an onion
>> route asking "does every hop have capacity to send X msat?" Every hop would
>> forward the onion request if the answer is yes, or immediately send the
>> response back up the circuit if the answer is no. This should reveal no
>> additional information about the channel capacities that the sender couldn't
>> determine by sending a test payment to themself (assuming they could find a
>> loop). Additionally, the hops could respond with the latest fee rate in case
>> channel updates are slow to propagate.
>>
>> The main benefit is that this should make it quicker to send a successful
>> payment because latency is lower than sending an actual payment and the
>> sender could ping all possible routes in parallel, whereas they can't send
>> multiple payments in parallel. The main downside I can think of is that, by
>> the same token, it is faster and cheaper for someone to extract information
>> about channel capacities on the network with a binary search.
>>
>> -jimpo
>>
>> _______________________________________________
>> Lightning-dev mailing list
>> Lightning-dev@lists.linuxfoundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev
>
> --
> Skype: rene.pickhardt
_______________________________________________
Lightning-dev mailing list
Lightning-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev