ZmnSCPxj [ARCHIVE] on Nostr: š
Original date posted:2021-08-15 š Original message: Good morning aj, et al. > ...
š
Original date posted:2021-08-15
š Original message:
Good morning aj, et al.
> Hey *,
>
> There's been discussions on twitter and elsewhere advocating for
> setting the BOLT#7 fee_base_msat value [0] to zero. I'm just writing
> this to summarise my understanding in a place that's able to easily be
> referenced later.
>
> Setting the base fee to zero has a couple of benefits:
>
> - it means you only have one value to optimise when trying to collect
> the most fees, and one-dimensional optimisation problems are
> obviously easier to write code for than two-dimensional optimisation
> problems
Indeed, this is a good point regarding this.
> - when finding a route, if all the fees on all the channels are
> proportional only, you'll never have to worry about paying more fees
> just as a result of splitting a payment; that makes routing easier
> (see [1])
If we neglect roundoff errors.
On the other hand, roundoff errors involved are <1msat per split, so it probably will not matter to most people.
> So what's the cost? The cost is that there's no longer a fixed minimum
> fee -- so if you try sending a 1sat payment you'll pay 0.1% of the fee
> to send a 1000sat payment, and there may be fixed costs that you have
> in routing payments that you'd like to be compensated for (eg, the
> computational work to update channel state, the bandwith to forward the
> tx, or the opportunity cost for not being able to accept another htlc if
> you've hit your max htlcs per channel limit).
>
> But there's no need to explicitly separate those costs the way we do
> now; instead of charging 1sat base fee and 0.02% proportional fee,
> you can instead just set the 0.02% proportional fee and have a minimum
> payment size of 5000 sats (htlc_minimum_msat=5e6, ~$2), since 0.02%
> of that is 1sat. Nobody will be asking you to route without offering a
> fee of at least 1sat, but all the optimisation steps are easier.
Should this minimum a node will be willing to forward be part of gossip, and how does this affect routing algorithms?
> You could go a step further, and have the node side accept smaller
> payments despite the htlc minimum setting: eg, accept a 3000 sat payment
> provided it pays the same fee that a 5000 sat payment would have. That is,
> treat the setting as minimum_fee=1sat, rather than minimum_amount=5000sat;
> so the advertised value is just calculated from the real settings,
> and that nodes that want to send very small values despite having to
> pay high rates can just invert the calculation.
I like this idea, as I think it matches more what the incentives are.
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).
On the other hand, this still is a two-dimensional optimization algorithm, with `minimum_fee` and `proportional_fee_millionths` as the two dimensions.
So maybe just have a single proportional-fee mechanism...
>
> I think something like this approach also makes sense when your channel
> becomes overloaded; eg if you have x HTLC slots available, and y channel
> capacity available, setting a minimum payment size of something like
> y/2/x**2 allows you to accept small payments (good for the network)
> when you're channel is not busy, but reserves the last slots for larger
> payments so that you don't end up missing out on profits because you
> ran out of capacity due to low value spam.
>
> Two other aspects related to this:
>
> At present, I think all the fixed costs are also incurred even when
> a htlc fails, so until we have some way of charging failing txs for
> incurring those costs, it seems a bit backwards to penalise successful
> txs who at least pay a proportional fee for the same thing. Until we've
> got a way of handling that, having zero base fee seems at least fair.
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.
Regards,
ZmnSCPxj
Published at
2023-06-09 12:40:55Event JSON
{
"id": "9baa5a82dc27b2712db7151ae86cf7cc0f3e23f08b8b99f22705a9e5b41826d3",
"pubkey": "4505072744a9d3e490af9262bfe38e6ee5338a77177b565b6b37730b63a7b861",
"created_at": 1686314455,
"kind": 1,
"tags": [
[
"e",
"9d3801d66d3239d18d7b986ecb31f0f1d7b54c421aae753d10192ad5353e49a0",
"",
"root"
],
[
"e",
"a3173fb941b709c9acb69376a2ab1e714828acb2d60d8753c655aae24dfac97a",
"",
"reply"
],
[
"p",
"f0feda6ad58ea9f486e469f87b3b9996494363a26982b864667c5d8acb0542ab"
]
],
"content": "š
Original date posted:2021-08-15\nš Original message:\nGood morning aj, et al.\n\n\u003e Hey *,\n\u003e\n\u003e There's been discussions on twitter and elsewhere advocating for\n\u003e setting the BOLT#7 fee_base_msat value [0] to zero. I'm just writing\n\u003e this to summarise my understanding in a place that's able to easily be\n\u003e referenced later.\n\u003e\n\u003e Setting the base fee to zero has a couple of benefits:\n\u003e\n\u003e - it means you only have one value to optimise when trying to collect\n\u003e the most fees, and one-dimensional optimisation problems are\n\u003e obviously easier to write code for than two-dimensional optimisation\n\u003e problems\n\nIndeed, this is a good point regarding this.\n\n\n\u003e - when finding a route, if all the fees on all the channels are\n\u003e proportional only, you'll never have to worry about paying more fees\n\u003e just as a result of splitting a payment; that makes routing easier\n\u003e (see [1])\n\nIf we neglect roundoff errors.\n\nOn the other hand, roundoff errors involved are \u003c1msat per split, so it probably will not matter to most people.\n\n\u003e So what's the cost? The cost is that there's no longer a fixed minimum\n\u003e fee -- so if you try sending a 1sat payment you'll pay 0.1% of the fee\n\u003e to send a 1000sat payment, and there may be fixed costs that you have\n\u003e in routing payments that you'd like to be compensated for (eg, the\n\u003e computational work to update channel state, the bandwith to forward the\n\u003e tx, or the opportunity cost for not being able to accept another htlc if\n\u003e you've hit your max htlcs per channel limit).\n\u003e\n\u003e But there's no need to explicitly separate those costs the way we do\n\u003e now; instead of charging 1sat base fee and 0.02% proportional fee,\n\u003e you can instead just set the 0.02% proportional fee and have a minimum\n\u003e payment size of 5000 sats (htlc_minimum_msat=5e6, ~$2), since 0.02%\n\u003e of that is 1sat. Nobody will be asking you to route without offering a\n\u003e fee of at least 1sat, but all the optimisation steps are easier.\n\nShould this minimum a node will be willing to forward be part of gossip, and how does this affect routing algorithms?\n\n\u003e You could go a step further, and have the node side accept smaller\n\u003e payments despite the htlc minimum setting: eg, accept a 3000 sat payment\n\u003e provided it pays the same fee that a 5000 sat payment would have. That is,\n\u003e treat the setting as minimum_fee=1sat, rather than minimum_amount=5000sat;\n\u003e so the advertised value is just calculated from the real settings,\n\u003e and that nodes that want to send very small values despite having to\n\u003e pay high rates can just invert the calculation.\n\nI like this idea, as I think it matches more what the incentives are.\nBut 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).\n\nOn the other hand, this still is a two-dimensional optimization algorithm, with `minimum_fee` and `proportional_fee_millionths` as the two dimensions.\nSo maybe just have a single proportional-fee mechanism...\n\n\u003e\n\u003e I think something like this approach also makes sense when your channel\n\u003e becomes overloaded; eg if you have x HTLC slots available, and y channel\n\u003e capacity available, setting a minimum payment size of something like\n\u003e y/2/x**2 allows you to accept small payments (good for the network)\n\u003e when you're channel is not busy, but reserves the last slots for larger\n\u003e payments so that you don't end up missing out on profits because you\n\u003e ran out of capacity due to low value spam.\n\u003e\n\u003e Two other aspects related to this:\n\u003e\n\u003e At present, I think all the fixed costs are also incurred even when\n\u003e a htlc fails, so until we have some way of charging failing txs for\n\u003e incurring those costs, it seems a bit backwards to penalise successful\n\u003e txs who at least pay a proportional fee for the same thing. Until we've\n\u003e got a way of handling that, having zero base fee seems at least fair.\n\nYes, 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.\n\n\nRegards,\nZmnSCPxj",
"sig": "d223c7549f8585f5d2b9fe1e52a29e0dc4e6ce4e6e61f9e33451b13bd293840c3b7d532596c769d0fdadc84ecf2759f74b67c6ff8c702b7575c98ec4bb4abc5e"
}