The following article was published behind a paywall on yalls.org. Please support the author by buying access to the post.
The author is Carston Otto.
Information wants to be free. Paywalls set the price for liberation.
I run the node c-otto.de (Amboss), which currently provides more than 19 BTC in 238 channels. My node forwards several thousand transactions a week, earning decent fees. I also automatically rebalance most channels, which is only possible due to the fee settings as described below.
I’m also the author of rebalance-lnd.
For most peers, I don’t know which fee rate is appropriate. Sadly, I already experienced that a new channel was drained and closed before I had the chance to tweak the fee rate. Because of this I had to pay for the open and close transactions, leaving me with close to no sats earned in fees.
The main problem of starting with a low fee rate also exists if my peer does not close the channel, and even if the peer opened the channel to my node: At the very least, I’m missing out on fees. I may also need to rebalance the channel (pull the sats back to my side), which can be too expensive given the low fee rate I charge.
I currently have 10,000ppm configured as the default fee rate (which is absurdly high), so that a new channel starts with 10,000ppm before I decrease it as described below.
Lower and Upper Bound
I rarely know a single good fee rate for any peer. However, I know which fee range may be appropriate. As such, for each node I consider lower and upper bounds, and set the fee rate accordingly based on the ideas outlined below. Currently, my default range is 2-1000ppm, so that a new channel always starts with 10,000ppm (as described above) which is then reduced to 1,000ppm.
Decreasing the Fee Rate
My fee settings should help a node become and stay active. No matter what the current fee rate for a specific channel is, it doesn’t help if I don’t forward any sats. As an example, 500ppm might be fine for a channel to BitFinex, but I won’t be able to route a lot to The Lorax (hi 👋) at 500ppm. If I have lots of sats on my side of the channel, I can either wait and hope, or decrease the fee rate.
That way, possibly after decreasing the fee rate in several steps, I can find the “sweet spot” for each channel and see that it starts forwarding. Only then, with actual traffic at a known fee rate, it makes sense to ask certain questions:
- Is the channel active enough to be considered “good”?
- Do I want to open another channel to that peer (to provide more liquidity and possibly earn more)?
- Do I want to invest into the channel in order to always have x% / y sat on my side of the channel (auto rebalance)?
- Is the channel a good source for rebalance transactions?
Frequency of Adjustments
Even with a node as active as mine, changes like a decreased fee rate don’t have an immediate effect. The network needs to forward the updated information to other peers (gossip), and I need to wait for new payments making use of my channel.
Initially, I waited several days after every fee rate change, but more recently I learned that I’m also happy with more frequent adjustments in certain situations. If most of the funds are on my side of the channel, say 90%, the risk of draining the channel is rather low. As such, if I decrease the fee rate and don’t see any forwarding for a day or so, I feel confident that I can decrease it even further. If, however, I do see a forwarding transaction, I wait and see if the current fee rate is sustainable.
If I don’t have as much on my side of the channel, say just 20%, I tend to wait longer. As the channel is already imbalanced, I don’t want to worsen the situation by giving the network more incentives to drain the channel. However, as those sats are there to be forwarded, I will decrease my fee rate if the channel stays idle for some time. Whereas I might just wait one day for “full” channels, I tend to wait several days for “mostly empty” channels before decreasing the fee rate.
For peers that I consider sources, i.e. nodes that mostly send sats to my node and rarely are the targets of forwarding transactions, I want to make sure that the remote side always has funds to send to my node. As such, I need to decrease my fee rates to incentivize peers to send sats (back) to my peer, and to help rebalance-lnd using this channel as a source (see below).
In some cases, especially if lots of sats are on my side of the channel, I think it’s a good idea to configure a fee rate of 0ppm. That way I’d earn nothing by forwarding to the peer, but I’d be able to profit from sats routed from my peer through my node and out other channels (hopefully with a high fee rate).
Decreasing for Empty Channels
For channels which are empty, i.e. there are (close to) no sats on my side of the channel, it does not make any sense to decrease the fee rate. I won’t attract more forwardings (as I don’t have any sats to forward), and it won’t improve my chances of rebalancing (as I cannot take sats out of the channel).
As such, I just leave the fee rate the current setting and resort to other options (rebalancing, waiting).
Increasing the Fee Rate
I only consider increasing the fee rate for channels that are active, i.e. channels that are targets of forwarding transactions. No matter what the current fee rate is, if some channel is able to attract lots and lots of forwardings, I might as well increase the fee rate and see if (enough) people are willing to pay the higher price.
Of course, the increase fee rate may be too high, so that there won’t be any forwardings. In this case, I need to decrease the fee rate again (as described above). It might help to then try increasing again (after traffic starts to pick up again), but with a smaller step size: If an increase from 600ppm to 700ppm wasn’t successful, I might try increasing by just 50ppm instead of 100ppm next time.
Frequency of Adjustments
When considering increasing the fee rate of some channel, I look at the recent forwardings on that channel. If, for example, the channel forwards on 9 out of 10 days, I’m pretty sure that the current fee rate is good, and that a higher fee rate might also work.
In order to avoid channels being depleted (and, possibly, hard to rebalance), I increase the fee rate faster for mostly empty channels than for balanced or full channels. Similarly, I increase the fee rate less frequently for channels with lots of the funds on my side, to help my peer having funds on their side of the channel. As an example, if a channel already has 90% of the funds on my side, I only increase the fee rate if I see very frequent forwardings (which also means that, due to incoming traffic or rebalance transactions, my node doesn’t have any issue maintaining the high local balance).
Increasing for Empty Channels
While I don’t recommend decreasing the fee rate for empty channels, I think it’s a good idea to increase the fees for (mostly) empty channels. If, for whatever reason, my peer sends sats to my side of the channel, I can immediately benefit from the higher fee rate. Furthermore, if I try to rebalance the channel (sending sats to my side), the higher fee rate will give me more options.
I’m using rebalance-lnd to rebalance most of my channels automatically. For this, the configured fee rates play a very important role.
In general, a rebalance transaction makes sense if you take funds out of a “cheap” channel (you charge a low fee rate), and send them back to you via an “expensive” channel (with a high fee rate). If, for example, you have a channel where you charge 40ppm and another where you charge 100ppm, sending funds from the former to the latter gives you the option to route the amount for 60ppm more than before.
Of course, after taking the sats out of the first channel, you won’t be able to route the amount at 40ppm. In addition, you also have to pay for the rebalance transaction, which is only reasonable up to the difference of 60ppm.
The logic in rebalance-lnd takes all three costs/fees into account and only considers rebalance routes that are “worth it”. As such, by having channels with low fee rates and lots of outbound liquidity, I can help rebalance-lnd to send sats to (mostly) empty channels with a high fee rate.
Because of this even channels with low fee rates can be very helpful to run my node, as rebalance-lnd automatically uses the “cheap” liquidity to transform it into “expensive” liquidity.
These are just my thoughts, none of this is universal truth. The lightning network constantly changes, which also means that the fee rates need to be adjusted frequently.
I hope my thoughts help you configure your own node, and maybe the spark some new ideas.
Good luck and have fun!
Feel free to reach out to me on Twitter (@c_otto83), Telegram (@carsten_o), or via e-mail (firstname.lastname@example.org).