<oembed><type>rich</type><version>1.0</version><author_name>npub17fjkngg0s0mfx4uhhz6n4puhflwvrhn2h5c78vdr5xda4mvqx89swntr0s</author_name><author_url>https://nostr.ae/npub17fjkngg0s0mfx4uhhz6n4puhflwvrhn2h5c78vdr5xda4mvqx89swntr0s</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-08-02&#xA;📝 Original message:&#xA;Good morning list,&#xA;&#xA;I realized that trampoline routing has only been briefly described to this&#xA;list (credits to cdecker and pm47 for laying&#xA;out the foundations). I just published an updated PR [1] and want to take&#xA;this opportunity to present the high level&#xA;view here and the parts that need a concept ACK and more feedback.&#xA;&#xA;Trampoline routing is conceptually quite simple. Alice wants to send a&#xA;payment to Bob, but she doesn&#39;t know a&#xA;route to get there because Alice only keeps a small area of the routing&#xA;table locally (Alice has a crappy phone,&#xA;damn it Alice sell some satoshis and buy a real phone). However, Alice has&#xA;a few trampoline nodes in her&#xA;friends-of-friends and knows some trampoline nodes outside of her local&#xA;area (but she doesn&#39;t know how to reach&#xA;them). Alice would like to send a payment to a trampoline node she can&#xA;reach and defer calculation of the rest of&#xA;the route to that node.&#xA;&#xA;The onion routing part is very simple now that we have variable-length&#xA;onion payloads (thanks again cdecker!).&#xA;Just like russian dolls, we simply put a small onion inside a big onion.&#xA;And the HTLC management forwards very&#xA;naturally.&#xA;&#xA;It&#39;s always simpler with an example. Let&#39;s imagine that Alice can reach&#xA;three trampoline nodes: T1, T2 and T3.&#xA;She also knows the details of many remote trampoline nodes that she cannot&#xA;reach: RT1, RT2, RT3 and RT4.&#xA;Alice selects T1 and RT2 to use as trampoline hops. She builds a small&#xA;onion that describes the following route:&#xA;&#xA;*Alice -&gt; T1 -&gt; RT2 -&gt; Bob*&#xA;&#xA;She finds a route to T1 and builds a normal onion to send a payment to T1:&#xA;&#xA;*Alice -&gt; N1 -&gt; N2 -&gt; T1*&#xA;&#xA;In the payload for T1, Alice puts the small trampoline onion.&#xA;When T1 receives the payment, he is able to peel one layer of the&#xA;trampoline onion and discover that he must&#xA;forward the payment to RT2. T1 finds a route to RT2 and builds a normal&#xA;onion to send a payment to RT2:&#xA;&#xA;*T1 -&gt; N3 -&gt; RT2*&#xA;&#xA;In the payload for RT2, T1 puts the peeled small trampoline onion.&#xA;When RT2 receives the payment, he is able to peel one layer of the&#xA;trampoline onion and discover that he must&#xA;forward the payment to Bob. RT2 finds a route to Bob and builds a normal&#xA;onion to send a payment:&#xA;&#xA;*RT2 -&gt; N4 -&gt; N5 -&gt; Bob*&#xA;&#xA;In the payload for Bob, RT2 puts the peeled small trampoline onion.&#xA;When Bob receives the payment, he is able to peel the last layer of the&#xA;trampoline onion and discover that he is&#xA;the final recipient, and fulfills the payment.&#xA;&#xA;Alice has successfully sent a payment to Bob deferring route calculation to&#xA;some chosen trampoline nodes.&#xA;That part was simple and (hopefully) not controversial, but it left out&#xA;some important details:&#xA;&#xA;   1. How do trampoline nodes specify their fees and cltv requirements?&#xA;   2. How does Alice sync the fees and cltv requirements for her remote&#xA;   trampoline nodes?&#xA;&#xA;To answer 1., trampoline nodes needs to estimate a fee and cltv that allows&#xA;them to route to (almost) any other&#xA;trampoline node. This is likely going to increase the fees paid by&#xA;end-users, but they can&#39;t eat their cake and&#xA;have it too: by not syncing the whole network, users are trading fees for&#xA;ease of use and payment reliability.&#xA;&#xA;To answer 2., we can re-use the existing gossip infrastructure to exchange&#xA;a new *node_update *message that&#xA;contains the trampoline fees and cltv. However Alice doesn&#39;t want to&#xA;receive every network update because she&#xA;doesn&#39;t have the bandwidth to support it (damn it again Alice, upgrade your&#xA;mobile plan). My suggestion is to&#xA;create a filter system (similiar to BIP37) where Alice sends gossip filters&#xA;to her peers, and peers only forward to&#xA;Alice updates that match these filters. This doesn&#39;t have the issues BIP37&#xA;has for Bitcoin because it has a cost&#xA;for Alice: she has to open a channel (and thus lock funds) to get a&#xA;connection to a peer. Peers can refuse to serve&#xA;filters if they are too expensive to compute, but the filters I propose in&#xA;the PR are very cheap (a simple xor or a&#xA;node distance comparison).&#xA;&#xA;If you&#39;re interested in the technical details, head over to [1].&#xA;I would really like to get feedback from this list on the concept itself,&#xA;and especially on the gossip and fee estimation&#xA;parts. If you made it that far, I&#39;m sure you have many questions and&#xA;suggestions ;).&#xA;&#xA;Cheers,&#xA;Bastien&#xA;&#xA;[1] https://github.com/lightningnetwork/lightning-rfc/pull/654&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20190802/c9e8fa12/attachment.html&gt;</html></oembed>