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
ACINQ
is -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.