<div dir="ltr"><div>Good morning ZmnSCPxj,</div><div><br></div>As a skeptic of discrete logarithm&#39;s long-term security, I view scriptless scripts as dangerously seductive. (But wow, are they cool! Almost cool enough to wish we could uninvent quantum computing. I wonder if R-LWE can be used instead as foundation? Not that I expect R-LWE to hold long-term either...) But I digress.<div><br></div><div>As I listen to all the work starting up in the legacy financial markets to mitigate the likely future failure of LIBOR, given how little thought went into that possibility in the writing of currently-traded derivative contracts, I&#39;m reminded of how important and also how possible it is to think about short and long-term goals simultaneously as we build systems. It is far easier now than it will soon be to add expressiveness into the core protocol, such as negative fees and optional exponential component. Just because we pragmatically ignore negative fees and exponents in routing decisions today, does not mean we will not feel enormous need for them in the future - and having the ability to express such fee structures now will enable efficiency improvements in the future, as simple implementation (rather than protocol) upgrades.</div><div><br></div><div>I recognize AMP (at least as you proposed) is a long way out, but it seems like something we&#39;ll inevitably want and will surely add. It is therefore worth assuming now, as we think strategically about how fee dynamics will improve efficiency over time. Who knows, my skepticism of discrete logarithm hardness may prove misplaced, or else we&#39;ll find other ways to achieve AMP. (I have not read roasbeef&#39;s proposal, but I shall.) The protocol does not presently allow an exponential component, but it would be trivial to add (even if, at first, defaulted to 1).</div><div><br></div><div>Thanks,</div><div>Ben<br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 13, 2018 at 9:26 AM, ZmnSCPxj <span dir="ltr">&lt;<a href="mailto:ZmnSCPxj@protonmail.com" target="_blank">ZmnSCPxj@protonmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Good morning Benjamin,<br></div><span class=""><div><br></div><div><br></div><div><br></div><div class="m_1369262985752611619protonmail_signature_block"><div class="m_1369262985752611619protonmail_signature_block-user m_1369262985752611619protonmail_signature_block-empty"><br></div><div class="m_1369262985752611619protonmail_signature_block-proton">Sent with <a href="https://protonmail.com" target="_blank">ProtonMail</a> Secure Email.<br></div></div><div><br></div><div>‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐<br></div></span><span class=""><div> On April 13, 2018 4:37 AM, Benjamin Mord &lt;<a href="mailto:ben@mord.io" target="_blank">ben@mord.io</a>&gt; wrote:<br></div><div> <br></div><blockquote type="cite" class="m_1369262985752611619protonmail_quote"><div dir="ltr"><div>Thank you, ZmnSCPxj.<br></div><div><br></div><div>&quot;... <span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size">by adjusting the on-Lightning `fee_base_msat` and `fee_proportional_millionths` of channels.&quot;</span></span></span></span><br></div><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size"></span></span></span></span><br></div><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size">Yes, I agree these prices are a critical signaling mechanism that can have substantial impact on expected channel lifetime and thus economic efficiency of lightning operation overall. (As you may recall, I believe we should allow negative prices - even if present day routing algorithms choose to treat negative fees as zero for temporary simplicity.) <span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size">You make a good point it can also improve routing efficiency by hinting at capacity, but for now they are unfortunately linear.</span></span></span></span></span></span></span></span><br></div><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size"></span></span></span></span><br></div><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size">The following paper did not account for the improved efficiency that price adjustment in response to channel state will likely enable, but one thing which may be relevant here is the underlying power law assumption of transaction size distribution (which is apparently drawn from actual data), and the more general approach to estimating channel lifespan. In lieu of advertising max capacity, perhaps we should instead permit a price exponent which may optionally be set to something larger than 1. The cost to channel operator of processing a transaction is largely the impact to expected channel lifespan, which in turn is nonlinear with respect to transaction size - and dramatically so as transaction size approaches (or exceeds) remaining capacity.</span></span></span></span><br></div><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><a href="https://arxiv.org/pdf/1712.10222.pdf" target="_blank">https://arxiv.org/pdf/1712.<wbr>10222.pdf</a><br></div></span></span></span></span></div></div></blockquote><div><br></div></span><div>Larger payments also have a much lower chance of successfully propagating through the network, as every channel in its route needs to have the requisite capacity, so I think it somewhat balances out (maybe).<br></div><div><br></div><div>Adding a nonlinear component would be difficult to add on to the protocol currently, as I think there is no provision for it in the protocol.  But maybe I am incorrect..?<br></div><span class=""><div><br></div><blockquote type="cite" class="m_1369262985752611619protonmail_quote"><div dir="ltr"><div><span style="background-color:rgb(255,255,255)" class="m_1369262985752611619highlight"><span style="color:rgb(34,34,34)" class="m_1369262985752611619colour"><span style="font-family:arial,sans-serif" class="m_1369262985752611619font"><span style="font-size:12.8px" class="m_1369262985752611619size"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><span style="font-size:12.8px" class="m_1369262985752611619size">If we combine nonlinear pricing with your March 19 AMP proposal, I expect economic efficiency could be greatly improved.</span><br></div></span></span></span></span></div></div></blockquote><div><br></div></span><div>My AMP proposal cannot work soon.  It requires at minimum for Bellare-Neven/MuSig/Schnorr (I get confused, which is the proper name for this) signatures to be added to Bitcoin to get HD+SS.  Then we need to switch over all implementations to using scriptless script contingent payments rather than hashlocked contingent payments (and convince all network node operators to upgrade); we will be unable to use an intermediate node that does not understand SS contingent payments for my style of AMP.</div><div><br></div><div>The earlier AMP proposal by roasbeef is back-compatible (uses the same hashlocked contingent payments we already use now), but does not support a proof-of-payment compatible with ZKCP protocols (although possibly I am wrong, I think roasbeef has mentioned before that it is ZKCP compatible).<br></div><div><br></div><div>Regards,<br></div><div>ZmnSCPxj<br></div><div class="HOEnZb"><div class="h5"><div><br></div><blockquote type="cite" class="m_1369262985752611619protonmail_quote"><div dir="ltr"><div>Thanks again,<br></div><div>Benjamin Mord<br></div><div class="gmail_extra"><br></div><div class="gmail_extra"><div><br></div><div class="gmail_quote"><div>On Thu, Apr 12, 2018 at 12:49 AM, ZmnSCPxj <span dir="ltr">&lt;<a href="mailto:ZmnSCPxj@protonmail.com" target="_blank">ZmnSCPxj@protonmail.com</a>&gt;</span> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Good morning Benjamin,<br></div><span><div><br></div><blockquote class="m_1369262985752611619m_6106883119563951706protonmail_quote" type="cite"><div dir="ltr"><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial" dir="ltr"><div>Do (should) channels have the option of publicizing their balances, so as to improve routing performance / scalability in a large network, and for competitive differentiation among competing routes? This would allow channel owners to balance privacy with efficiency, and where the incentive to publish would go up in proportion to network scalability requirements. Brute force trial &amp; error seems expensive at scale, and also reduces privacy of the sender - so it seems a useful hedge to leave this decision to the market (if technically practical).<br></div></div></div></blockquote><div><br></div></span><div>I think brute-force scales well enough, but perhaps we should see the network in action more.<br></div><div><br></div><div>To an extent, it is possible to hint the suitability of a channel for routing in a particular direction, without completely leaking your balance in detail, by adjusting the on-Lightning `fee_base_msat` and `fee_proportional_millionths` of channels.  If you have a high balance on a channel, you reduce your side of the fee for that channel (i.e. the direction where you are the source for payments on that channel) to encourage others to use it and hopefully pay you on a depleted channel.  If you have a low balance, you increase your fee.  These fees are already propagated using `channel_update`.  No current node software implements this yet, however.<br></div><div><br></div><div>Regards,<br></div><div>ZmnSCPxj<br></div></blockquote></div></div></div></blockquote><div><br></div></div></div></blockquote></div><br></div></div></div>