There has been some discussion of balancing a channel with another node by sending a payment to yourself through a set of channels. Basically, initial state:

  • Channel 1: 1 BTC local - 0 BTC remote
  • Channel 2: 0 BTC local - 1 BTC remote

The proposal is to send 0.5 BTC out on channel 1 and receive by channel 2 so the state becomes:

  • Channel 1: 0.5 BTC local - 0.5 BTC remote
  • Channel 2: 0.5 BTC local - 0.5 BTC remote

Thus, the channel is theoretically "balanced".

Why can't we do this automatically on LN? Well, what if each of these nodes also has another 10 channels and multiple nodes trying to use channel 1 and 2 to balance themselves too?

Since local nodes do not have knowledge of the balance of edges to which they are not connected, the stable balance state can not be known - and possibly not even estimated.

Therefore, with a network of more than 2 nodes, an analytic and stable solution to balancing is not known. Importantly, it would not be possible to automate this balancing over the network.

The crux of this problem is to be able to receive LN payments. Sending is easy since one can open a new channel and start sending. To receive, liquidity is required on a contract on the remote end.

At the time it seems receiving the first LN payments on a node should be done by opening a new channel to the receiver. This no doubt will add to the cost of joining the network.