<oembed><type>rich</type><version>1.0</version><author_name>npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_name><author_url>https://nostr.ae/npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-08-14&#xA;📝 Original message:&#xA;Hey *,&#xA;&#xA;There&#39;s been discussions on twitter and elsewhere advocating for&#xA;setting the BOLT#7 fee_base_msat value [0] to zero. I&#39;m just writing&#xA;this to summarise my understanding in a place that&#39;s able to easily be&#xA;referenced later.&#xA;&#xA;Setting the base fee to zero has a couple of benefits:&#xA;&#xA; - it means you only have one value to optimise when trying to collect&#xA;   the most fees, and one-dimensional optimisation problems are&#xA;   obviously easier to write code for than two-dimensional optimisation&#xA;   problems&#xA;&#xA; - when finding a route, if all the fees on all the channels are&#xA;   proportional only, you&#39;ll never have to worry about paying more fees&#xA;   just as a result of splitting a payment; that makes routing easier&#xA;   (see [1])&#xA;&#xA;So what&#39;s the cost? The cost is that there&#39;s no longer a fixed minimum&#xA;fee -- so if you try sending a 1sat payment you&#39;ll pay 0.1% of the fee&#xA;to send a 1000sat payment, and there may be fixed costs that you have&#xA;in routing payments that you&#39;d like to be compensated for (eg, the&#xA;computational work to update channel state, the bandwith to forward the&#xA;tx, or the opportunity cost for not being able to accept another htlc if&#xA;you&#39;ve hit your max htlcs per channel limit).&#xA;&#xA;But there&#39;s no need to explicitly separate those costs the way we do&#xA;now; instead of charging 1sat base fee and 0.02% proportional fee,&#xA;you can instead just set the 0.02% proportional fee and have a minimum&#xA;payment size of 5000 sats (htlc_minimum_msat=5e6, ~$2), since 0.02%&#xA;of that is 1sat. Nobody will be asking you to route without offering a&#xA;fee of at least 1sat, but all the optimisation steps are easier.&#xA;&#xA;You could go a step further, and have the node side accept smaller&#xA;payments despite the htlc minimum setting: eg, accept a 3000 sat payment&#xA;provided it pays the same fee that a 5000 sat payment would have. That is,&#xA;treat the setting as minimum_fee=1sat, rather than minimum_amount=5000sat;&#xA;so the advertised value is just calculated from the real settings,&#xA;and that nodes that want to send very small values despite having to&#xA;pay high rates can just invert the calculation.&#xA;&#xA;I think something like this approach also makes sense when your channel&#xA;becomes overloaded; eg if you have x HTLC slots available, and y channel&#xA;capacity available, setting a minimum payment size of something like&#xA;y/2/x**2 allows you to accept small payments (good for the network)&#xA;when you&#39;re channel is not busy, but reserves the last slots for larger&#xA;payments so that you don&#39;t end up missing out on profits because you&#xA;ran out of capacity due to low value spam.&#xA;&#xA;Two other aspects related to this:&#xA;&#xA;At present, I think all the fixed costs are also incurred even when&#xA;a htlc fails, so until we have some way of charging failing txs for&#xA;incurring those costs, it seems a bit backwards to penalise successful&#xA;txs who at least pay a proportional fee for the same thing. Until we&#39;ve&#xA;got a way of handling that, having zero base fee seems at least fair.&#xA;&#xA;Lower value HTLCs don&#39;t need to be included in the commitment transaction&#xA;(if they&#39;re below the dust level, they definitely shouldn&#39;t be included,&#xA;and if they&#39;re less than 1sat they can&#39;t be included), and as such don&#39;t&#xA;incur all the same fixed costs that HTLCs that are committed too do.&#xA;Having different base fees for microtransactions that incur fewer costs&#xA;would be annoying; so having that be &#34;amortised&#34; into the proportional&#xA;fee might help there too.&#xA;&#xA;I think eltoo can help in two ways by reducing the fixed costs: you no&#xA;longer need to keep HTLC information around permanently, and if you do&#xA;a multilevel channel factory setup, you can probably remove the ~400&#xA;HTLCs per channel at any one time limit. But there&#39;s still other fixed&#xA;costs, so I think that would just lower the fixed costs, not remove them&#xA;altogether and isn&#39;t a fundamental change.&#xA;&#xA;I think the fixed costs for forwarding a HTLC are very small; something&#xA;like:&#xA;&#xA;   0.02sats -- cost of permanently storing the HTLC info&#xA;               (100 bytes, $500/TB/year, 1% discount rate)&#xA;   0.04sats -- compute and bandwidth cost for updating an HTLC ($40/month&#xA;               at linode, 1 second of compute)&#xA;&#xA;The opportunity cost of having HTLC slots or Bitcoin locked up until&#xA;the HTLC succeeds/fails could be much more significant, though.&#xA;&#xA;Cheers,&#xA;aj&#xA;&#xA;[0] https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#the-channel_update-message&#xA;[1] https://basefee.ln.rene-pickhardt.de/</html></oembed>