<div dir="ltr">Hi Pierre and list folks,<div><br></div><div>I haven&#39;t looked at the technical implications of implementing this in detail, but I like the high-level direction this proposal is taking :)</div><div><br></div><div>I think it nicely ties together several concepts that have been proposed earlier, and with the correct design could give the sender all the flexibility needed to craft payments according to its own reliability/privacy/fee tradeoff.</div><div><br></div><div>In an ideal world we would have:</div><div>- Multi-hop locks: hop decorrelation will be even more important when the sender no longer controls the whole payment path.</div><div><br></div><div>- Packet switched routing: the sender can choose whether to route purely packet switched (only knowing the destination, no need to keep any routing table) or route purely onion-based (as today), or something in between. As Christian mentions, this is similar to how TOR/TCP works, and I like the flexibility this layering allows.</div><div><br></div><div>- Rendezvous routing: such a proposal would be nice to combine with rendezvous routing. This way even the sender wouldn&#39;t necessarily know if the &quot;destination node&quot; is just another trampoline. Maybe maybe this concern shouldn&#39;t be on this layer though? </div><div><br></div><div>- Fees: (as today) the sender would set the fees it is willing to pay between trampolines, and it could dynamically learn about fee levels needed to reach different parts of the network. Today we know the fee needed to reach the next hop, but here we could start out low (for the trampoline-to-trampoline fee) and let different trampolines return competing fee offers to get to the next hop.</div><div><br></div><div>As mentioned, I haven&#39;t thought about the technical implications of all this, and it would certainly require a lot of work to get this actually implemented.</div><div><br></div><div>Cheers,</div><div>Johan</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Apr 3, 2019 at 5:42 AM ZmnSCPxj via Lightning-dev &lt;<a href="mailto:lightning-dev@lists.linuxfoundation.org" target="_blank">lightning-dev@lists.linuxfoundation.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Good morning Pierre and list,<br>
<br>
&gt;     There is another unrelated issue: because trampoline nodes don&#39;t know<br>
&gt;     anything about what happened before they received the onion, they may<br>
&gt;     unintentionnaly create overlapping routes. So we can&#39;t simply use the<br>
&gt;     payment_hash as we currently do, we would have to use something a bit<br>
&gt;     more elaborate.<br>
<br>
Just to be clear, the issue is for example with a network like:<br>
<br>
<br>
    A ------- B -------- C<br>
             / \<br>
            /   \<br>
           /     \<br>
          /       \<br>
         D ------- E<br>
<br>
Then, A creates an inner trampoline onion &quot;E-&gt;C&quot;, and an outer onion &quot;A-&gt;B-&gt;E&quot;.<br>
<br>
E, on receiving the inner trampoline onion &quot;E-&gt;C&quot;, finds that E-&gt;B direction is low capacity, so routes over the outer onion &quot;E-&gt;D-&gt;B-&gt;C&quot; with inner trampoline onion &quot;C&quot;.<br>
<br>
This creates an overall route A-&gt;B-&gt;E-&gt;D-&gt;B-&gt;C.<br>
<br>
When the B-&gt;C HTLC is resolved, B can instead claim the A-&gt;B HTLC and just fail the D-&gt;B HTLC, thereby removing D and E from the route and claiming their fees, even though they participated in the route.<br>
<br>
&gt; (maybe private keys?)<br>
<br>
Do you refer to the changing from &quot;H&quot;TLC to &quot;P&quot;TLC point-locked timelocked contracts?<br>
i.e. instead of payment hash / preimage, we use payment point / scalar.<br>
<br>
I think a few ideas would be improved by this.<br>
<br>
1.  Trampoline payments, as described above.<br>
2.  Offline vending machines<br>
    - Instead of storing a fixed number of invoices from the always-online payment node, store a HD parent point and derive child points for payments.<br>
3.  Enables payment decorrelation.<br>
<br>
Perhaps we should consider switching to payment points/scalars sometime soon.<br>
<br>
Regards,<br>
ZmnSCPxj<br>
_______________________________________________<br>
Lightning-dev mailing list<br>
<a href="mailto:Lightning-dev@lists.linuxfoundation.org" target="_blank">Lightning-dev@lists.linuxfoundation.org</a><br>
<a href="https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev" rel="noreferrer" target="_blank">https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev</a><br>
</blockquote></div>