{"type":"rich","version":"1.0","author_name":"npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd","author_url":"https://nostr.ae/npub1vjzmc45k8dgujppapp2ue20h3l9apnsntgv4c0ukncvv549q64gsz4x8dd","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2023-02-14\n📝 Original message:\nHi Joost,\n\n\u003e For a long time I've held the expectation that eventually payers on the\nlightning network will become very strict about node performance. That they\nwill \u003e require a routing node to operate flawlessly or else apply a hefty\npenalty such as completely avoiding the node for an extended period of time\n- multiple \u003e weeks. The consequence of this is that routing nodes would\nneed to manage their liquidity meticulously because every failure\npotentially has a large\n\u003e impact on future routing revenue.\n\nI think the performance question depends on the type of payment flows\nconsidered. If you're an\nend-user sending a payment to your local Starbucks for coffee, here fast\npayment sounds the end-goal.\nIf you're doing remittance payment, cheap fees might be favored, and in\nfunction of those flows you're\nprobably not going to select the same \"performant\" routing nodes. I think\nadding latency as a criteria for\npathfinding construction has already been mentioned in the past for LDK [0].\n\n\u003e I think movement in this direction is important to guarantee\ncompetitiveness with centralised payment systems and their (at least\ntheoretical) ability to\n\u003e process a payment in the blink of an eye. A lightning wallet trying\nmultiple paths to find one that works doesn't help with this.\n\nOr there is the direction to build forward-error-correction code on top of\nMPP, like in traditional\nnetworking [1]. The rough idea, you send more payment shards than the\nrequested sum, and then\nyou reveal the payment secrets to the receiver after an onion interactivity\nround to finalize payment.\n\n\u003e A common argument against strict penalisation is that it would lead to\nless efficient use of capital. Routing nodes would need to maintain pools of\n\u003e liquidity to guarantee successes all the time. My opinion on this is that\nlightning is already enormously capital efficient at scale and that it is\nworth\n\u003e sacrificing a slight part of that efficiency to also achieve the lowest\npossible latency.\n\nAt the end of the day, we add more signal channels between HTLC senders and\nthe routing\nnodes offering capital liquidity, if the signal mechanisms are efficient, I\nthink they should lead\nto better allocation of the capital. So yes, I think more liquidity might\nbe used by routing nodes\nto serve finely tailored HTLC requests by senders, however this liquidity\nshould be rewarded\nby higher routing fees.\n\n\u003e This brings me to the actual subject of this post. Assuming strict\npenalisation is good, it may still not be ideal to flip the switch from one\nday to the other. \u003e Routing nodes may not offer the required level of\nservice yet, causing senders to end up with no nodes to choose from.\n\n\u003e One option is to gradually increase the strength of the penalties, so\nthat routing nodes are given time to adapt to the new standards. This does\nrequire \u003e everyone to move along and leaves no space for cheap routing\nnodes with less leeway in terms of liquidity.\n\nI think if we have lessons to learn on policy rules design and deployment\non the base-layer\n(the full-rbf saga), it's to be careful in the initial set of rules, and\nhow we ensure smooth\nupgradeability, from one version to another. Otherwise the re-deployment\ncost towards\nthe new version might incentive the old routing node to stay on the\nnon-optimal versions,\nand as we have historical buckets in routing algorithms, or preference for\nolder channels,\nthis might lead the end-user to pay higher fees, than they could access to.\n\n\u003e Therefore I am proposing another way to go about it: extend the\n`channel_update` field `channel_flags` with a new bit that the sender can\nuse to signal \u003e `highly_available`.\n\n\u003e It's then up to payers to decide how to interpret this flag. One way\ncould be to prefer `highly_available` channels during pathfinding. But if\nthe routing\n\u003e node then returns a failure, a much stronger than normal penalty will be\napplied. For routing nodes this creates an opportunity to attract more\ntraffic by \u003e marking some channels as `highly_available`, but it also comes\nwith the responsibility to deliver.\n\nThis is where the open question lies to me - \"highly available\" can be\ndefined with multiple\nsenses, like fault-tolerance, latency processing, equilibrated liquidity.\nAnd a routing node might\nnot be able to optimize its architecture for the same end-goal (e.g more\nwatchtower on remote\nhost probably increases the latency processing).\n\n\u003e Without shadow channels, it is impossible to guarantee liquidity up to\nthe channel capacity. It might make sense for senders to only assume high\n\u003e availability for amounts up to `htlc_maximum_msat`.\n\nAs a note, I think \"senders assumption\" should be well-documented,\notherwise there will be\nperformance discrepancies between node implementations or even versions.\nE.g, an upgraded\nsender penalizing a node for the lack of shadow/parallel channels\nfulfilling HTLC amounts up to\n`htlc_maximum_msat`.\n\n\u003e A variation on this scheme that requires no extension of `channel_update`\nis to signal availability implicitly through routing fees. So the more\nexpensive \u003e a channel is, the stronger the penalty that is applied on\nfailure will be. It seems less ideal though, because it\ncould disincentivize cheap but reliable\n\u003e channels on high traffic links.\n\n\u003e The effort required to implement some form of a `highly_available` flag\nseem limited and it may help to get payment success rates up. Interested to\n\u003e hear your thoughts.\n\nI think signal availability should be explicit rather than implicit. Even\nif it's coming with more\ngossip bandwidth data consumed. I would say for bandwidth performance\nmanagement, relying\non new gossip messages, where they can be filtered in function of the level\nof services required\nis interesting.\n\nBest,\nAntoine\n\n[0] https://github.com/lightningdevkit/rust-lightning/issues/1647\n[1] https://www.rfc-editor.org/rfc/rfc6363.html\n\n\n\n\nLe lun. 13 févr. 2023 à 11:46, Joost Jager \u003cjoost.jager at gmail.com\u003e a écrit :\n\n\u003e Hi,\n\u003e\n\u003e For a long time I've held the expectation that eventually payers on the\n\u003e lightning network will become very strict about node performance. That they\n\u003e will require a routing node to operate flawlessly or else apply a hefty\n\u003e penalty such as completely avoiding the node for an extended period of time\n\u003e - multiple weeks. The consequence of this is that routing nodes would need\n\u003e to manage their liquidity meticulously because every failure potentially\n\u003e has a large impact on future routing revenue.\n\u003e\n\u003e I think movement in this direction is important to guarantee\n\u003e competitiveness with centralised payment systems and their (at least\n\u003e theoretical) ability to process a payment in the blink of an eye. A\n\u003e lightning wallet trying multiple paths to find one that works doesn't help\n\u003e with this.\n\u003e\n\u003e A common argument against strict penalisation is that it would lead to\n\u003e less efficient use of capital. Routing nodes would need to maintain pools\n\u003e of liquidity to guarantee successes all the time. My opinion on this is\n\u003e that lightning is already enormously capital efficient at scale and that it\n\u003e is worth sacrificing a slight part of that efficiency to also achieve the\n\u003e lowest possible latency.\n\u003e\n\u003e This brings me to the actual subject of this post. Assuming strict\n\u003e penalisation is good, it may still not be ideal to flip the switch from one\n\u003e day to the other. Routing nodes may not offer the required level of service\n\u003e yet, causing senders to end up with no nodes to choose from.\n\u003e\n\u003e One option is to gradually increase the strength of the penalties, so that\n\u003e routing nodes are given time to adapt to the new standards. This does\n\u003e require everyone to move along and leaves no space for cheap routing nodes\n\u003e with less leeway in terms of liquidity.\n\u003e\n\u003e Therefore I am proposing another way to go about it: extend the\n\u003e `channel_update` field `channel_flags` with a new bit that the sender can\n\u003e use to signal `highly_available`.\n\u003e\n\u003e It's then up to payers to decide how to interpret this flag. One way could\n\u003e be to prefer `highly_available` channels during pathfinding. But if the\n\u003e routing node then returns a failure, a much stronger than normal penalty\n\u003e will be applied. For routing nodes this creates an opportunity to attract\n\u003e more traffic by marking some channels as `highly_available`, but it also\n\u003e comes with the responsibility to deliver.\n\u003e\n\u003e Without shadow channels, it is impossible to guarantee liquidity up to the\n\u003e channel capacity. It might make sense for senders to only assume high\n\u003e availability for amounts up to `htlc_maximum_msat`.\n\u003e\n\u003e A variation on this scheme that requires no extension of `channel_update`\n\u003e is to signal availability implicitly through routing fees. So the more\n\u003e expensive a channel is, the stronger the penalty that is applied on failure\n\u003e will be. It seems less ideal though, because it could disincentivize cheap\n\u003e but reliable channels on high traffic links.\n\u003e\n\u003e The effort required to implement some form of a `highly_available` flag\n\u003e seem limited and it may help to get payment success rates up. Interested to\n\u003e hear your thoughts.\n\u003e\n\u003e Joost\n\u003e _______________________________________________\n\u003e Lightning-dev mailing list\n\u003e Lightning-dev at lists.linuxfoundation.org\n\u003e https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev\n\u003e\n-------------- next part --------------\nAn HTML attachment was scrubbed...\nURL: \u003chttp://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20230214/893867dd/attachment-0001.html\u003e"}
