<oembed><type>rich</type><version>1.0</version><author_name>npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd</author_name><author_url>https://nostr.ae/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2023-02-14&#xA;📝 Original message:&#xA;Hi Joost,&#xA;&#xA;&gt; For a long time I&#39;ve held the expectation that eventually payers on the&#xA;lightning network will become very strict about node performance. That they&#xA;will &gt; require a routing node to operate flawlessly or else apply a hefty&#xA;penalty such as completely avoiding the node for an extended period of time&#xA;- multiple &gt; weeks. The consequence of this is that routing nodes would&#xA;need to manage their liquidity meticulously because every failure&#xA;potentially has a large&#xA;&gt; impact on future routing revenue.&#xA;&#xA;I think the performance question depends on the type of payment flows&#xA;considered. If you&#39;re an&#xA;end-user sending a payment to your local Starbucks for coffee, here fast&#xA;payment sounds the end-goal.&#xA;If you&#39;re doing remittance payment, cheap fees might be favored, and in&#xA;function of those flows you&#39;re&#xA;probably not going to select the same &#34;performant&#34; routing nodes. I think&#xA;adding latency as a criteria for&#xA;pathfinding construction has already been mentioned in the past for LDK [0].&#xA;&#xA;&gt; I think movement in this direction is important to guarantee&#xA;competitiveness with centralised payment systems and their (at least&#xA;theoretical) ability to&#xA;&gt; process a payment in the blink of an eye. A lightning wallet trying&#xA;multiple paths to find one that works doesn&#39;t help with this.&#xA;&#xA;Or there is the direction to build forward-error-correction code on top of&#xA;MPP, like in traditional&#xA;networking [1]. The rough idea, you send more payment shards than the&#xA;requested sum, and then&#xA;you reveal the payment secrets to the receiver after an onion interactivity&#xA;round to finalize payment.&#xA;&#xA;&gt; A common argument against strict penalisation is that it would lead to&#xA;less efficient use of capital. Routing nodes would need to maintain pools of&#xA;&gt; liquidity to guarantee successes all the time. My opinion on this is that&#xA;lightning is already enormously capital efficient at scale and that it is&#xA;worth&#xA;&gt; sacrificing a slight part of that efficiency to also achieve the lowest&#xA;possible latency.&#xA;&#xA;At the end of the day, we add more signal channels between HTLC senders and&#xA;the routing&#xA;nodes offering capital liquidity, if the signal mechanisms are efficient, I&#xA;think they should lead&#xA;to better allocation of the capital. So yes, I think more liquidity might&#xA;be used by routing nodes&#xA;to serve finely tailored HTLC requests by senders, however this liquidity&#xA;should be rewarded&#xA;by higher routing fees.&#xA;&#xA;&gt; This brings me to the actual subject of this post. Assuming strict&#xA;penalisation is good, it may still not be ideal to flip the switch from one&#xA;day to the other. &gt; Routing nodes may not offer the required level of&#xA;service yet, causing senders to end up with no nodes to choose from.&#xA;&#xA;&gt; One option is to gradually increase the strength of the penalties, so&#xA;that routing nodes are given time to adapt to the new standards. This does&#xA;require &gt; everyone to move along and leaves no space for cheap routing&#xA;nodes with less leeway in terms of liquidity.&#xA;&#xA;I think if we have lessons to learn on policy rules design and deployment&#xA;on the base-layer&#xA;(the full-rbf saga), it&#39;s to be careful in the initial set of rules, and&#xA;how we ensure smooth&#xA;upgradeability, from one version to another. Otherwise the re-deployment&#xA;cost towards&#xA;the new version might incentive the old routing node to stay on the&#xA;non-optimal versions,&#xA;and as we have historical buckets in routing algorithms, or preference for&#xA;older channels,&#xA;this might lead the end-user to pay higher fees, than they could access to.&#xA;&#xA;&gt; Therefore I am proposing another way to go about it: extend the&#xA;`channel_update` field `channel_flags` with a new bit that the sender can&#xA;use to signal &gt; `highly_available`.&#xA;&#xA;&gt; It&#39;s then up to payers to decide how to interpret this flag. One way&#xA;could be to prefer `highly_available` channels during pathfinding. But if&#xA;the routing&#xA;&gt; node then returns a failure, a much stronger than normal penalty will be&#xA;applied. For routing nodes this creates an opportunity to attract more&#xA;traffic by &gt; marking some channels as `highly_available`, but it also comes&#xA;with the responsibility to deliver.&#xA;&#xA;This is where the open question lies to me - &#34;highly available&#34; can be&#xA;defined with multiple&#xA;senses, like fault-tolerance, latency processing, equilibrated liquidity.&#xA;And a routing node might&#xA;not be able to optimize its architecture for the same end-goal (e.g more&#xA;watchtower on remote&#xA;host probably increases the latency processing).&#xA;&#xA;&gt; Without shadow channels, it is impossible to guarantee liquidity up to&#xA;the channel capacity. It might make sense for senders to only assume high&#xA;&gt; availability for amounts up to `htlc_maximum_msat`.&#xA;&#xA;As a note, I think &#34;senders assumption&#34; should be well-documented,&#xA;otherwise there will be&#xA;performance discrepancies between node implementations or even versions.&#xA;E.g, an upgraded&#xA;sender penalizing a node for the lack of shadow/parallel channels&#xA;fulfilling HTLC amounts up to&#xA;`htlc_maximum_msat`.&#xA;&#xA;&gt; A variation on this scheme that requires no extension of `channel_update`&#xA;is to signal availability implicitly through routing fees. So the more&#xA;expensive &gt; a channel is, the stronger the penalty that is applied on&#xA;failure will be. It seems less ideal though, because it&#xA;could disincentivize cheap but reliable&#xA;&gt; channels on high traffic links.&#xA;&#xA;&gt; The effort required to implement some form of a `highly_available` flag&#xA;seem limited and it may help to get payment success rates up. Interested to&#xA;&gt; hear your thoughts.&#xA;&#xA;I think signal availability should be explicit rather than implicit. Even&#xA;if it&#39;s coming with more&#xA;gossip bandwidth data consumed. I would say for bandwidth performance&#xA;management, relying&#xA;on new gossip messages, where they can be filtered in function of the level&#xA;of services required&#xA;is interesting.&#xA;&#xA;Best,&#xA;Antoine&#xA;&#xA;[0] https://github.com/lightningdevkit/rust-lightning/issues/1647&#xA;[1] https://www.rfc-editor.org/rfc/rfc6363.html&#xA;&#xA;&#xA;&#xA;&#xA;Le lun. 13 févr. 2023 à 11:46, Joost Jager &lt;joost.jager at gmail.com&gt; a écrit :&#xA;&#xA;&gt; Hi,&#xA;&gt;&#xA;&gt; For a long time I&#39;ve held the expectation that eventually payers on the&#xA;&gt; lightning network will become very strict about node performance. That they&#xA;&gt; will require a routing node to operate flawlessly or else apply a hefty&#xA;&gt; penalty such as completely avoiding the node for an extended period of time&#xA;&gt; - multiple weeks. The consequence of this is that routing nodes would need&#xA;&gt; to manage their liquidity meticulously because every failure potentially&#xA;&gt; has a large impact on future routing revenue.&#xA;&gt;&#xA;&gt; I think movement in this direction is important to guarantee&#xA;&gt; competitiveness with centralised payment systems and their (at least&#xA;&gt; theoretical) ability to process a payment in the blink of an eye. A&#xA;&gt; lightning wallet trying multiple paths to find one that works doesn&#39;t help&#xA;&gt; with this.&#xA;&gt;&#xA;&gt; A common argument against strict penalisation is that it would lead to&#xA;&gt; less efficient use of capital. Routing nodes would need to maintain pools&#xA;&gt; of liquidity to guarantee successes all the time. My opinion on this is&#xA;&gt; that lightning is already enormously capital efficient at scale and that it&#xA;&gt; is worth sacrificing a slight part of that efficiency to also achieve the&#xA;&gt; lowest possible latency.&#xA;&gt;&#xA;&gt; This brings me to the actual subject of this post. Assuming strict&#xA;&gt; penalisation is good, it may still not be ideal to flip the switch from one&#xA;&gt; day to the other. Routing nodes may not offer the required level of service&#xA;&gt; yet, causing senders to end up with no nodes to choose from.&#xA;&gt;&#xA;&gt; One option is to gradually increase the strength of the penalties, so that&#xA;&gt; routing nodes are given time to adapt to the new standards. This does&#xA;&gt; require everyone to move along and leaves no space for cheap routing nodes&#xA;&gt; with less leeway in terms of liquidity.&#xA;&gt;&#xA;&gt; Therefore I am proposing another way to go about it: extend the&#xA;&gt; `channel_update` field `channel_flags` with a new bit that the sender can&#xA;&gt; use to signal `highly_available`.&#xA;&gt;&#xA;&gt; It&#39;s then up to payers to decide how to interpret this flag. One way could&#xA;&gt; be to prefer `highly_available` channels during pathfinding. But if the&#xA;&gt; routing node then returns a failure, a much stronger than normal penalty&#xA;&gt; will be applied. For routing nodes this creates an opportunity to attract&#xA;&gt; more traffic by marking some channels as `highly_available`, but it also&#xA;&gt; comes with the responsibility to deliver.&#xA;&gt;&#xA;&gt; Without shadow channels, it is impossible to guarantee liquidity up to the&#xA;&gt; channel capacity. It might make sense for senders to only assume high&#xA;&gt; availability for amounts up to `htlc_maximum_msat`.&#xA;&gt;&#xA;&gt; A variation on this scheme that requires no extension of `channel_update`&#xA;&gt; is to signal availability implicitly through routing fees. So the more&#xA;&gt; expensive a channel is, the stronger the penalty that is applied on failure&#xA;&gt; will be. It seems less ideal though, because it could disincentivize cheap&#xA;&gt; but reliable channels on high traffic links.&#xA;&gt;&#xA;&gt; The effort required to implement some form of a `highly_available` flag&#xA;&gt; seem limited and it may help to get payment success rates up. Interested to&#xA;&gt; hear your thoughts.&#xA;&gt;&#xA;&gt; Joost&#xA;&gt; _______________________________________________&#xA;&gt; Lightning-dev mailing list&#xA;&gt; Lightning-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html&gt;</html></oembed>