<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2023-06-09T12:23:31Z</updated>
  <generator>https://njump.me</generator>

  <title>Nostr notes by Stefan Richter [ARCHIVE]</title>
  <author>
    <name>Stefan Richter [ARCHIVE]</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.me/npub19fnl48y9j4fk9w0a284mqvszq6fuppelqp2tcxf0s37l95avdtussf4wf0.rss" />
  <link href="https://njump.me/npub19fnl48y9j4fk9w0a284mqvszq6fuppelqp2tcxf0s37l95avdtussf4wf0" />
  <id>https://njump.me/npub19fnl48y9j4fk9w0a284mqvszq6fuppelqp2tcxf0s37l95avdtussf4wf0</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://njump.me/nevent1qqst3f979rf6s9kulds5y8nza5vkf5hjqttgevyrvrrjk76qk46uatszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jzeynpy</id>
    
      <title type="html">📅 Original date posted:2022-03-20 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqst3f979rf6s9kulds5y8nza5vkf5hjqttgevyrvrrjk76qk46uatszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jzeynpy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0x5svwre3zgfv7txmmedgpc5cmjl09k6sgzygxee9frdpl2uz2gs37x95w&#39;&gt;nevent1q…x95w&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-20&lt;br/&gt;📝 Original message:&lt;br/&gt;Good morning everyone,&lt;br/&gt;&lt;br/&gt;with regards to zerobasefee, I think that the argument that HTLCs are&lt;br/&gt;costly doesn&amp;#39;t quite hold up because they are always free to an&lt;br/&gt;attacker as it stands. However, I fully agree with Zmn&amp;#39;s opinion that&lt;br/&gt;it&amp;#39;s not necessary to bang our head against any opposition to this&lt;br/&gt;because we can simply follow his excellent method for overweighing&lt;br/&gt;base fee. I believe this is a very natural approach to let the market&lt;br/&gt;decide on the relative importance of optimized routing vs base fees.&lt;br/&gt;&lt;br/&gt;As to Martin&amp;#39;s approximation research, I have asked myself similar&lt;br/&gt;questions. Unfortunately, the paper you cite is paywalled and not&lt;br/&gt;available at sci-hub, so I haven&amp;#39;t read it. FWIW, I believe I have a&lt;br/&gt;simple proof that minimum cost flow preserves approximation FACTORS:&lt;br/&gt;&lt;br/&gt;Let O be the original problem and A the approximated problem such that&lt;br/&gt;every flow in O can be mapped 1:1 to a flow in A and vice versa. Let&lt;br/&gt;every edge e in O be represented by a set of edges in A whose total&lt;br/&gt;cost is within a factor (1&#43;epsilon) for every possible flow (could be&lt;br/&gt;over- or underestimating). Note that this means that every flow in O&lt;br/&gt;has cost within a factor (1&#43;epsilon) for the corresponding flow in A&lt;br/&gt;and vice versa.&lt;br/&gt;&lt;br/&gt;Now let f_a be the min cost flow in A and f_o the min cost flow in O.&lt;br/&gt;Assume that c(f_o)(1&#43;epsilon)&amp;lt;c(f_a). Then f_o corresponds to a flow&lt;br/&gt;in A that is cheaper than f_a, but that&amp;#39;s impossible because f_a is&lt;br/&gt;the min cost flow.&lt;br/&gt;QED.&lt;br/&gt;&lt;br/&gt;Problems might arise anyway because we represent probabilities only&lt;br/&gt;logarithmically in the cost, so that a factor of (1&#43;epsilon)&lt;br/&gt;corresponds to an exponent (1&#43;epsilon) for the probabilities. But René&lt;br/&gt;seems optimistic that the resulting flows look good enough in&lt;br/&gt;practice.&lt;br/&gt;&lt;br/&gt;I am still optimistic that exact solvers with something like the cost&lt;br/&gt;scaling approach might also be feasible (as long as they produce&lt;br/&gt;integer flows), but I am happy that this simple approximation approach&lt;br/&gt;seems good enough. This should save us a lot of work because there are&lt;br/&gt;many linear min cost solvers available that represent years of&lt;br/&gt;cumulative work in optimization research.&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;Am Sa., 19. März 2022 um 22:09 Uhr schrieb Martin via Lightning-dev&lt;br/&gt;&amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Dear Carsten, Rene and fellow lightning developers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regarding the approximation quality of the minimum convex cost flow formulation for multi-part payments on the lightning network [1] and Carsten&amp;#39;s discussion points on Twitter [2] and on the mailing list:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 8) Quality of Approximation&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are some problems in computer science that are hard/impossible to&lt;br/&gt;&amp;gt; &amp;gt; approximate, in the sense that any kind of deviation from the optimum&lt;br/&gt;&amp;gt; &amp;gt; could cause the computed results to be extremely bad. Do you have some&lt;br/&gt;&amp;gt; &amp;gt; idea (or proof) that your kind of approximation isn&amp;#39;t causing a major&lt;br/&gt;&amp;gt; &amp;gt; issue? I guess a piece-wise linearization with an infinite number of&lt;br/&gt;&amp;gt; &amp;gt; pieces corresponds to the optimal result. Given a finite number of&lt;br/&gt;&amp;gt; &amp;gt; pieces, how large is the difference to the optimum?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I did some literature research and came across an insightful paper [3] by Dorit Hochbaum from 1993, that proves proximity results for integer and continuous optimal solutions of the minimum convex cost flow as well as proximity results of the optimal solutions for a piecewise linear approximation and the original problem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Admittedly theoretical results, however, it further underpins that a piecewise linear approximation is a reasonable approach to find optimal flows and even shows that searching for optimal solutions on the continuous domain (e.g. with descent methods from convex optimization) also gives near-optimal solutions on the integer domain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Martin&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://arxiv.org/abs/2107.05322&#34;&gt;https://arxiv.org/abs/2107.05322&lt;/a&gt;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://twitter.com/renepickhardt/status/1502293438498234371&#34;&gt;https://twitter.com/renepickhardt/status/1502293438498234371&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;https://www.worldscientific.com/doi/abs/10.1142/9789812798190_0005&#34;&gt;https://www.worldscientific.com/doi/abs/10.1142/9789812798190_0005&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T13:05:33Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsxfm8cu7nxv5tsqh3fm9y93qq4m7z296wdscpxsjm65jqahja893szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j65dfpv</id>
    
      <title type="html">📅 Original date posted:2021-11-22 📝 Original message: I ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsxfm8cu7nxv5tsqh3fm9y93qq4m7z296wdscpxsjm65jqahja893szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j65dfpv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9rkzft3j7tnluxm7yfkvtamlf89tytt0uf4jk7p8wrhuuf86uqaq4zyat4&#39;&gt;nevent1q…yat4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-11-22&lt;br/&gt;📝 Original message:&lt;br/&gt;I also don&amp;#39;t believe putting a choice of more or less seconds expectation&lt;br/&gt;in the UI makes for a great user experience. IMHO the goal should just be:&lt;br/&gt;give the user an estimate of fees necessary to succeed within a reasonable&lt;br/&gt;time. Maybe give them an option to optimize for fees only if they are&lt;br/&gt;really cheap and don&amp;#39;t care at all if the payment succeeds.&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Mo., 22. Nov. 2021, 00:53:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Dave,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If LN software speculatively chooses a series of attempts with a similar&lt;br/&gt;&amp;gt; &amp;gt; 95%, accounting for things like the probability of a stuck payment (made&lt;br/&gt;&amp;gt; &amp;gt; worse by longer CLTV timeouts on some paths), it could present users&lt;br/&gt;&amp;gt; &amp;gt; with the same sort of options:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ~1 second, x fee&lt;br/&gt;&amp;gt; &amp;gt; ~3 seconds, y fee&lt;br/&gt;&amp;gt; &amp;gt; ~10 seconds, z fee&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This allows the software to use its reliability scoring efficiently in&lt;br/&gt;&amp;gt; &amp;gt; choosing what series of payment attempts to make and presents to the&lt;br/&gt;&amp;gt; &amp;gt; user the information they need to make a choice appropriate for their&lt;br/&gt;&amp;gt; &amp;gt; situation. As a bonus, it makes it easier for wallet software to move&lt;br/&gt;&amp;gt; &amp;gt; towards a world where there is no user-visible difference between&lt;br/&gt;&amp;gt; &amp;gt; onchain and offchain payments, e.g.:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ~1 second, w fee&lt;br/&gt;&amp;gt; &amp;gt; ~15 seconds, x fee&lt;br/&gt;&amp;gt; &amp;gt; ~10 minutes, y fee&lt;br/&gt;&amp;gt; &amp;gt; ~60 minutes, z fee&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This may not match ideally, as in the worst case a forwarding might be&lt;br/&gt;&amp;gt; struck by literal lightning and dropped off the network while your HTLC is&lt;br/&gt;&amp;gt; on that node, only for the relevant channel to be dropped onchain days&lt;br/&gt;&amp;gt; later when the timeout comes due.&lt;br/&gt;&amp;gt; Providing this &amp;#34;seconds&amp;#34; estimate does not prepare users for the&lt;br/&gt;&amp;gt; possibility of such black swan events where a high fee transaction gets&lt;br/&gt;&amp;gt; stalled due to an accident on the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, humans never really handle black swan events in any&lt;br/&gt;&amp;gt; reasonably way anyway, and 95% of the time it will probably achieve that&lt;br/&gt;&amp;gt; number of estimated seconds or less.&lt;br/&gt;&amp;gt; Even the best onchain estimators fail when a thundering herd of&lt;br/&gt;&amp;gt; speculators decides to trade Bitcoin based on random crap from the&lt;br/&gt;&amp;gt; noosphere.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The processing to figure out a payment plan also becomes significant at&lt;br/&gt;&amp;gt; the &amp;#34;seconds&amp;#34; level, especially if you switch to mincostflow rather than&lt;br/&gt;&amp;gt; shortestpath.&lt;br/&gt;&amp;gt; This means the CPU speed of the local node may become significant, or if&lt;br/&gt;&amp;gt; you are delegating pathfinding to a trusted server, the load on that&lt;br/&gt;&amp;gt; trusted server becomes significant.&lt;br/&gt;&amp;gt; Sigh.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Why not just ask for a fee budget for a payment, and avoid committing&lt;br/&gt;&amp;gt; ourselves to paying within some number of seconds, given that the seconds&lt;br/&gt;&amp;gt; estimate may very well vary depending on local CPU load?&lt;br/&gt;&amp;gt; Would users really complain overmuch if the number of seconds is not&lt;br/&gt;&amp;gt; provided, given that we cannot really estimate this well?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211122/60a58188/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211122/60a58188/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:04:26Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs28r3w0arxltd425lx6als3anhstcszk6qhueq7v9w8dukhqdlvfqzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jcpjcl9</id>
    
      <title type="html">📅 Original date posted:2021-11-15 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs28r3w0arxltd425lx6als3anhstcszk6qhueq7v9w8dukhqdlvfqzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jcpjcl9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspy4e3khe6jln2r65rvumcalpn7vn595l5xr45wkyzv5sja6vg62gfcvt7y&#39;&gt;nevent1q…vt7y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-11-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Actually, if you look into our paper, the theory tells us the following:&lt;br/&gt;&lt;br/&gt;1) A weighted sum of different cost aspects is attractive because it&lt;br/&gt;remains convex if all the aspects are convex themselves. This cannot be&lt;br/&gt;said of other methods like the harmonic mean, which kind of forces our hand&lt;br/&gt;if we aim to really calculate optimal flows.&lt;br/&gt;&lt;br/&gt;2) even in the single path case, finding a route that optimizes one goal&lt;br/&gt;(say, reliability) while ensuring that another cost aspect remains under&lt;br/&gt;some boundary, is a (weakly) NP hard problem. My interpretation of this&lt;br/&gt;fact is that while it is certainly possible to find suitable factors for&lt;br/&gt;the linear combination (by, say, gradient descent methods), we cannot&lt;br/&gt;expect a method that is simple and works for every conceivable graph every&lt;br/&gt;time. In practice, we have observed that the factor needs to be varied over&lt;br/&gt;multiple orders of magnitude to make a meaningful impact. Mapping this onto&lt;br/&gt;an easy user interface (e.g. your suggestion of a linearly feeling value&lt;br/&gt;between 0 and 1) will need some trial and error engineering, IMHO.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;    Stefan&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;René Pickhardt via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Mo., 15. Nov. 2021, 12:50:&lt;br/&gt;&lt;br/&gt;&amp;gt; Dear Joost,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; First I am happy that you also agree that reliability can and should be&lt;br/&gt;&amp;gt; expressed as a probability as discussed in [0].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The problem that you address is that of feature engineering[1]. Which&lt;br/&gt;&amp;gt; consists of two (or even more) steps:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1.) Feature selection: That means in payment delivery we will compute a&lt;br/&gt;&amp;gt; min cost flow [2] with a chosen cost function (historically people used&lt;br/&gt;&amp;gt; dijkstra seach for single paths with the cost function representing the&lt;br/&gt;&amp;gt; weights on the edges of the graph -which is what most folks currently still&lt;br/&gt;&amp;gt; do). While [2] and I personally agree with you that the cost function&lt;br/&gt;&amp;gt; should be a combination the two features fees and reliability (as in&lt;br/&gt;&amp;gt; successprobability) Matt Corallo righfully pointed out [3] that other&lt;br/&gt;&amp;gt; features might be chosen in the future to deliver more optimal results. For&lt;br/&gt;&amp;gt; example implementations currently often use CLTV as a feature (which I&lt;br/&gt;&amp;gt; honestly find horrible) and I am currently investigating if one could add&lt;br/&gt;&amp;gt; latency of channels or - for known IP addresses - either the geo distance&lt;br/&gt;&amp;gt; or IP distance.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2.) Combining features: This is the question that you are asking. Often&lt;br/&gt;&amp;gt; people use a linear weighted sum to combine features. This is what often&lt;br/&gt;&amp;gt; happens implicitly in neural networks. While this is often good enough and&lt;br/&gt;&amp;gt; while it is often practical to either learn the weights or give users a&lt;br/&gt;&amp;gt; choice there are many situation where the weighted linear sum does not work&lt;br/&gt;&amp;gt; well with the selected features. An example for the weighted sum is the&lt;br/&gt;&amp;gt; risk-factor in c-lightning that could have been used to decide if one&lt;br/&gt;&amp;gt; wanted the dijkstra seach to either optimize for CLTV delta or for paid&lt;br/&gt;&amp;gt; routing fees. Also in our paper [2] in which we discuss the same two&lt;br/&gt;&amp;gt; features that you mentioned we explain how a linear sum of two features can&lt;br/&gt;&amp;gt; be optimal due to the lagrangian bounding principle. However in practice&lt;br/&gt;&amp;gt; (of machine learning) it has been shown that using the harmonic mean [4]&lt;br/&gt;&amp;gt; between features often works very well without the necessity to learn a&lt;br/&gt;&amp;gt; weight / parameter. This has for example been done when c-lightnign&lt;br/&gt;&amp;gt; recently switched to probabilistic path finding [5]. In this thread you&lt;br/&gt;&amp;gt; find a long discussion and evaluation how the harmonic mean outperformed&lt;br/&gt;&amp;gt; the linear sum.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the main issue that you address here is that there is no universal&lt;br/&gt;&amp;gt; truth for situations like this. In practice only tests and experience will&lt;br/&gt;&amp;gt; help us to make good decisions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; with kind Regards Rene&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-March/002984.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-March/002984.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [1]: &lt;a href=&#34;https://en.wikipedia.org/wiki/Feature_engineering&#34;&gt;https://en.wikipedia.org/wiki/Feature_engineering&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]: &lt;a href=&#34;https://arxiv.org/abs/2107.05322&#34;&gt;https://arxiv.org/abs/2107.05322&lt;/a&gt;&lt;br/&gt;&amp;gt; [3]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-September/003219.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2021-September/003219.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [4]:  &lt;a href=&#34;https://en.wikipedia.org/wiki/Harmonic_mean&#34;&gt;https://en.wikipedia.org/wiki/Harmonic_mean&lt;/a&gt;&lt;br/&gt;&amp;gt; [5]: &lt;a href=&#34;https://github.com/ElementsProject/lightning/pull/4771&#34;&gt;https://github.com/ElementsProject/lightning/pull/4771&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Nov 15, 2021 at 4:26 PM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In Lightning pathfinding the two main variables to optimize for are&lt;br/&gt;&amp;gt;&amp;gt; routing fee and reliability. Routing fee is concrete. It is the sat amount&lt;br/&gt;&amp;gt;&amp;gt; that is paid when a payment succeeds. Reliability is a property of a route&lt;br/&gt;&amp;gt;&amp;gt; that can be expressed as a probability. The probability that a route will&lt;br/&gt;&amp;gt;&amp;gt; be successful.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During pathfinding, route options are compared against each other. So for&lt;br/&gt;&amp;gt;&amp;gt; example:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Route A: fee 10 sat, success probability 50%&lt;br/&gt;&amp;gt;&amp;gt; Route B: fee 20 sat, success probability 80%&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Which one is the better route? That depends on user preference. A patient&lt;br/&gt;&amp;gt;&amp;gt; user will probably go for route A in the hope of saving on fees whereas for&lt;br/&gt;&amp;gt;&amp;gt; a time-sensitive payment route B looks better.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; It would be great to offer this trade-off to the user in a simple way.&lt;br/&gt;&amp;gt;&amp;gt; Preferably a single [0, 1] value that controls the selection process. At 0,&lt;br/&gt;&amp;gt;&amp;gt; the route is only optimized for fees and probabilities are ignored&lt;br/&gt;&amp;gt;&amp;gt; completely. At 1, the route is only optimized for reliability and fees are&lt;br/&gt;&amp;gt;&amp;gt; ignored completely.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; But how to choose between the routes A and B for a value somewhere in&lt;br/&gt;&amp;gt;&amp;gt; between 0 and 1? For example 0.5 - perfect balance between reliability and&lt;br/&gt;&amp;gt;&amp;gt; fee. But what does that mean exactly?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Anyone got an idea on how to approach this best? I am looking for a&lt;br/&gt;&amp;gt;&amp;gt; simple formula to decide between routes, preferably with a reasonably sound&lt;br/&gt;&amp;gt;&amp;gt; probability-theoretical basis (whatever that means).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.rene-pickhardt.de&#34;&gt;https://www.rene-pickhardt.de&lt;/a&gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211115/42fe9021/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211115/42fe9021/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:04:25Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsg2lhshy7ah2mzh83eg9tnaext5xwjt5ucpfutrc6tr78l6dfke9czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jf5adgz</id>
    
      <title type="html">📅 Original date posted:2021-11-15 📝 Original message: It ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsg2lhshy7ah2mzh83eg9tnaext5xwjt5ucpfutrc6tr78l6dfke9czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jf5adgz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrqmjw5y4srrct3mtvvrxe9hf9nj3chqf6nm6nqq4edse5vk8e23sltxe9n&#39;&gt;nevent1q…xe9n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-11-15&lt;br/&gt;📝 Original message:&lt;br/&gt;It seems to me there can be no such law unless P=NP. Which would also imply&lt;br/&gt;Bitcoin is worthless.&lt;br/&gt;&lt;br/&gt;Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; schrieb am Mo., 15. Nov. 2021, 13:44:&lt;br/&gt;&lt;br/&gt;&amp;gt; One direction that I explored is to start with a statement by the user in&lt;br/&gt;&amp;gt; this form:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;If there is a route with a success probability of 50%, then I am willing&lt;br/&gt;&amp;gt; to pay up to 1.8x the routing fee for an alternative route that has a 80%&lt;br/&gt;&amp;gt; success probability&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I like this because it isn&amp;#39;t an abstract weight or factor. It is actually&lt;br/&gt;&amp;gt; clear what this means.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What I didn&amp;#39;t yet succeed in is to find a model where I can plug in 50%,&lt;br/&gt;&amp;gt; 80% and 1.8x and generalizes it to arbitrary inputs A% and B%. But it seems&lt;br/&gt;&amp;gt; to me that there must be some probabilistic equation / law / rule / theorem&lt;br/&gt;&amp;gt; / ... that can support this.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Joost.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Mon, Nov 15, 2021 at 4:25 PM Joost Jager &amp;lt;joost.jager at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In Lightning pathfinding the two main variables to optimize for are&lt;br/&gt;&amp;gt;&amp;gt; routing fee and reliability. Routing fee is concrete. It is the sat amount&lt;br/&gt;&amp;gt;&amp;gt; that is paid when a payment succeeds. Reliability is a property of a route&lt;br/&gt;&amp;gt;&amp;gt; that can be expressed as a probability. The probability that a route will&lt;br/&gt;&amp;gt;&amp;gt; be successful.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; During pathfinding, route options are compared against each other. So for&lt;br/&gt;&amp;gt;&amp;gt; example:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Route A: fee 10 sat, success probability 50%&lt;br/&gt;&amp;gt;&amp;gt; Route B: fee 20 sat, success probability 80%&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Which one is the better route? That depends on user preference. A patient&lt;br/&gt;&amp;gt;&amp;gt; user will probably go for route A in the hope of saving on fees whereas for&lt;br/&gt;&amp;gt;&amp;gt; a time-sensitive payment route B looks better.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; It would be great to offer this trade-off to the user in a simple way.&lt;br/&gt;&amp;gt;&amp;gt; Preferably a single [0, 1] value that controls the selection process. At 0,&lt;br/&gt;&amp;gt;&amp;gt; the route is only optimized for fees and probabilities are ignored&lt;br/&gt;&amp;gt;&amp;gt; completely. At 1, the route is only optimized for reliability and fees are&lt;br/&gt;&amp;gt;&amp;gt; ignored completely.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; But how to choose between the routes A and B for a value somewhere in&lt;br/&gt;&amp;gt;&amp;gt; between 0 and 1? For example 0.5 - perfect balance between reliability and&lt;br/&gt;&amp;gt;&amp;gt; fee. But what does that mean exactly?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Anyone got an idea on how to approach this best? I am looking for a&lt;br/&gt;&amp;gt;&amp;gt; simple formula to decide between routes, preferably with a reasonably sound&lt;br/&gt;&amp;gt;&amp;gt; probability-theoretical basis (whatever that means).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Joost&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211115/3533a287/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211115/3533a287/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:04:25Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs8a9twgkjanq67gqenq8h0w4upajcfzm262zufxdf50726wh5qlkgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340js6ay7k</id>
    
      <title type="html">📅 Original date posted:2021-08-30 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs8a9twgkjanq67gqenq8h0w4upajcfzm262zufxdf50726wh5qlkgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340js6ay7k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgu7dt508qphvurrw43yat3l6vud48s7rg23m7esgmf90petm6frcdyjpaj&#39;&gt;nevent1q…jpaj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-30&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zmn!&lt;br/&gt;&lt;br/&gt;While you have some interesting thoughts about the implementation of&lt;br/&gt;min-cost flow based routing, I feel that there are at least two grave&lt;br/&gt;misunderstandings here:&lt;br/&gt;&lt;br/&gt;First, the problem with the base-fee or any similar constant is that&lt;br/&gt;they make the fee function concave at the point where the flow&lt;br/&gt;increases from 0 to 1. That is, there is a jump from 0 to&lt;br/&gt;base-fee&#43;1*prop_fee or similar, and the function does increase slower&lt;br/&gt;from there. This is the case for any function that includes a constant&lt;br/&gt;per edge that is only paid IF there is non-zero flow along that edge.&lt;br/&gt;&lt;br/&gt;Second, while there might be additional problems in the disect-phase&lt;br/&gt;(which I am sure can be handled by a plethora of techniques), the fact&lt;br/&gt;remains that the min-cost flow problem itself is NP-hard when the&lt;br/&gt;cost-function is of this form.&lt;br/&gt;&lt;br/&gt;I realise that this is a fairly theoretical term, so let me shortly&lt;br/&gt;describe what it means: We know (there is a simple mathematical proof&lt;br/&gt;for this, see reference in our paper) that if we could find an&lt;br/&gt;algorithm that solves the min-cost flow problem ON ALL GRAPHS for all&lt;br/&gt;cost-functions of this form (basically, a constant per edge) in&lt;br/&gt;polynomial time, we could then use this algorithm to solve ANY problem&lt;br/&gt;in NP in polynomial time. This means, we would have an algorithm that&lt;br/&gt;can find a solution to any problem in polynomial time whose solutions&lt;br/&gt;can be VERIFIED in polynomial time. Because there are thousands of&lt;br/&gt;problems of this kind that the smartest people in the world have tried&lt;br/&gt;to solve for decaded without success (and just one success would be&lt;br/&gt;enough to solve all of them!), it is highly doubtful that such an&lt;br/&gt;algorithm exists. That is why we can be fairly certain that we cannot&lt;br/&gt;in general solve the min-cost flow problem for concave functions in&lt;br/&gt;polynomial time.&lt;br/&gt;&lt;br/&gt;HOWEVER, this does not mean that in practice it isn&amp;#39;t possible to find&lt;br/&gt;good solutions for the subset of problems we are likely to encounter&lt;br/&gt;in our application. It might be that the LN-graph is of a certain&lt;br/&gt;structure that makes finding a solution easier. It is certain that we&lt;br/&gt;do not need the optimal solution at all and approximations will be&lt;br/&gt;easier to find. All we know is that we do know how to solve the&lt;br/&gt;problem generally for convex functions, and that we are very confident&lt;br/&gt;that we cannot in general solve it optimally for concave functions.&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;Am Mo., 30. Aug. 2021 um 12:58 Uhr schrieb ZmnSCPxj via Lightning-dev&lt;br/&gt;&amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Good morning list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that the cost function defined in Pickhard-Richter&lt;br/&gt;&amp;gt; can in fact include a base fee:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     -log(success_probability) &#43; fudging_factor * amount * prop_fee &#43; fudging_factor * base_fee&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (Rant: why do mathists prefer single-symbol var names, in software&lt;br/&gt;&amp;gt; engineering there is a strong injunction **against** single-char&lt;br/&gt;&amp;gt; var names, with exceptions for simple numeric iteration loop vars,&lt;br/&gt;&amp;gt; I mean keeping track of the meaning of each single-symbol var name&lt;br/&gt;&amp;gt; takes up working memory space, which is fairly limited on a wetware&lt;br/&gt;&amp;gt; CPU, which is precisely why in software engineering there is an&lt;br/&gt;&amp;gt; injunction against single-char var names, srsly.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that the above is &amp;#34;convex&amp;#34;, as the `fudging_factor`&lt;br/&gt;&amp;gt; for a run will be constant, and the `base_fee` for the channel&lt;br/&gt;&amp;gt; would also be constant, and since it seems to me, naively, that&lt;br/&gt;&amp;gt; the paper defines &amp;#34;convex&amp;#34; as &amp;#34;the second derivative &amp;gt;= 0 for all&lt;br/&gt;&amp;gt; `amount`&amp;#34;, and since the derivative of a constant is 0, the above&lt;br/&gt;&amp;gt; would still remain convex.&lt;br/&gt;&amp;gt; (I am not a mathist and this conjecture might be completely asinine.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So, it seems to me that the *real* reason for `#zerobasefee` is&lt;br/&gt;&amp;gt; not that the **mincostflow** algorithm cannot handle non-zero `base_fee`,&lt;br/&gt;&amp;gt; but rather, the **disect** phase afterwards cannot handle non-zero&lt;br/&gt;&amp;gt; `base_fee`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, suppose the minflowcost algorithm were instructed to&lt;br/&gt;&amp;gt; deliver 3,000msat from `S` to `D`, and returned the following flow:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     S --&amp;gt;3000--&amp;gt; A -&amp;gt;1000-&amp;gt; B&lt;br/&gt;&amp;gt;                  |          |&lt;br/&gt;&amp;gt;                  |        1000&lt;br/&gt;&amp;gt;                  |          v&lt;br/&gt;&amp;gt;                  &#43;--&amp;gt;2000-&amp;gt; C -&amp;gt;3000-&amp;gt; D&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the &amp;#34;disect&amp;#34; phase afterwards, the above flow solution would have&lt;br/&gt;&amp;gt; to be split into two sub-payments, a 1000 sub-payment `S-A-B-C-D`&lt;br/&gt;&amp;gt; and a 2000 sub-payment `S-A-C-D`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, this does mean that the base cost for `C-&amp;gt;D` and `S-&amp;gt;A` in&lt;br/&gt;&amp;gt; the above flow will pay *twice* the base cost than what the above&lt;br/&gt;&amp;gt; cost function would have computed, because in reality two independent&lt;br/&gt;&amp;gt; payments pass through those channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, the current Pickhardt-Richter scheme cannot work with non-zero&lt;br/&gt;&amp;gt; base fees if it were modified to consider fees, but not due to the&lt;br/&gt;&amp;gt; mincostflow algorithm, rather because due to the disect algorithm.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Converting Non-Zero Base Fees To Proportional Fees&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An alternative solution would be to optimize for a *maximum* fee&lt;br/&gt;&amp;gt; rather than optimize for the *exact* fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We can do this by virtually splitting up the entire payment into&lt;br/&gt;&amp;gt; smaller bunches of value, and asking mincostflow to solve individual&lt;br/&gt;&amp;gt; bunches rather than individual msats.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, we can decide that the smallest practical HTLC would&lt;br/&gt;&amp;gt; be 1000 msat.&lt;br/&gt;&amp;gt; Let us call this the &amp;#34;payment unit&amp;#34;, and the mincostflow algo&lt;br/&gt;&amp;gt; solves for paying in these payment units instead of 1msat units.&lt;br/&gt;&amp;gt; (Actual implementations would need to have some heuristic or&lt;br/&gt;&amp;gt; reasoned rule-of-thumb assumption on what the smallest practical&lt;br/&gt;&amp;gt; HTLC would be.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In our example, suppose we need to send 2001msat from `S` to `D`,&lt;br/&gt;&amp;gt; with the payment unit being 1000 msat.&lt;br/&gt;&amp;gt; Then we would actually have the mincostflow algorithm work to&lt;br/&gt;&amp;gt; deliver 3 payment units (3 * 1000msat) from `S` to `D`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let us suppose that the mincostflow algorithm returns the following&lt;br/&gt;&amp;gt; flow:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     S --&amp;gt;3-----&amp;gt; A -&amp;gt;1----&amp;gt; B&lt;br/&gt;&amp;gt;                  |          |&lt;br/&gt;&amp;gt;                  |        1 |&lt;br/&gt;&amp;gt;                  |          v&lt;br/&gt;&amp;gt;                  &#43;--&amp;gt;2----&amp;gt; C -&amp;gt;3----&amp;gt; D&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Actually, what the mincostflow algorithm uses as a cost function&lt;br/&gt;&amp;gt; would be:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     -log(success_probability) &#43; fudging_factor * amount * prop_fee * payment_unit &#43; fudging_factor * base_fee * amount&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     == -log(success_probability) &#43; fudging_factor * amount * (prop_fee * payment_unit &#43; base_fee)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     where: amount is in units of 1000msat, our smallest practical HTLC.&lt;br/&gt;&amp;gt;            payment_unit is the unit, i.e. 1000msat.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What the above means is that the mincostflow algorithm *allocates*&lt;br/&gt;&amp;gt; `3 * base_fee` for `C-&amp;gt;D`, since the `amount` flowing through&lt;br/&gt;&amp;gt; `C-&amp;gt;D` would be 3.&lt;br/&gt;&amp;gt; However, when we pass the above flow to the disect algorithm, it&lt;br/&gt;&amp;gt; would actually only split this into 2 sub-payments, so the&lt;br/&gt;&amp;gt; actual payment plan would only pay `2 * base_fee` for the&lt;br/&gt;&amp;gt; `C-&amp;gt;D` leg on both sub-payments.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short, this effectively converts the base fee to a proportional&lt;br/&gt;&amp;gt; fee, removing the zerobasfee requirement imposed by the disect&lt;br/&gt;&amp;gt; algorithm.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, the cost computed by the mincostflow algorithm is really a&lt;br/&gt;&amp;gt; maximum cost budget that the subsequent disect algorithm could later&lt;br/&gt;&amp;gt; spend.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In effect, this converts the base fee to a proportional fee.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This may be acceptable in practice.&lt;br/&gt;&amp;gt; This approximation has a bias against non-zerobasefee --- it would&lt;br/&gt;&amp;gt; treat those channels as being far more expensive than they actually&lt;br/&gt;&amp;gt; would end up being in an *actual* payment attempt --- but at least&lt;br/&gt;&amp;gt; does not *require* zerobasefee.&lt;br/&gt;&amp;gt; It would be able to still use non-zerobasefee channels if those are&lt;br/&gt;&amp;gt; absolutely required to reach the destination.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This should at least help create a practical payment algorithm that&lt;br/&gt;&amp;gt; handles current LN with nonzerobasefee, and provide an impetus&lt;br/&gt;&amp;gt; towards making zerobasefee a reality.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that this approximation would be non-optimal --- there may&lt;br/&gt;&amp;gt; be solutions that provide lower costs than the output of this&lt;br/&gt;&amp;gt; approximation would provide.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It may be practical to have the payment unit be adjustable by a&lt;br/&gt;&amp;gt; higher-level (but still automated) process.&lt;br/&gt;&amp;gt; For example, it may be considered that having more than 500 splits&lt;br/&gt;&amp;gt; would be heuristically determined to be impractical, in which&lt;br/&gt;&amp;gt; case the payment unit could be the actual amount divided by 500&lt;br/&gt;&amp;gt; rounded up.&lt;br/&gt;&amp;gt; Then if that results in extreme overestimation of base costs&lt;br/&gt;&amp;gt; (i.e. the subsequent disect stage results in far fewer than 500&lt;br/&gt;&amp;gt; splits) the payment unit could be adjusted upwards.&lt;br/&gt;&amp;gt; Similarly, if that results in a payment plan that has high&lt;br/&gt;&amp;gt; base fees, the payment unit could be adjusted downwrds.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Similarly, having particular split amounts is helpful to reduce&lt;br/&gt;&amp;gt; the ability of intermediate nodes snooping on payment amounts,&lt;br/&gt;&amp;gt; so having a particular fixed payment unit may also be useful&lt;br/&gt;&amp;gt; nevertheless, even if this approximation is otherwise undesirable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, in the above example, we just send 3 sub-payments&lt;br/&gt;&amp;gt; instead of the minimum 2, so that every sub-payment is always&lt;br/&gt;&amp;gt; uniformly 1000msat.&lt;br/&gt;&amp;gt; This leaks the least amount of information to intermediate nodes,&lt;br/&gt;&amp;gt; especially after payment decorrelation is widely deployed.&lt;br/&gt;&amp;gt; (this is the same principle for why a uniform unit amount is&lt;br/&gt;&amp;gt; needed in practical CoinJoin implementations; it increases the&lt;br/&gt;&amp;gt; anonymity set of individual sub-payments.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This would be helped greatly by payment decorrelation;&lt;br/&gt;&amp;gt; intermediate nodes would remain uncertain that multiple&lt;br/&gt;&amp;gt; HTLCs with the same amount and the same in-channel and&lt;br/&gt;&amp;gt; out-channel are from the same overall payment or not.&lt;br/&gt;&amp;gt; Assuming many software uses the same payment unit consistently,&lt;br/&gt;&amp;gt; less information can be extracted by surveillors, and the&lt;br/&gt;&amp;gt; increased cost may be considered justifiable in paying for&lt;br/&gt;&amp;gt; additional privacy.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Whole-flow Payments&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose we were to instead modify the LN protocol such that,&lt;br/&gt;&amp;gt; instead of MPP having individual sub-payments that split at the&lt;br/&gt;&amp;gt; source and join at the destination, we allow the source to&lt;br/&gt;&amp;gt; instruct arbitrary intermediate nodes to join and/or split&lt;br/&gt;&amp;gt; payments.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, suppose LN allowed the source to indicate to arbitrary&lt;br/&gt;&amp;gt; forwarding nodes to split payments and join them.&lt;br/&gt;&amp;gt; (This would require nearly all nodes to upgrade, which may be&lt;br/&gt;&amp;gt; impractical, but let us consider its implications first without&lt;br/&gt;&amp;gt; committing to actually doing this.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A node that is a join node would be instructed to wait for all&lt;br/&gt;&amp;gt; incoming HTLCs to arrive before they create any outgoing&lt;br/&gt;&amp;gt; HTLCs.&lt;br/&gt;&amp;gt; A node that is a split node would make more than one outgoing&lt;br/&gt;&amp;gt; HTLCs.&lt;br/&gt;&amp;gt; Forwarding nodes can be both join and split nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This would allow the output of the mincostflow algorithm to be&lt;br/&gt;&amp;gt; used directly, without the problematic disect stage.&lt;br/&gt;&amp;gt; Nodes that have more than one in-flow would be join nodes,&lt;br/&gt;&amp;gt; while nodes with more than one out-flow would be split nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Returning to the example:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     S --&amp;gt;3000--&amp;gt; A -&amp;gt;1000-&amp;gt; B&lt;br/&gt;&amp;gt;                  |          |&lt;br/&gt;&amp;gt;                  |        1000&lt;br/&gt;&amp;gt;                  |          v&lt;br/&gt;&amp;gt;                  &#43;--&amp;gt;2000-&amp;gt; C -&amp;gt;3000-&amp;gt; D&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the above, `S` sends a *single* payment out on channel&lt;br/&gt;&amp;gt; `S-&amp;gt;A`, and instructs `A` to split the payment.&lt;br/&gt;&amp;gt; Then `S` also instructs `C` to join two payments, resulting&lt;br/&gt;&amp;gt; in a single HTLC out on `C-&amp;gt;D` if `C` receives on both&lt;br/&gt;&amp;gt; `A-&amp;gt;C` and `B-&amp;gt;C`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The effect is that, for a single payment plan (presented as a&lt;br/&gt;&amp;gt; flow, outputted by a mincostflow algorithm) for each channel&lt;br/&gt;&amp;gt; with nonzero flow, there would only be one HTLC that gets paid&lt;br/&gt;&amp;gt; for using a single `base_fee`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Then, the base fee computed by the cost function would be exact&lt;br/&gt;&amp;gt; and there would be no underestimation of the base fee for&lt;br/&gt;&amp;gt; non-zerobasefee channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let us then consider the practicality of this scheme.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If a hop were to fail to deliver, then some join nodes would&lt;br/&gt;&amp;gt; be left hanging, waiting for an incoming HTLC that will not&lt;br/&gt;&amp;gt; arrive.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The failure would have to be handled by a split node, when it&lt;br/&gt;&amp;gt; receives a `update_fail_htlc`.&lt;br/&gt;&amp;gt; That split node cannot propagate the failure backwards to the&lt;br/&gt;&amp;gt; source, since it would still have other outgoing HTLCs in&lt;br/&gt;&amp;gt; play, which it cannot safely ignore; it can only propagate&lt;br/&gt;&amp;gt; the failure backwards if all the other outgoing HTLCs also&lt;br/&gt;&amp;gt; fail.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To support this, a split node could give a request-to-fail&lt;br/&gt;&amp;gt; signal to its other outgoing HTLCs.&lt;br/&gt;&amp;gt; Then, any other join nodes still waiting for an incoming&lt;br/&gt;&amp;gt; HTLC (and would not yet have created any outgoing HTLCs,&lt;br/&gt;&amp;gt; or for the destination, would not have claimed any incoming&lt;br/&gt;&amp;gt; HTLCs) would fail all its incoming HTLCs.&lt;br/&gt;&amp;gt; Otherwise, an intermediate node receiving a request-to-fail&lt;br/&gt;&amp;gt; signal from any incoming HTLCs would simply propagate&lt;br/&gt;&amp;gt; this request-to-fail outwards to all its outgoing HTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This implies that for this scheme, if *any* hop fails, the&lt;br/&gt;&amp;gt; entire payment fails and has to be restarted &amp;#34;from the top&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is in contrast with the current scheme of splitting&lt;br/&gt;&amp;gt; only at the source and joining only at the destination.&lt;br/&gt;&amp;gt; In the current LN, if *any* hop of an MPP fails, only the&lt;br/&gt;&amp;gt; sub-payment(s) going through that hop will need to be&lt;br/&gt;&amp;gt; retried.&lt;br/&gt;&amp;gt; Other sub-payment(s) can keep being &amp;#34;in play&amp;#34;, and the&lt;br/&gt;&amp;gt; source, having all the information needed, only needs to&lt;br/&gt;&amp;gt; recompute the failing outgoing payments.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, the same information (particular hops are&lt;br/&gt;&amp;gt; failing) would be propagated back to the source, and the&lt;br/&gt;&amp;gt; source having to recompute the entire flow rather than just&lt;br/&gt;&amp;gt; some subset of the payments is not much worse computationally&lt;br/&gt;&amp;gt; (work is still dominated by `O((m*m&#43;m*n)*log n)` where `m` is&lt;br/&gt;&amp;gt; the channels of the *entire network* and `n` is the nodes&lt;br/&gt;&amp;gt; of the *entire network*, amount is just a piddling little&lt;br/&gt;&amp;gt; `O(log(u))` term).&lt;br/&gt;&amp;gt; It also removes the need to virtually reduce the capacity of&lt;br/&gt;&amp;gt; intermediate hops while other sub-payments are in play&lt;br/&gt;&amp;gt; (however, a practical implementation would need to consider&lt;br/&gt;&amp;gt; the possibility of multiple *simultaneous* outgoing payments&lt;br/&gt;&amp;gt; anyway and would still retain this reduction of capacity in&lt;br/&gt;&amp;gt; case a new parallel outgoing payment is triggered while one&lt;br/&gt;&amp;gt; is still ongoing).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This leads us to some fairly interesting choices:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * [ ] Whole-flow payment is a brilliant idea and we should&lt;br/&gt;&amp;gt;   totally do it.  `#deletethezerobasefeedebate`&lt;br/&gt;&amp;gt; * [ ] Whole-flow payment is a horrible idea and we should&lt;br/&gt;&amp;gt;   totally not do it.&lt;br/&gt;&amp;gt;   * [ ] As we can see, the LN community needs to get together&lt;br/&gt;&amp;gt;     for better payment success, and supporting whole-flow&lt;br/&gt;&amp;gt;     payments is worse than setting `basefee=0`. `#zerobasefee`&lt;br/&gt;&amp;gt;   * [ ] As we can see, the current LN provides a vital service&lt;br/&gt;&amp;gt;     (partial failure of MPP) and intermediate nodes need to be&lt;br/&gt;&amp;gt;     compensated for this service.  `#nonzerobasefee`&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;
    </content>
    <updated>2023-06-09T13:03:38Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs8675avwrmkafqn2p6lkxku0znv8du3u0xu2z3rhtlgn7mnzf27lgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jx093cy</id>
    
      <title type="html">📅 Original date posted:2021-08-31 📝 Original message: Am ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs8675avwrmkafqn2p6lkxku0znv8du3u0xu2z3rhtlgn7mnzf27lgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jx093cy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9ap37gnhkdpxp3me608j3vs9eh04snrw0ygfs03rs56daw322lqsmaejf2&#39;&gt;nevent1q…ejf2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-31&lt;br/&gt;📝 Original message:&lt;br/&gt;Am Di., 31. Aug. 2021 um 10:29 Uhr schrieb ZmnSCPxj via Lightning-dev&lt;br/&gt;&amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;:&lt;br/&gt;&lt;br/&gt;&amp;gt; For myself, I think a variant of Pickhardt-Richter payments can be created which *adapts to* the reality of the current network where `base_fee &amp;gt; 0` is common, but is biased against `base_fee &amp;gt; 0`, can be a bridge from the current network with `base_fee &amp;gt; 0` and a future with `#zerobasefee`.&lt;br/&gt;&lt;br/&gt;I have been thinking about your idea (at least what I understood of&lt;br/&gt;it) of using amount*prop_fee &#43; amount*base_fee/min_flow_size, where&lt;br/&gt;min_flow_size is a suitable quantization constant (say, 10k or 100k&lt;br/&gt;sats, may also chosen dynamically), as a component of the cost&lt;br/&gt;function, and I am pretty sure it is great at achieving exactly what&lt;br/&gt;you are proposing here. This is a nicely convex (even linear in this&lt;br/&gt;component) function and so it&amp;#39;s easy to find min-cost flows for it. It&lt;br/&gt;solves the problem (that I hadn&amp;#39;t thought about before) that you have&lt;br/&gt;pointed out in splitting flows into HTLCs. If you use&lt;br/&gt;min_flow_size=max_htlc_size, it is even optimal (for this&lt;br/&gt;min_flow_size). If you use a smaller min_flow_size, it is still&lt;br/&gt;optimal for channels with base_fee=0 but overestimates the fee for&lt;br/&gt;channels with base_fee&amp;gt;0, and is less accurate the smaller the&lt;br/&gt;min_flow_size and the larger the base_fee. So it will be biased&lt;br/&gt;against channels with larger base_fee. But notice that with min-cost&lt;br/&gt;flows, we are rarely looking for the cheapest solution anyway, because&lt;br/&gt;these solutions (if they include more than one path) will usually&lt;br/&gt;fully saturate the cheapest channels and thus have very low success&lt;br/&gt;probability. So all in all, I believe you found a great practical&lt;br/&gt;solution for this debate. Everybody is free to use any base_fee they&lt;br/&gt;chose, we get a workable cost function, and I conjecture that&lt;br/&gt;economics will convince most people to choose a zero or low base_fee.&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;  Stefan
    </content>
    <updated>2023-06-09T13:03:36Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqstx5w5nu8arwt4a6e007nqd8sd8t6rhmwd54a0dxmtqavkhns2huszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j8y9c83</id>
    
      <title type="html">📅 Original date posted:2021-08-24 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqstx5w5nu8arwt4a6e007nqd8sd8t6rhmwd54a0dxmtqavkhns2huszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j8y9c83" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9fy2v5jqcet2ys23jzcrnh3h9cyzcjwpf2use8yf6hx70rnesn3cluh3sy&#39;&gt;nevent1q…h3sy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-24&lt;br/&gt;📝 Original message:&lt;br/&gt;Good Morning Zmn!&lt;br/&gt;&lt;br/&gt;If you&amp;#39;d like to understand  the min-cost flow problem and algorithms&lt;br/&gt;better, I would really recommend the textbook we have been citing&lt;br/&gt;throughout the paper.&lt;br/&gt;&lt;br/&gt;The algorithm you have found has a few shortcomings. It&amp;#39;ll only work for&lt;br/&gt;the linear min-cost flow problem, and it is very slow. In reality, we need&lt;br/&gt;to deal with convex cost functions, and the algorithm we have used so far&lt;br/&gt;uses an approach called capacity scaling in order to be much faster. It is&lt;br/&gt;indeed complex enough that it has taken us about two months to understand&lt;br/&gt;and implement it, discovering a nice heuristic in the process of making&lt;br/&gt;mistakes.&lt;br/&gt;&lt;br/&gt;Separable in this context means that you can simply add up the costs of the&lt;br/&gt;edges to get the total costs. On second thought, your definition would&lt;br/&gt;probably work here , by redefining adding up.&lt;br/&gt;&lt;br/&gt;Convex here means that for any two amounts x, y, the cost function f in the&lt;br/&gt;interval x, y does not lie below the line connecting the two points (x,&lt;br/&gt;f(x)) and (y, f(y)). The intuition here is that a linear approximation&lt;br/&gt;never overestimates the real cost. I guess one would need a more involved&lt;br/&gt;definition for your more complex coordinates.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; schrieb am Di., 24. Aug. 2021, 01:06:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Stefan,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi Zmn! That is some amazing lateral thinking you have been applying&lt;br/&gt;&amp;gt; there. I&amp;#39;m quite certain I haven&amp;#39;t understood everything fully, but it has&lt;br/&gt;&amp;gt; been highly entertaining to read. Will have to give it a closer read when I&lt;br/&gt;&amp;gt; get some time.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a first impression, here are some preliminary observations: While I&lt;br/&gt;&amp;gt; highly like the Haskell-style datatype, and the algorithm we use does&lt;br/&gt;&amp;gt; mostly use Dijkstra pathfinding, I think what is really important in your&lt;br/&gt;&amp;gt; definition is the computeCost definition. This is what we would call the&lt;br/&gt;&amp;gt; cost function IIUC, and in order to be able to solve min-cost flow problems&lt;br/&gt;&amp;gt; it generally has to be separable and convex. I believe your datatype merely&lt;br/&gt;&amp;gt; hides the fact that it is neither.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Well, it really depends on what min flow cost algorithms actually assume&lt;br/&gt;&amp;gt; of the &amp;#34;numbers&amp;#34; being used.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For instance, it is well known that the Dijkstra-A\*-Greedy family of&lt;br/&gt;&amp;gt; algorithms do not handle &amp;#34;negative costs&amp;#34;.&lt;br/&gt;&amp;gt; What it really means is that the algorithms assume:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     a &#43; b &amp;gt;= a&lt;br/&gt;&amp;gt;     a &#43; b &amp;gt;= b&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This holds if `a` and `b` are naturals (0 or positive), but not if they&lt;br/&gt;&amp;gt; are integers.&lt;br/&gt;&amp;gt; 1 &#43; -1 = 0, and 0 &amp;gt;= 1 is not true, thus the type for costs in those&lt;br/&gt;&amp;gt; algorithms cannot be integer types, they have to be naturals.&lt;br/&gt;&amp;gt; However if you restrict the type to naturals,  `a &#43; b &amp;gt;= a` holds, and&lt;br/&gt;&amp;gt; thus Dijkstra and its family of algorithms work.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, if you are going to use Dijkstra-A\*-Greedy, you &amp;#34;only&amp;#34; need to have&lt;br/&gt;&amp;gt; the following &amp;#34;operations&amp;#34;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     `&#43;` :: Cost -&amp;gt; Cost -&amp;gt; Cost&lt;br/&gt;&amp;gt;     `&amp;lt;` :: Cost -&amp;gt; Cost -&amp;gt; Bool&lt;br/&gt;&amp;gt;     zero :: Cost&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the following derived operations:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     a &amp;gt; b = b &amp;lt; a&lt;br/&gt;&amp;gt;     a &amp;gt;= b = not (a &amp;lt; b)&lt;br/&gt;&amp;gt;     a &amp;lt;= b = not (b &amp;lt; a)&lt;br/&gt;&amp;gt;     a == b = (a &amp;gt;= b) &amp;amp;&amp;amp; (a &amp;lt;= b)&lt;br/&gt;&amp;gt;     a /= b = (a &amp;lt; b) || (a &amp;gt; b)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And following the laws:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     forall (a :: Cost) =&amp;gt; a &#43; zero == a&lt;br/&gt;&amp;gt;     forall (a :: Cost) =&amp;gt; zero &#43; a == a&lt;br/&gt;&amp;gt;     forall (a :: Cost, b :: Cost) =&amp;gt; a &#43; b == b &#43; a&lt;br/&gt;&amp;gt;     forall (a :: Cost, b :: Cost, c :: Cost) =&amp;gt; (a &#43; b) &#43; c == a &#43; (b &#43; c)&lt;br/&gt;&amp;gt;     forall (a :: Cost, b :: Cost) =&amp;gt; a &#43; b &amp;gt;= a&lt;br/&gt;&amp;gt;     forall (a :: Cost, b :: Cost) =&amp;gt; a &#43; b &amp;gt;= b&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As a non-mathist I have no idea what &amp;#34;separable&amp;#34; and &amp;#34;convex&amp;#34; actually&lt;br/&gt;&amp;gt; mean.&lt;br/&gt;&amp;gt; Basic search for &amp;#34;convex&amp;#34; and &amp;#34;concave&amp;#34; tends to show up information in&lt;br/&gt;&amp;gt; geometry, which I think is not related (though it is possible there is some&lt;br/&gt;&amp;gt; extension of the geometric concept to pure number theory?).&lt;br/&gt;&amp;gt; And definitions on &amp;#34;separable&amp;#34; are not understandable by me, either.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What exactly are the operations involved, and what are the laws those&lt;br/&gt;&amp;gt; operations must follow, for the data type to be &amp;#34;separable&amp;#34; and &amp;#34;convex&amp;#34;&lt;br/&gt;&amp;gt; (vs.&amp;#34;concave&amp;#34;)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I guess my problem as well is that I cannot find easy-to-understand&lt;br/&gt;&amp;gt; algorithms for min cost flow --- I can find discussions on the min cost&lt;br/&gt;&amp;gt; flow &amp;#34;problem&amp;#34;, and some allusions to solutions to that problem, but once I&lt;br/&gt;&amp;gt; try looking into algorithms it gets quite a bit more complicated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Basically: do I need these operations?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     `*` :: Cost -&amp;gt; Cost -&amp;gt; Cost&lt;br/&gt;&amp;gt;     `/` :: Cost -&amp;gt; Cost -&amp;gt; Cost --- or Maybe Cost&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If not, then why cannot `type Cost = UnifiedCost`?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For example, this page:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://www.topcoder.com/thrive/articles/Minimum%20Cost%20Flow%20Part%20Two:%20Algorithms&#34;&gt;https://www.topcoder.com/thrive/articles/Minimum%20Cost%20Flow%20Part%20Two:%20Algorithms&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Includes this pseudocode:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     Transform network G by adding source and sink&lt;br/&gt;&amp;gt;     Initial flow x is zero&lt;br/&gt;&amp;gt;     while ( Gx contains a path from s to t ) do&lt;br/&gt;&amp;gt;         Find any shortest path P from s to t&lt;br/&gt;&amp;gt;         Augment current flow x along P&lt;br/&gt;&amp;gt;         update Gx&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If &amp;#34;find any shortest path&amp;#34; is implemented using Dijkstra-A\*-Greedy, then&lt;br/&gt;&amp;gt; that does not require `Cost` to be an actual numeric type, they just&lt;br/&gt;&amp;gt; require a type that provides `&#43;`, `&amp;lt;`, and `zero`, all of which follow the&lt;br/&gt;&amp;gt; laws I pointed out, *and no more than those*.&lt;br/&gt;&amp;gt; `UnifiedCost` follows those laws (tough note that my definition of `zero`&lt;br/&gt;&amp;gt; has a bug, `successProbability` should be `1.0` not `0`).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short --- the output of the cost function is a `UnifiedCost` structure&lt;br/&gt;&amp;gt; and ***not*** a number (in the traditional sense).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Basically, I am deconstructing numbers here and trying to figure out what&lt;br/&gt;&amp;gt; makes them tick, and seeing if I can use a different type to provide the&lt;br/&gt;&amp;gt; &amp;#34;tick&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210824/75aad701/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210824/75aad701/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqst49whmmugqs7kmzsqs6a9exkk57958p4snx08fvfdp28rudlaszszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340je8p78n</id>
    
      <title type="html">📅 Original date posted:2021-08-21 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqst49whmmugqs7kmzsqs6a9exkk57958p4snx08fvfdp28rudlaszszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340je8p78n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrts3k8qzwayvpnclga02a8elvkvkv26fjs59y0hafvdlp075ftlq96nxh3&#39;&gt;nevent1q…nxh3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zmn! That is some amazing lateral thinking you have been applying there.&lt;br/&gt;I&amp;#39;m quite certain I haven&amp;#39;t understood everything fully, but it has been&lt;br/&gt;highly entertaining to read. Will have to give it a closer read when I get&lt;br/&gt;some time.&lt;br/&gt;&lt;br/&gt;As a first impression, here are some preliminary observations: While I&lt;br/&gt;highly like the Haskell-style datatype, and the algorithm we use does&lt;br/&gt;mostly use Dijkstra pathfinding, I think what is really important in your&lt;br/&gt;definition is the computeCost definition. This is what we would call the&lt;br/&gt;cost function IIUC, and in order to be able to solve min-cost flow problems&lt;br/&gt;it generally has to be separable and convex. I believe your datatype merely&lt;br/&gt;hides the fact that it is neither.&lt;br/&gt;&lt;br/&gt;Intuitively, I think that any cost function that implies a fixed cost (that&lt;br/&gt;is, independent of the amount, though it might be different for every edge)&lt;br/&gt;per edge is concave and in theory problematic for min-cost flow algorithms&lt;br/&gt;because you could reduce some kind of NP-hard selection problem to it. I&lt;br/&gt;believe that applies to most if not all of your ideas in the text. Again, I&lt;br/&gt;think we should think more about how much of a problem that is in practice,&lt;br/&gt;because we do have tools like approximation and parameterized algorithms,&lt;br/&gt;as well as heuristics, and I also believe that, say, a moderate base fee&lt;br/&gt;will not change the optimal flow much, because this will always prefer&lt;br/&gt;large Htlcs anyway in order to optimize probability.&lt;br/&gt;&lt;br/&gt;I am really grateful that you have been taking the time to read and&lt;br/&gt;understand our paper and have been thinking further in this fascinating&lt;br/&gt;way. I am certain good things will come of it in time.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; schrieb am Sa., 21. Aug. 2021, 03:49:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Alternative Pathfinding?&lt;br/&gt;&amp;gt; &amp;gt;     ========================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Or to put this section more succinctly: Why should cost be a number?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What operations do the minimum cost flow algorithms demand of this thing&lt;br/&gt;&amp;gt; called &amp;#34;cost&amp;#34;, and can we provide those operations using something which is&lt;br/&gt;&amp;gt; not a number but is instead a different structure?&lt;br/&gt;&amp;gt; What is the minimal interface that the mincostflow algo demands of this&lt;br/&gt;&amp;gt; &amp;#34;cost&amp;#34; datatype?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210821/02ef209c/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210821/02ef209c/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:33Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqswp3hh0t290l834vkmtu3qlu3eg6fjh5e27qqs8ecy5mnzmn4z9fgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jzgjttc</id>
    
      <title type="html">📅 Original date posted:2021-08-17 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqswp3hh0t290l834vkmtu3qlu3eg6fjh5e27qqs8ecy5mnzmn4z9fgzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jzgjttc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv384zxxxmyf8e8t0d8pngkaqddw4l4p72hhumzunus4epnzccrlc7dsclj&#39;&gt;nevent1q…sclj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-17&lt;br/&gt;📝 Original message:&lt;br/&gt;Good morning Zmn!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; schrieb am Mo., 16. Aug. 2021, 10:27:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A reason why I suggest this is that the cost function in actual&lt;br/&gt;&amp;gt; implementation is *already* IMO overloaded.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In particular, actual implementations will have some kind of conversion&lt;br/&gt;&amp;gt; between cltv-delta and fees-at-node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;That&amp;#39;s an interesting aspect. Would this lead to a constant per edge if&lt;br/&gt;incorporated in the cost function? If so, this would lead to another&lt;br/&gt;generally hard problem, which, again, needs to be explored more in the&lt;br/&gt;concrete cases we have here to see if we can still solve/approximate it.&lt;br/&gt;&lt;br/&gt;However, I think that in practice, most users cannot intuitively understand&lt;br/&gt;&amp;gt; `riskfactor`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think they have to. Only people like you who write actual software&lt;br/&gt;probably need to.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Similarly, I think it is easier for users to think in terms of &amp;#34;fee&lt;br/&gt;&amp;gt; budget&amp;#34; instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, algorithms should try to keep costs as low as possible, if&lt;br/&gt;&amp;gt; there are two alternate payment plans that are both below the fee budget,&lt;br/&gt;&amp;gt; the one with lower actual fee is still preferred.&lt;br/&gt;&amp;gt; But perhaps we should focus more on payment success *within some fee and&lt;br/&gt;&amp;gt; timelock budget*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Indeed, as you point out, your real-world experiments you have done have&lt;br/&gt;&amp;gt; involved only probability as cost.&lt;br/&gt;&amp;gt; However, by the paper you claim to have sent 40,000,000,000msat for a cost&lt;br/&gt;&amp;gt; of 814,000msat, or 0.002035% fee percentage, far below the 0.5% default&lt;br/&gt;&amp;gt; `maxfeepercent` we have, which I think is fairly reasonable argument for&lt;br/&gt;&amp;gt; &amp;#34;let us ignore fees and timelocks unless it hits the budget&amp;#34;.&lt;br/&gt;&amp;gt; (on the other hand, those numbers come from a section labelled&lt;br/&gt;&amp;gt; &amp;#34;Simulation&amp;#34;, so that may not reflect the real world experiments you had&lt;br/&gt;&amp;gt; --- what numbers did you get for those?)&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;René is going to publish those results very soon.&lt;br/&gt;&lt;br/&gt;Regarding payment success *within some fee and timelock budget*: the&lt;br/&gt;situation is a little more complex than it appears. As you have pointed&lt;br/&gt;out, at the moment, most of the routes are very cheap (too cheap, IMHO), so&lt;br/&gt;you have to be very unlucky to hit an expensive flow. So in the current&lt;br/&gt;environment, your approach seems to work pretty well, which is also why we&lt;br/&gt;first thought about it.&lt;br/&gt;&lt;br/&gt;Unfortunately, as you know, we have to think adversarially in this domain.&lt;br/&gt;And it is clear that if we simply disregarded fees in routing, people would&lt;br/&gt;try to take advantage of this. If we just set a fee budget, and try again&lt;br/&gt;if it is missed, then I see some problems arise: First, what edges do you&lt;br/&gt;exclude in the next try? Where is that boundary? Second, I am pretty sure&lt;br/&gt;an adversary could design a DOS vector in this way by forcing people to go&lt;br/&gt;through exponentially many min-cost flow rounds (which are not cheap&lt;br/&gt;anyway) excluding only few edges per round.&lt;br/&gt;&lt;br/&gt;Indeed, if you read the paper closely you will have seen that this kind of&lt;br/&gt;problem (optimizing for some cost while staying under a budget for a second&lt;br/&gt;cost) is (weakly) np-hard even for the single path case. So there is some&lt;br/&gt;intuition that this is not as simple as you might imagine it. I personally&lt;br/&gt;think that the Lagrangian style of combining the costs in a linear fashion&lt;br/&gt;is very promising, but you might be successful with more direct methods as&lt;br/&gt;well.&lt;br/&gt;&lt;br/&gt;Is my suggestion not reasonable in practice?&lt;br/&gt;&amp;gt; Is the algorithm runtime too high?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;See above. I don&amp;#39;t know, but I believe it would be hard to make safe&lt;br/&gt;against adversaries. Including the fees in the cost function appears to be&lt;br/&gt;the more holistic approach to me, since min-cost flow algorithms always&lt;br/&gt;give you a globally optimized answer.&lt;br/&gt;&lt;br/&gt;While we certainly need to defer to economic requirements, we *also* need&lt;br/&gt;&amp;gt; to defer to engineering requirements (else Lightning cannot be implemented&lt;br/&gt;&amp;gt; in practice, so any economic benefits it might provide are not achievable&lt;br/&gt;&amp;gt; anyway).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Yes. I wholeheartedly agree. However, I prefer watering down a&lt;br/&gt;mathematically correct solution as needed to building increasingly complex&lt;br/&gt;ad-hoc heuristics.&lt;br/&gt;&lt;br/&gt;As I understand the argument of Matt, we may encounter an engineering&lt;br/&gt;&amp;gt; reason to charge some base fee (or something very much like it), so&lt;br/&gt;&amp;gt; encouraging #zerobasefee *now* might not be the wisest course of action, as&lt;br/&gt;&amp;gt; a future engineering problem may need to be solved with non-zero basefee&lt;br/&gt;&amp;gt; (or something very much like it).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;If we encountered such a reason, we could still encourage something else&lt;br/&gt;IMHO. I do agree that we should not shorten our options by making a&lt;br/&gt;protocol change at this time.&lt;br/&gt;&lt;br/&gt;Best regards,&lt;br/&gt;&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;P. S. : I have been using Clboss for some time now and I am very impressed.&lt;br/&gt;Thank you for your amazing work! I would love a zerobasefee flag, though ;)&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210817/90a07096/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210817/90a07096/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:29Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsgwhpsluk0dz9xk0wf6wrha9xf8n00rpp4dst6l6j6m437395xa3czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j6mscnq</id>
    
      <title type="html">📅 Original date posted:2021-08-16 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsgwhpsluk0dz9xk0wf6wrha9xf8n00rpp4dst6l6j6m437395xa3czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j6mscnq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdfj59k6zky3dvt34mfk9ysxltwmn8lddruhkh5qcn3x5pdvm5sjspxyk5h&#39;&gt;nevent1q…yk5h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-16&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zmn et al.,&lt;br/&gt;&lt;br/&gt;&amp;gt;I propose that the algorithm be modified &amp;gt;as such, that is, it *ignore*&lt;br/&gt;the fee  scheme.&lt;br/&gt;&lt;br/&gt;We actually started out thinking like this in the event we couldn&amp;#39;t find a&lt;br/&gt;proper way to handle fees, and the real world experiments we&amp;#39;ve done so far&lt;br/&gt;have only involved probability costs, no fees at all.&lt;br/&gt;&lt;br/&gt;However, I think it is non-trivial to deal with the many cases in which too&lt;br/&gt;high fees could occur, and in the end the most systematic way of dealing&lt;br/&gt;with them is actually including them in the cost function.&lt;br/&gt;&lt;br/&gt;That said, I agree with Matt that more research needs to be done about the&lt;br/&gt;effect of  base fees on these computations. We do know they make the&lt;br/&gt;problem hard in general, but we might find a way to deal with them&lt;br/&gt;reasonably in practice.&lt;br/&gt;&lt;br/&gt;I tend to agree with AJ, that I don&amp;#39;t  believe the base fee is economically&lt;br/&gt;helpful, but I also think that the market will decide that rather than the&lt;br/&gt;devs (though I would argue for default Zerobasefee in the implementations).&lt;br/&gt;&lt;br/&gt;In my view, nobody is really earning any money with the base fee, so the&lt;br/&gt;discussion is kind of artificial. On the other hand, I would estimate our&lt;br/&gt;approach should lead to liquidity being priced correctly in the&lt;br/&gt;proportional fee instead of the price being undercut by hobbyists as is the&lt;br/&gt;case now. So in the long run I expect our routing method to make running a&lt;br/&gt;well-stocked LN router much more profitable.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Mo., 16. Aug. 2021, 05:15:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning matt and aj,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me cut in here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my reading of the actual paper --- which could be a massive&lt;br/&gt;&amp;gt; misunderstanding, as I can barely understand half the notation, I am more a&lt;br/&gt;&amp;gt; dabbler in software engineering than a mathist --- it seems to me that it&lt;br/&gt;&amp;gt; would be possible to replace the cost function in the planning algorithm&lt;br/&gt;&amp;gt; with *only* the negative-log-probability, which I think is the key point of&lt;br/&gt;&amp;gt; the paper.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, the algorithm can be run in a mode where it *ignores* whatever&lt;br/&gt;&amp;gt; fee scheme forwarding nodes desire.&lt;br/&gt;&amp;gt; (@rene: correct me if I am wrong?)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, the algorithm then gets an extra step after getting a payment&lt;br/&gt;&amp;gt; plan (i.e. how to route multiple sub-payments).&lt;br/&gt;&amp;gt; It looks over the payment plan and if the fees involved are beyond some&lt;br/&gt;&amp;gt; user-defined limit (with, say, a default of 0.5% of the total amount, as&lt;br/&gt;&amp;gt; per the C-Lightning `pay` default), to look at the highest-fee channels in&lt;br/&gt;&amp;gt; the payment plan.&lt;br/&gt;&amp;gt; Then, it can rerun the flow algorithm, telling it to *disallow* the&lt;br/&gt;&amp;gt; highest-fee channels identified if the total fees exceed the fee budget.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that this modification of the algorithm may be sufficient&lt;br/&gt;&amp;gt; to be resilient against any and all future fee scheme we may decide for&lt;br/&gt;&amp;gt; Lightning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This still achieves &amp;#34;optimality&amp;#34; in the sense of the paper, in a way&lt;br/&gt;&amp;gt; similar to what is suggested in the paper.&lt;br/&gt;&amp;gt; The paper suggests to basically ignore gossiped channels with non-zero&lt;br/&gt;&amp;gt; basefee.&lt;br/&gt;&amp;gt; The approach I suggest allows us to *start* without ignoring non-zero&lt;br/&gt;&amp;gt; basefee, but to slowly degrade our view of the network by disallowing&lt;br/&gt;&amp;gt; high-fee (whether high basefee or high propfee) channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210816/f60fa4a3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210816/f60fa4a3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:28Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsy4adf0vcrwtzjaq4fg8vresw2kk2zajeujaw80y38mwg2pz20q8szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jxl0jz5</id>
    
      <title type="html">📅 Original date posted:2021-08-15 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsy4adf0vcrwtzjaq4fg8vresw2kk2zajeujaw80y38mwg2pz20q8szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jxl0jz5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs80cw2zfnxmmcsmwz9qaqlcvs85mv6n7y6umn36qr46qca4adua6s9yjvqc&#39;&gt;nevent1q…jvqc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Good morning Zmn!&lt;br/&gt;&lt;br/&gt;That is indeed precisely what we do. We usually quantize the min-cost flow&lt;br/&gt;into minimum shares of, say, 10kSat to 100kSat. This makes the algorithm&lt;br/&gt;run faster and loses very little precision. It also gives a simple way of&lt;br/&gt;dealing with (reasonable) min-htlc-size values.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;   Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am So., 15. Aug. 2021, 16:03:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning lisa, aj, et al.,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The result is that micropayments have a different payment regime than&lt;br/&gt;&amp;gt; “non-micropayments”, (which may still incentive almost irrational behavior)&lt;br/&gt;&amp;gt; but at least there’s no *loss* felt by node operators for&lt;br/&gt;&amp;gt; handling/supporting low value payments. 10k micropayments is worth 10sats.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It’s also simple to implement and seems rather obvious in retrospect.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems simple to implement for *forwarders*, but I think complicates the&lt;br/&gt;&amp;gt; algorithm described by Pickhardt and Richter?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, the algorithm is targeted towards &amp;#34;large&amp;#34; payments, so&lt;br/&gt;&amp;gt; perhaps the Pickhardt-Richter payment algo can be forced to have some&lt;br/&gt;&amp;gt; minimum split size, and payments below this minimum size are just sent as&lt;br/&gt;&amp;gt; single payments (on the assumption that such micropayments are so small&lt;br/&gt;&amp;gt; that the probability of failure is negligible).&lt;br/&gt;&amp;gt; That is, just have the `pay` command branch based on the payment size, if&lt;br/&gt;&amp;gt; it is below the minimum size, just use the old try-and-try-until-you-die&lt;br/&gt;&amp;gt; algo, otherwise use a variant on the Pickhardt-Richter algo that respects&lt;br/&gt;&amp;gt; this minimum payment size.&lt;br/&gt;&amp;gt; This somewhat implies a minimum on the possible feerate, which we could&lt;br/&gt;&amp;gt; say is 1 ppm, maybe.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So for example, the minimum size could be 1,000,000msat, or 1,000sat.&lt;br/&gt;&amp;gt; If the payment is much larger than that, use the Pickhardt-Richter&lt;br/&gt;&amp;gt; algorithm with zerobasefee.&lt;br/&gt;&amp;gt; If payment is lower than that threshold, just do not split and do&lt;br/&gt;&amp;gt; try-and-try-until-you-die.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210815/df395dd3/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210815/df395dd3/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:03:26Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9znc6ucmvl2x9luxd4aqjk7yxmuh9ruld3d84qs27j9ayftvcf6qzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j5zgsdz</id>
    
      <title type="html">📅 Original date posted:2021-08-21 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9znc6ucmvl2x9luxd4aqjk7yxmuh9ruld3d84qs27j9ayftvcf6qzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j5zgsdz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstg0ne2q0gkm89yx26fghdrs8cmkd340z4c9yravgwhty89wm64lsqdj4rw&#39;&gt;nevent1q…j4rw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-21&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zmn! That is some amazing lateral thinking you have been applying there.&lt;br/&gt;I&amp;#39;m quite certain I haven&amp;#39;t understood everything fully, but it has been&lt;br/&gt;highly entertaining to read. Will have to give it a closer read when I get&lt;br/&gt;some time.&lt;br/&gt;&lt;br/&gt;As a first impression, here are some preliminary observations: While I&lt;br/&gt;highly like the Haskell-style datatype, and the algorithm we use does&lt;br/&gt;mostly use Dijkstra pathfinding, I think what is really important in your&lt;br/&gt;definition is the computeCost definition. This is what we would call the&lt;br/&gt;cost function IIUC, and in order to be able to solve min-cost flow problems&lt;br/&gt;it generally has to be separable and convex. I believe your datatype merely&lt;br/&gt;hides the fact that it is neither.&lt;br/&gt;&lt;br/&gt;Intuitively, I think that any cost function that implies a fixed cost (that&lt;br/&gt;is, independent of the amount, though it might be different for every edge)&lt;br/&gt;per edge is concave and in theory problematic for min-cost flow algorithms&lt;br/&gt;because you could reduce some kind of NP-hard selection problem to it. I&lt;br/&gt;believe that applies to most if not all of your ideas in the text. Again, I&lt;br/&gt;think we should think more about how much of a problem that is in practice,&lt;br/&gt;because we do have tools like approximation and parameterized algorithms,&lt;br/&gt;as well as heuristics, and I also believe that, say, a moderate base fee&lt;br/&gt;will not change the optimal flow much, because this will always prefer&lt;br/&gt;large Htlcs anyway in order to optimize probability.&lt;br/&gt;&lt;br/&gt;I am really grateful that you have been taking the time to read and&lt;br/&gt;understand our paper and have been thinking further in this fascinating&lt;br/&gt;way. I am certain good things will come of it in time.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; schrieb am Sa., 21. Aug. 2021, 03:49:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;     Alternative Pathfinding?&lt;br/&gt;&amp;gt; &amp;gt;     ========================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Or to put this section more succinctly: Why should cost be a number?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What operations do the minimum cost flow algorithms demand of this thing&lt;br/&gt;&amp;gt; called &amp;#34;cost&amp;#34;, and can we provide those operations using something which is&lt;br/&gt;&amp;gt; not a number but is instead a different structure?&lt;br/&gt;&amp;gt; What is the minimal interface that the mincostflow algo demands of this&lt;br/&gt;&amp;gt; &amp;#34;cost&amp;#34; datatype?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210821/02ef209c/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210821/02ef209c/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:41:04Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqszf6zf00gjx85kfp037t3d7z744c803xurn4lthjkevfjzmzvclrszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jh2w835</id>
    
      <title type="html">📅 Original date posted:2021-08-17 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqszf6zf00gjx85kfp037t3d7z744c803xurn4lthjkevfjzmzvclrszyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jh2w835" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvtas0s8n2ywpwvppumdt28m8s24ht70hk5m5p3hpmusgk9uuxh7scq0mx4&#39;&gt;nevent1q…0mx4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-17&lt;br/&gt;📝 Original message:&lt;br/&gt;Good morning Zmn!&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; schrieb am Mo., 16. Aug. 2021, 10:27:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A reason why I suggest this is that the cost function in actual&lt;br/&gt;&amp;gt; implementation is *already* IMO overloaded.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In particular, actual implementations will have some kind of conversion&lt;br/&gt;&amp;gt; between cltv-delta and fees-at-node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;That&amp;#39;s an interesting aspect. Would this lead to a constant per edge if&lt;br/&gt;incorporated in the cost function? If so, this would lead to another&lt;br/&gt;generally hard problem, which, again, needs to be explored more in the&lt;br/&gt;concrete cases we have here to see if we can still solve/approximate it.&lt;br/&gt;&lt;br/&gt;However, I think that in practice, most users cannot intuitively understand&lt;br/&gt;&amp;gt; `riskfactor`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t think they have to. Only people like you who write actual software&lt;br/&gt;probably need to.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Similarly, I think it is easier for users to think in terms of &amp;#34;fee&lt;br/&gt;&amp;gt; budget&amp;#34; instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, algorithms should try to keep costs as low as possible, if&lt;br/&gt;&amp;gt; there are two alternate payment plans that are both below the fee budget,&lt;br/&gt;&amp;gt; the one with lower actual fee is still preferred.&lt;br/&gt;&amp;gt; But perhaps we should focus more on payment success *within some fee and&lt;br/&gt;&amp;gt; timelock budget*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Indeed, as you point out, your real-world experiments you have done have&lt;br/&gt;&amp;gt; involved only probability as cost.&lt;br/&gt;&amp;gt; However, by the paper you claim to have sent 40,000,000,000msat for a cost&lt;br/&gt;&amp;gt; of 814,000msat, or 0.002035% fee percentage, far below the 0.5% default&lt;br/&gt;&amp;gt; `maxfeepercent` we have, which I think is fairly reasonable argument for&lt;br/&gt;&amp;gt; &amp;#34;let us ignore fees and timelocks unless it hits the budget&amp;#34;.&lt;br/&gt;&amp;gt; (on the other hand, those numbers come from a section labelled&lt;br/&gt;&amp;gt; &amp;#34;Simulation&amp;#34;, so that may not reflect the real world experiments you had&lt;br/&gt;&amp;gt; --- what numbers did you get for those?)&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;René is going to publish those results very soon.&lt;br/&gt;&lt;br/&gt;Regarding payment success *within some fee and timelock budget*: the&lt;br/&gt;situation is a little more complex than it appears. As you have pointed&lt;br/&gt;out, at the moment, most of the routes are very cheap (too cheap, IMHO), so&lt;br/&gt;you have to be very unlucky to hit an expensive flow. So in the current&lt;br/&gt;environment, your approach seems to work pretty well, which is also why we&lt;br/&gt;first thought about it.&lt;br/&gt;&lt;br/&gt;Unfortunately, as you know, we have to think adversarially in this domain.&lt;br/&gt;And it is clear that if we simply disregarded fees in routing, people would&lt;br/&gt;try to take advantage of this. If we just set a fee budget, and try again&lt;br/&gt;if it is missed, then I see some problems arise: First, what edges do you&lt;br/&gt;exclude in the next try? Where is that boundary? Second, I am pretty sure&lt;br/&gt;an adversary could design a DOS vector in this way by forcing people to go&lt;br/&gt;through exponentially many min-cost flow rounds (which are not cheap&lt;br/&gt;anyway) excluding only few edges per round.&lt;br/&gt;&lt;br/&gt;Indeed, if you read the paper closely you will have seen that this kind of&lt;br/&gt;problem (optimizing for some cost while staying under a budget for a second&lt;br/&gt;cost) is (weakly) np-hard even for the single path case. So there is some&lt;br/&gt;intuition that this is not as simple as you might imagine it. I personally&lt;br/&gt;think that the Lagrangian style of combining the costs in a linear fashion&lt;br/&gt;is very promising, but you might be successful with more direct methods as&lt;br/&gt;well.&lt;br/&gt;&lt;br/&gt;Is my suggestion not reasonable in practice?&lt;br/&gt;&amp;gt; Is the algorithm runtime too high?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;See above. I don&amp;#39;t know, but I believe it would be hard to make safe&lt;br/&gt;against adversaries. Including the fees in the cost function appears to be&lt;br/&gt;the more holistic approach to me, since min-cost flow algorithms always&lt;br/&gt;give you a globally optimized answer.&lt;br/&gt;&lt;br/&gt;While we certainly need to defer to economic requirements, we *also* need&lt;br/&gt;&amp;gt; to defer to engineering requirements (else Lightning cannot be implemented&lt;br/&gt;&amp;gt; in practice, so any economic benefits it might provide are not achievable&lt;br/&gt;&amp;gt; anyway).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Yes. I wholeheartedly agree. However, I prefer watering down a&lt;br/&gt;mathematically correct solution as needed to building increasingly complex&lt;br/&gt;ad-hoc heuristics.&lt;br/&gt;&lt;br/&gt;As I understand the argument of Matt, we may encounter an engineering&lt;br/&gt;&amp;gt; reason to charge some base fee (or something very much like it), so&lt;br/&gt;&amp;gt; encouraging #zerobasefee *now* might not be the wisest course of action, as&lt;br/&gt;&amp;gt; a future engineering problem may need to be solved with non-zero basefee&lt;br/&gt;&amp;gt; (or something very much like it).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;If we encountered such a reason, we could still encourage something else&lt;br/&gt;IMHO. I do agree that we should not shorten our options by making a&lt;br/&gt;protocol change at this time.&lt;br/&gt;&lt;br/&gt;Best regards,&lt;br/&gt;&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;P. S. : I have been using Clboss for some time now and I am very impressed.&lt;br/&gt;Thank you for your amazing work! I would love a zerobasefee flag, though ;)&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210817/90a07096/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210817/90a07096/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:41:00Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsfnmmhj59q6fwg3wplyh9wrnkjpvduhg5l698s3qhdqpnndattfwczyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jym09ay</id>
    
      <title type="html">📅 Original date posted:2021-08-16 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsfnmmhj59q6fwg3wplyh9wrnkjpvduhg5l698s3qhdqpnndattfwczyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jym09ay" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdadxnsnv69ap0wynk8a6wue300ftvtjmcd74xtfj8fzyxs9y30dgwg2fll&#39;&gt;nevent1q…2fll&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-16&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi Zmn et al.,&lt;br/&gt;&lt;br/&gt;&amp;gt;I propose that the algorithm be modified &amp;gt;as such, that is, it *ignore*&lt;br/&gt;the fee  scheme.&lt;br/&gt;&lt;br/&gt;We actually started out thinking like this in the event we couldn&amp;#39;t find a&lt;br/&gt;proper way to handle fees, and the real world experiments we&amp;#39;ve done so far&lt;br/&gt;have only involved probability costs, no fees at all.&lt;br/&gt;&lt;br/&gt;However, I think it is non-trivial to deal with the many cases in which too&lt;br/&gt;high fees could occur, and in the end the most systematic way of dealing&lt;br/&gt;with them is actually including them in the cost function.&lt;br/&gt;&lt;br/&gt;That said, I agree with Matt that more research needs to be done about the&lt;br/&gt;effect of  base fees on these computations. We do know they make the&lt;br/&gt;problem hard in general, but we might find a way to deal with them&lt;br/&gt;reasonably in practice.&lt;br/&gt;&lt;br/&gt;I tend to agree with AJ, that I don&amp;#39;t  believe the base fee is economically&lt;br/&gt;helpful, but I also think that the market will decide that rather than the&lt;br/&gt;devs (though I would argue for default Zerobasefee in the implementations).&lt;br/&gt;&lt;br/&gt;In my view, nobody is really earning any money with the base fee, so the&lt;br/&gt;discussion is kind of artificial. On the other hand, I would estimate our&lt;br/&gt;approach should lead to liquidity being priced correctly in the&lt;br/&gt;proportional fee instead of the price being undercut by hobbyists as is the&lt;br/&gt;case now. So in the long run I expect our routing method to make running a&lt;br/&gt;well-stocked LN router much more profitable.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Mo., 16. Aug. 2021, 05:15:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning matt and aj,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let me cut in here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From my reading of the actual paper --- which could be a massive&lt;br/&gt;&amp;gt; misunderstanding, as I can barely understand half the notation, I am more a&lt;br/&gt;&amp;gt; dabbler in software engineering than a mathist --- it seems to me that it&lt;br/&gt;&amp;gt; would be possible to replace the cost function in the planning algorithm&lt;br/&gt;&amp;gt; with *only* the negative-log-probability, which I think is the key point of&lt;br/&gt;&amp;gt; the paper.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That is, the algorithm can be run in a mode where it *ignores* whatever&lt;br/&gt;&amp;gt; fee scheme forwarding nodes desire.&lt;br/&gt;&amp;gt; (@rene: correct me if I am wrong?)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; However, the algorithm then gets an extra step after getting a payment&lt;br/&gt;&amp;gt; plan (i.e. how to route multiple sub-payments).&lt;br/&gt;&amp;gt; It looks over the payment plan and if the fees involved are beyond some&lt;br/&gt;&amp;gt; user-defined limit (with, say, a default of 0.5% of the total amount, as&lt;br/&gt;&amp;gt; per the C-Lightning `pay` default), to look at the highest-fee channels in&lt;br/&gt;&amp;gt; the payment plan.&lt;br/&gt;&amp;gt; Then, it can rerun the flow algorithm, telling it to *disallow* the&lt;br/&gt;&amp;gt; highest-fee channels identified if the total fees exceed the fee budget.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that this modification of the algorithm may be sufficient&lt;br/&gt;&amp;gt; to be resilient against any and all future fee scheme we may decide for&lt;br/&gt;&amp;gt; Lightning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This still achieves &amp;#34;optimality&amp;#34; in the sense of the paper, in a way&lt;br/&gt;&amp;gt; similar to what is suggested in the paper.&lt;br/&gt;&amp;gt; The paper suggests to basically ignore gossiped channels with non-zero&lt;br/&gt;&amp;gt; basefee.&lt;br/&gt;&amp;gt; The approach I suggest allows us to *start* without ignoring non-zero&lt;br/&gt;&amp;gt; basefee, but to slowly degrade our view of the network by disallowing&lt;br/&gt;&amp;gt; high-fee (whether high basefee or high propfee) channels.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210816/f60fa4a3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210816/f60fa4a3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:40:59Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs009r228hx0cgj42694yvuurdaccduwmxdk0ratdm0jugnffy455szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j58e9uz</id>
    
      <title type="html">📅 Original date posted:2021-08-15 📝 Original message: Good ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs009r228hx0cgj42694yvuurdaccduwmxdk0ratdm0jugnffy455szyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j58e9uz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9t8kxq2a9r37h892u492ncuhth8ku4n07a0lnx22a9c56nzfpe5c2dcrdc&#39;&gt;nevent1q…crdc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-15&lt;br/&gt;📝 Original message:&lt;br/&gt;Good morning Zmn!&lt;br/&gt;&lt;br/&gt;That is indeed precisely what we do. We usually quantize the min-cost flow&lt;br/&gt;into minimum shares of, say, 10kSat to 100kSat. This makes the algorithm&lt;br/&gt;run faster and loses very little precision. It also gives a simple way of&lt;br/&gt;dealing with (reasonable) min-htlc-size values.&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;   Stefan&lt;br/&gt;&lt;br/&gt;ZmnSCPxj via Lightning-dev &amp;lt;lightning-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am So., 15. Aug. 2021, 16:03:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning lisa, aj, et al.,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The result is that micropayments have a different payment regime than&lt;br/&gt;&amp;gt; “non-micropayments”, (which may still incentive almost irrational behavior)&lt;br/&gt;&amp;gt; but at least there’s no *loss* felt by node operators for&lt;br/&gt;&amp;gt; handling/supporting low value payments. 10k micropayments is worth 10sats.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It’s also simple to implement and seems rather obvious in retrospect.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems simple to implement for *forwarders*, but I think complicates the&lt;br/&gt;&amp;gt; algorithm described by Pickhardt and Richter?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand, the algorithm is targeted towards &amp;#34;large&amp;#34; payments, so&lt;br/&gt;&amp;gt; perhaps the Pickhardt-Richter payment algo can be forced to have some&lt;br/&gt;&amp;gt; minimum split size, and payments below this minimum size are just sent as&lt;br/&gt;&amp;gt; single payments (on the assumption that such micropayments are so small&lt;br/&gt;&amp;gt; that the probability of failure is negligible).&lt;br/&gt;&amp;gt; That is, just have the `pay` command branch based on the payment size, if&lt;br/&gt;&amp;gt; it is below the minimum size, just use the old try-and-try-until-you-die&lt;br/&gt;&amp;gt; algo, otherwise use a variant on the Pickhardt-Richter algo that respects&lt;br/&gt;&amp;gt; this minimum payment size.&lt;br/&gt;&amp;gt; This somewhat implies a minimum on the possible feerate, which we could&lt;br/&gt;&amp;gt; say is 1 ppm, maybe.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So for example, the minimum size could be 1,000,000msat, or 1,000sat.&lt;br/&gt;&amp;gt; If the payment is much larger than that, use the Pickhardt-Richter&lt;br/&gt;&amp;gt; algorithm with zerobasefee.&lt;br/&gt;&amp;gt; If payment is lower than that threshold, just do not split and do&lt;br/&gt;&amp;gt; try-and-try-until-you-die.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; Lightning-dev mailing list&lt;br/&gt;&amp;gt; Lightning-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210815/df395dd3/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210815/df395dd3/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:40:56Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyavuhgzj590pxjpsnqt8npjqcsvyd4a0wrngr75psnq7fs42k46czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jxyjcuv</id>
    
      <title type="html">📅 Original date posted:2022-07-11 📝 Original message:I very ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyavuhgzj590pxjpsnqt8npjqcsvyd4a0wrngr75psnq7fs42k46czyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jxyjcuv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9qf7nzrvgm46w6sa9vdj4ex53lfmjp7nf0wav422nmj5kjpq8f4gej0gsc&#39;&gt;nevent1q…0gsc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-11&lt;br/&gt;📝 Original message:I very much agree with AJ here. This is something I remember discussing on&lt;br/&gt;Bitcointalk back in 2011: I find it highly intuitive that the amount of&lt;br/&gt;lost coins is not a constant fraction of the supply, because people get&lt;br/&gt;better at keeping their coins with increasing value, distribution and&lt;br/&gt;technology/best practices. I also think that we have observed this effect&lt;br/&gt;in practice since then. The bulk of coins that are supposed to be lost (via&lt;br/&gt;onchain analysis) haven&amp;#39;t been moved since at least 2010. Of course, in&lt;br/&gt;most cases, we&amp;#39;ll never know, but the assumption of constant loss rate&lt;br/&gt;seems unreasonable.&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;  Stefan&lt;br/&gt;&lt;br/&gt;Anthony Towns via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Mo., 11. Juli 2022, 04:32:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Sat, Jul 09, 2022 at 08:46:47AM -0400, Peter Todd via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; title:  &amp;#34;Surprisingly, Tail Emission Is Not Inflationary&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Of course, this isn&amp;#39;t realistic as coins are constantly being lost due to&lt;br/&gt;&amp;gt; &amp;gt; deaths, forgotten passphrases, boating accidents, etc. These losses are&lt;br/&gt;&amp;gt; &amp;gt; independent:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This isn&amp;#39;t necessarily true: if the losses are due to a common cause,&lt;br/&gt;&amp;gt; then they&amp;#39;ll be heavily correlated rather than independent; for example&lt;br/&gt;&amp;gt; losses could be caused by a bug in a popular wallet/exchange software&lt;br/&gt;&amp;gt; that sends funds to invalid addresses, or by a war or natural disaster&lt;br/&gt;&amp;gt; that damages key storage hardware. They&amp;#39;re also not independent over&lt;br/&gt;&amp;gt; time -- people improve their key storage habits over time; eg switching&lt;br/&gt;&amp;gt; to less buggy wallets/exchanges, validating addresses before using them,&lt;br/&gt;&amp;gt; using distributed multisig to prevent a localised disaster from being&lt;br/&gt;&amp;gt; catastrophic.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; the *rate* of coin loss at time $$t$$ is&lt;br/&gt;&amp;gt; &amp;gt; proportional to the total supply *at that moment* in time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is the key assumption that produces the claimed result.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you&amp;#39;re losing a constant fraction, x (Peter&amp;#39;s \lambda), of Bitcoins&lt;br/&gt;&amp;gt; each year, then as soon as the supply increases enough that the constant&lt;br/&gt;&amp;gt; reward, k, corresponds to the constant fraction, ie k = x*N(t), then&lt;br/&gt;&amp;gt; you&amp;#39;ve hit an equilibrium.  (Likewise if you&amp;#39;re losing more than you&amp;#39;re&lt;br/&gt;&amp;gt; increasing -- you just need to wait until N(t) decreases enough that you&lt;br/&gt;&amp;gt; reach the same equilibrium point) You don&amp;#39;t really need any fancy maths.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But that assumption doesn&amp;#39;t need to be true; coins could primarily be&lt;br/&gt;&amp;gt; lost in &amp;#34;black swan&amp;#34; events (due to bugs, wars or disasters) rather&lt;br/&gt;&amp;gt; than at a predictable rate -- with actions taken thereafter such that&lt;br/&gt;&amp;gt; the same event repeating is no longer the same level of catastrophe,&lt;br/&gt;&amp;gt; but instead another new black swan event is required to maintain the same&lt;br/&gt;&amp;gt; loss rate. If that&amp;#39;s the case, then the rate at which funds are lost will&lt;br/&gt;&amp;gt; vary chaotically, leading to &amp;#34;inflationary&amp;#34; periods in between events,&lt;br/&gt;&amp;gt; and comparatively strong deflationary shocks when these events occur.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Alternatively, losses could be at a predictable rate that&amp;#39;s entirely&lt;br/&gt;&amp;gt; different to the one Peter assumes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One alternative predictable rate that seems plausible to me is if funds&lt;br/&gt;&amp;gt; are lost due to people not be careful about losing small amounts; even&lt;br/&gt;&amp;gt; though they are careful when amounts are larger. So when 10k BTC was&lt;br/&gt;&amp;gt; worth $40, maybe it doesn&amp;#39;t matter if you misplace a hard drive with&lt;br/&gt;&amp;gt; 7500 BTC on it since that&amp;#39;s only worth $30; but by the time 7500 BTC&lt;br/&gt;&amp;gt; is worth $150M, maybe you take a bit more care with that, but are still&lt;br/&gt;&amp;gt; not too worried if you lose 1.5mBTC, since that&amp;#39;s also only worth $30.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To mathematise that, perhaps there are K people holding Bitcoin, and with&lt;br/&gt;&amp;gt; probability p, each loses $100 (in constant 2009 dollars say, so that we&lt;br/&gt;&amp;gt; can ignore inflation) of that Bitcoin a year through carelessness. For&lt;br/&gt;&amp;gt; an equilibrium to occur in that case, you need:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   N(t) &#43; k - (100/P * Kp) = N(t)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; where P is the price of Bitcoin (again in constant 2009 dollars) and k&lt;br/&gt;&amp;gt; is Peter&amp;#39;s fixed tail subsidy. Simplifying gives:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   P = K * 100p/k&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But k and p are constant by assumption in this scenario, so equilibrium&lt;br/&gt;&amp;gt; is reached only if price (P) is exactly proportional to number of&lt;br/&gt;&amp;gt; users (K). That requires you to have a non-inflationary currency&lt;br/&gt;&amp;gt; (supply is constant) with constant adoption (assume K doesn&amp;#39;t change)&lt;br/&gt;&amp;gt; that maintains a constant price (P=K*100p/k) in real terms even if the&lt;br/&gt;&amp;gt; economy is otherwise expanding or contracting.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; More importantly, just from a goals point of view, x is something we&lt;br/&gt;&amp;gt; should be finding ways to minimise it over time, not leave constant.&lt;br/&gt;&amp;gt; In fact, you could argue for an even stronger goal: &amp;#34;the real value held&lt;br/&gt;&amp;gt; in BTC lost each year should decrease&amp;#34;, that is, x should be decreasing&lt;br/&gt;&amp;gt; faster than 1/(N(t)*P).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220711/2289f5fd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220711/2289f5fd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T23:11:34Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0lrgc96dwngdcprzujcawgr3p45qrnjjxfnptexrfhtk02g40d3qzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j4gg28j</id>
    
      <title type="html">📅 Original date posted:2019-08-21 📝 Original message:Please ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0lrgc96dwngdcprzujcawgr3p45qrnjjxfnptexrfhtk02g40d3qzyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340j4gg28j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfr856aumv0khrtvmme8apk9h4lpz4ql03q6w29g5yhruz4a3lqucuj8rtj&#39;&gt;nevent1q…8rtj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-08-21&lt;br/&gt;📝 Original message:Please see the github issues and the twitter discussion (e.g. here:&lt;br/&gt;&lt;a href=&#34;https://twitter.com/stefanwouldgo/status/1163801056423403520&#34;&gt;https://twitter.com/stefanwouldgo/status/1163801056423403520&lt;/a&gt;) for similar&lt;br/&gt;points other people including me have made. At this point I feel there are&lt;br/&gt;quite a few unclear points in the presentation and it is not clear to me if&lt;br/&gt;they can be salvaged.&lt;br/&gt;&lt;br/&gt;Am Mi., 21. Aug. 2019 um 09:32 Uhr schrieb ZmnSCPxj via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Maxim,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The Deaf Bob Attack&lt;br/&gt;&amp;gt; ===================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that Bob can promote the N3 problem to the N2 problem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose Alice contacts Bob to get the data.&lt;br/&gt;&amp;gt; However, Bob happens to have lost the data in a tragic boating accident.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now, supposedly what Alice does in this case would be to broadcast the&lt;br/&gt;&amp;gt; HTLC settlement transaction, whose signature was provided by Bob during&lt;br/&gt;&amp;gt; protocol setup.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But this seems unworkable.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * If Bob managed to sign the HTLC settlement transaction, what `SIGHASH`&lt;br/&gt;&amp;gt; flags did Bob sign with?&lt;br/&gt;&amp;gt;   * If it was `SIGHASH_ALL` or `SIGHASH_SINGLE`, then Bob already selected&lt;br/&gt;&amp;gt; the decryption key at setup time.&lt;br/&gt;&amp;gt;   * If it was `SIGHASH_NONE`, then Alice could put any SCRIPT, including&lt;br/&gt;&amp;gt; `&amp;lt;Alice&amp;gt; OP_CHECKSIG`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If Bob already selected the decryption key at setup time, then Bob can&lt;br/&gt;&amp;gt; ignore Alice.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * If Alice does not publish the HTLC settlement transaction, then Bob will&lt;br/&gt;&amp;gt; eventually enter the N2 state and get the stake&#43;reward.&lt;br/&gt;&amp;gt; * If Alice *does* publish the HTLC settlement transaction, without Bob&lt;br/&gt;&amp;gt; giving the encrypted data, then Bob can just use the hashlock and reveal&lt;br/&gt;&amp;gt; the decryption key.&lt;br/&gt;&amp;gt;   * The decryption key is useless without the encrypted data!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems this part is not workable?&lt;br/&gt;&amp;gt; As the decryption key is embedded in the HTLC, Alice cannot get a&lt;br/&gt;&amp;gt; signature from Bob without the decryption key already being selected by Bob&lt;br/&gt;&amp;gt; (and thus already claimable even without any data being returned by Bob).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190821/25a4c8a0/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190821/25a4c8a0/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:20:21Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9ul27edy69lnlcwm0wcy0cdrnaqtk433408yrwdnptsjhdezlpmczyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jk04cz5</id>
    
      <title type="html">📅 Original date posted:2015-07-23 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9ul27edy69lnlcwm0wcy0cdrnaqtk433408yrwdnptsjhdezlpmczyq4x075usk24xc4el4g7hvpjqgrf8sy88uq9f0qe97z8mukn4340jk04cz5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0vxnhls972ht0knvajgdm6w8jksjp4qhk62m4umll76xg2t37cfc84fvl9&#39;&gt;nevent1q…fvl9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-07-23&lt;br/&gt;📝 Original message:This looks like a prime application for this PIR library:&lt;br/&gt;&lt;a href=&#34;http://percy.sourceforge.net/apidocs/index.html&#34;&gt;http://percy.sourceforge.net/apidocs/index.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Eric Voskuil via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt;&lt;br/&gt;schrieb am Do., 23. Juli 2015 um 02:07 Uhr:&lt;br/&gt;&lt;br/&gt;&amp;gt; This is a good point. I didn&amp;#39;t delve into the specifics of&lt;br/&gt;&amp;gt; implementation due to the larger issues that I raised. Libbitcoin Server&lt;br/&gt;&amp;gt; uses CurveZMQ, an implementation of CurveCP.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://curvecp.org&#34;&gt;http://curvecp.org&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://curvezmq.org&#34;&gt;http://curvezmq.org&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/Libbitcoin_Server&#34;&gt;https://en.bitcoin.it/wiki/Libbitcoin_Server&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; e&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 07/22/2015 04:11 PM, gb via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Why RSA?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Here is an idea, inspired by TOR, on which I would like to have some&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; feedback: We create an anonymous routing layer between Electrum servers&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; and clients.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * Each server S publishes a RSA public key, KS&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * Each client receives a list of available servers and their pubkeys&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * For each wallet address, addr_i, a client chooses a server S_i, and a&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; RSA keypair (K_addr_i, k_addr_i)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * The client creates a list of encrypted requests. Each request contains&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; addr_i and K_addr_i, and is encrypted with the pubkey KS_i of S_i&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * The client chooses a main server M, and sends the list of encrypted&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; requests to M&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * M dispatches the client&amp;#39;s requests to the corresponding servers S_i&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; (without the client&amp;#39;s IP address.)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * Each server decrypts the requests it receives, performs the request,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; and encrypts the result with K_addr_i&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * M receives encrypted responses, and forwards them to the client.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; * The client decrypts the encrypted response with k_addr_i&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150723/63b8773b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150723/63b8773b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T15:42:46Z</updated>
  </entry>

</feed>