Using the latest commit of lnd-manageJ (https://github.com/C-Otto/lnd-manageJ/) it is now possible to send transactions with reduced fees if one of the hops along one of the paths includes negative inbound fees. I tested this by topping-up the channel from
c-otto.de to my test node lnd v0.18.0-beta.rc1 (https://amboss.space/node/025cd50e55b969a418e713b70076333ba1e25929e9e6ec5b937c30a8edc85cc82b).The route taken:
c-otto.de->Kraken 🐙⚡->ACINQ->lnd v0.18.0-beta.rc1->c-otto.de- Amount received:
227,943.000sat - Amount sent:
228,194.475sat - Fees paid:
251.475sat
Fee breakdown for the last (interesting) hop
lnd v0.18.0-beta.rc1->c-otto.de:- outbound fee 1,000ppm:
227,943sat / 1,000,000 * 1,000 = 227.943sat - incoming fee from
ACINQis -500ppm:(227,943sat + 227.943sat) / 1,000,000 * -500 = -114.0854715sat - total fee:
227.943sat - 114.0854715sat = 113.8575285sat
This is rounded to
113,858msat, which the forwarding node lnd v0.18.0-beta.rc1 happily accepted!
Interestingly, this corresponds to a fee rate of around 499.5ppm, even less than "outbound + inbound" (1,000ppm - 500ppm), because the inbound fee is also applied to outbound fees (227.943sat in this case).Note that this is possible even if the sending node does NOT run lnd v0.18, as lnd-manageJ is smart enough to extract the necessary data itself. However, due to the complexities of path finding (#PickhardtPayments), negative inbound fees are NOT used when finding (cheap) routes using lnd-manageJ. As such, this can only make actual payments cheaper, without having any effect on how to find cheap routes.