<oembed><type>rich</type><version>1.0</version><author_name>npub1g5zswf6y48f7fy90jf3tlcuwdmjn8znhzaa4vkmtxaeskca8hpss23ms3l</author_name><author_url>https://nostr.ae/npub1g5zswf6y48f7fy90jf3tlcuwdmjn8znhzaa4vkmtxaeskca8hpss23ms3l</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2021-08-15&#xA;📝 Original message:&#xA;Good morning aj, et al.&#xA;&#xA;&gt; Hey *,&#xA;&gt;&#xA;&gt; There&#39;s been discussions on twitter and elsewhere advocating for&#xA;&gt; setting the BOLT#7 fee_base_msat value [0] to zero. I&#39;m just writing&#xA;&gt; this to summarise my understanding in a place that&#39;s able to easily be&#xA;&gt; referenced later.&#xA;&gt;&#xA;&gt; Setting the base fee to zero has a couple of benefits:&#xA;&gt;&#xA;&gt; -   it means you only have one value to optimise when trying to collect&#xA;&gt;     the most fees, and one-dimensional optimisation problems are&#xA;&gt;     obviously easier to write code for than two-dimensional optimisation&#xA;&gt;     problems&#xA;&#xA;Indeed, this is a good point regarding this.&#xA;&#xA;&#xA;&gt; -   when finding a route, if all the fees on all the channels are&#xA;&gt;     proportional only, you&#39;ll never have to worry about paying more fees&#xA;&gt;     just as a result of splitting a payment; that makes routing easier&#xA;&gt;     (see [1])&#xA;&#xA;If we neglect roundoff errors.&#xA;&#xA;On the other hand, roundoff errors involved are &lt;1msat per split, so it probably will not matter to most people.&#xA;&#xA;&gt;     So what&#39;s the cost? The cost is that there&#39;s no longer a fixed minimum&#xA;&gt;     fee -- so if you try sending a 1sat payment you&#39;ll pay 0.1% of the fee&#xA;&gt;     to send a 1000sat payment, and there may be fixed costs that you have&#xA;&gt;     in routing payments that you&#39;d like to be compensated for (eg, the&#xA;&gt;     computational work to update channel state, the bandwith to forward the&#xA;&gt;     tx, or the opportunity cost for not being able to accept another htlc if&#xA;&gt;     you&#39;ve hit your max htlcs per channel limit).&#xA;&gt;&#xA;&gt;     But there&#39;s no need to explicitly separate those costs the way we do&#xA;&gt;     now; instead of charging 1sat base fee and 0.02% proportional fee,&#xA;&gt;     you can instead just set the 0.02% proportional fee and have a minimum&#xA;&gt;     payment size of 5000 sats (htlc_minimum_msat=5e6, ~$2), since 0.02%&#xA;&gt;     of that is 1sat. Nobody will be asking you to route without offering a&#xA;&gt;     fee of at least 1sat, but all the optimisation steps are easier.&#xA;&#xA;Should this minimum a node will be willing to forward be part of gossip, and how does this affect routing algorithms?&#xA;&#xA;&gt;     You could go a step further, and have the node side accept smaller&#xA;&gt;     payments despite the htlc minimum setting: eg, accept a 3000 sat payment&#xA;&gt;     provided it pays the same fee that a 5000 sat payment would have. That is,&#xA;&gt;     treat the setting as minimum_fee=1sat, rather than minimum_amount=5000sat;&#xA;&gt;     so the advertised value is just calculated from the real settings,&#xA;&gt;     and that nodes that want to send very small values despite having to&#xA;&gt;     pay high rates can just invert the calculation.&#xA;&#xA;I like this idea, as I think it matches more what the incentives are.&#xA;But it requires a change in gossip and in routing algorithms, and more importantly it requires routing algorithms to support two different fee schemes (base + proportional vs min + proportional).&#xA;&#xA;On the other hand, this still is a two-dimensional optimization algorithm, with `minimum_fee` and `proportional_fee_millionths` as the two dimensions.&#xA;So maybe just have a single proportional-fee mechanism...&#xA;&#xA;&gt;&#xA;&gt;     I think something like this approach also makes sense when your channel&#xA;&gt;     becomes overloaded; eg if you have x HTLC slots available, and y channel&#xA;&gt;     capacity available, setting a minimum payment size of something like&#xA;&gt;     y/2/x**2 allows you to accept small payments (good for the network)&#xA;&gt;     when you&#39;re channel is not busy, but reserves the last slots for larger&#xA;&gt;     payments so that you don&#39;t end up missing out on profits because you&#xA;&gt;     ran out of capacity due to low value spam.&#xA;&gt;&#xA;&gt;     Two other aspects related to this:&#xA;&gt;&#xA;&gt;     At present, I think all the fixed costs are also incurred even when&#xA;&gt;     a htlc fails, so until we have some way of charging failing txs for&#xA;&gt;     incurring those costs, it seems a bit backwards to penalise successful&#xA;&gt;     txs who at least pay a proportional fee for the same thing. Until we&#39;ve&#xA;&gt;     got a way of handling that, having zero base fee seems at least fair.&#xA;&#xA;Yes, the dreaded mechanism against payment lockup, which as far as I understand has a lot of thought already sunk into it without any widely-accepted solution, sigh.&#xA;&#xA;&#xA;Regards,&#xA;ZmnSCPxj</html></oembed>