Good morning Cezary,
> When we send open_channel, how we can communicate other party that we would
> like him to put into channel some of his funds?
There is no way to do that as of BOLT v1.0
There are too many issues to allow channel opening by somebody else to ask your
node to commit money into channels.
1. If I ask you to put 10.0 BTC from you to put into a channel I make, and you
accept, I know you have at least 10.0 BTC lying around.
2. I might open a channel to you and ask you to put in money, then when you
have committed the money into the channel, disconnect my node and reformat its
hard disk, so that you are forced to use a unilateral close on your side, and
locking your funds due to the unilateral close. Even if there is a rule that I
must commit at least the same amount as you, a richer attacker can still lock
up the funds of a poorer victim.
In general such dual-funded channels require some measure of trust between you
and your counterparty due to the above issues, at least that you know that the
one initiating the opening will not suddenly disappear.
Such trust issues can be mitigated by simply disallowing dual-funding by
default on your node, and requiring you to explicitly allow multi-funding,
once, for a particular amount, coming from a particular peer. But in any case,
for now it is not defined in BOLT v1.0.
> Is this what is "channel_reserve_satoshis" field for?
No. `channel_reserve_satoshis` is different. It is the amount that each of
you should keep on the channel, once the channel state has moved from "all of
the funds is assigned to the opener of the channel."
The reason for this field is below.
1. Suppose I open a 1BTC channel to you. We agree to a
`channel_reserve_satoshis` amounting to 0.1BTC. The initial channel state is
2. This means I can make 9 payments of 0.1BTC each, so that the channel state
is now (me=0.1BTC, you = 0.9BTC).
3. The `channel_reserve_satoshis` means I cannot pay further to you, i.e. I
cannot move the channel state to (me=0BTC, you=1BTC)..
4. Suppose we allowed this (me=0BTC, you=1BTC) state. Then it is costless for
me to attempt to steal -- after all, I have 0 money on the channel and there is
nothing to punish me with. Even if I steal, and you detect it, I lose nothing
because I own nothing on the channel.
5. But if the channel is constrained, so that I need to keep 0.1BTC on the
channel, then stealing attempts have a cost. If you detect me, I stand to lose
0.1BTC. If you have a better than 90% chance of detecting me, say 91%, a mere
9% chance of 0.9BTC payoff is not enough to counterbalance the 91% chance of
losing 0.1BTC I currently have on the channel
6. In short, the `channel_reserve_satoshis` ensures we do not have costless
Lightning-dev mailing list