Author

Topic: Can Send but Can't Receive (Read 157 times)

copper member
Activity: 2996
Merit: 2371
April 11, 2021, 09:26:07 PM
#8
why is that
You'll have to increase your receiving capacity. As far as I've understood this happens so the node that you're connected be able to know how many bitcoins there are left to be received (from your channel). In order to increase your receiving capacity click "Swap" and it'll show you some input fields. You can "convert" your sending capacity to receiving capacity.

If I've made a technical mistake in the second sentence above, I'd like to get a proper answer from a LN expert.
This will obviously cost you money in terms of paying a TX fee and the fee (if any) of the person who is willing to convert LN to on-chain balance.

If you can, it would probably be better to spend some coin on your existing channels if you are using electrum.
legendary
Activity: 1876
Merit: 3132
April 11, 2021, 05:08:45 AM
#7
  • Alice opens a channel to node Bob.
  • Charlie opens a channel to node Bob.
  • They both deposit 10 mBTC and they wait for the required confirmations.

In the first channel, Alice has 10 mBTC and Bob 0 mBTC. In the other channel, Charlie has 10 mBTC and Bob 0 mBTC. Bob is an intermediary between Alice and Charlie, so theoretically both of them should be able to send payments between each other through Bob. However, it's not going to work in this case.

So now Alice and Charlie can both send ~10 mBTC to each other by none of them can receive. In order to do that they'll have to increase their receiving capacity. Can you continue this sentence further?

The only way to do that is to pay Bob for something. Let's say Bob has a coffee shop. Alice and Bob went there together. Alice bought a coffee for 3 mBTC and Charlie bought a cake for 2 mBTC. Now, the balance sheet looks like this: Alice (7 mBTC) -> Bob (3 mBTC). Charlie (8 mBTC) -> Bob (2 mBTC). Now, let's say Alice owed Charlie 1 mBTC. She doesn't have a direct channel with Charlie, but she can route her payment through Bob. Alice sends her transaction and the balances change again. Alice (6 mBTC) -> Bob (4 mBTC). Charlie (9 mBTC) -> Bob (1 mBTC).

If Alice owed Charlie 3 mBTC, she wouldn't be able to send him that much because Bob has only 2 mBTC in the channel opened by Charlie.

15 mBTC to Alice and 5 mBTC to Charlie. So now the current, signed from both sides, transaction can be broadcasted to the blockchain. Charlie has signed that he'll transfer 5 mBTC from his multi-sig address to Alice's.

You need to make sure that all payments are enforceable on the blockchain in an efficient way. Neither is achieved here. Let's say Charlie transacted this way with a couple more people. The final transaction would have the same amount of outputs as the number of people Charlie transacted with. Also, why would he need to transfer his funds to a multi-signature address since you didn't even mention Bob? How would Alice be sure if Charlie was not going to cheat?

The trick is that Alice updates the balance of the channel with Bob and Bob updates his channel with Charlie the moment he routes the payment. This way, Alice needs only to be sure that Bob is not cheating. She doesn't have to think about Charlie anymore.
HCP
legendary
Activity: 2086
Merit: 4361
April 11, 2021, 05:00:36 AM
#6
So now Alice and Charlie can both send ~10 mBTC to each other by none of them can receive. In order to do that they'll have to increase their receiving capacity. Can you continue this sentence further?
No... unless there is another route from Alice to Charlie (or vice versa), there is no way they can send to each other...

Alice can send up to 10 mBTC to Bob.... Charlie can send up to 10 mBTC to Bob... but currently, Bob has no capacity at all, so is unable to send anything to anything to anyone.

So, the Alice->Bob and Charlie->Bob routes are essentially "one way" at this point in time... as Bob->Alice has 0 mBTC capacity... and Bob->Charlie has 0 mBTC capacity.


Alice 10mBTC ----- 0 mBTC Bob 0 mBTC ----- 10 mBTC Charlie


Now, if Alice was to send 5 mBTC to Bob... then it would look like this:

Alice 5 mBTC ----- 5 mBTC Bob 0 mBTC ----- 10 mBTC Charlie.

Now... Charlie could send up to 5 mBTC to Alice... as that is the max capacity available on the Bob->Alice route. Alice is still unable to send anything to Charlie, as the Bob->Charlie route still has 0 mBTC capacity.
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
April 11, 2021, 04:41:12 AM
#5
I am not sure what you mean by that. In short, when you open a channel, you cannot receive any coins through it because the other person does not have any coins on their side of the exactly same channel. As you spend coins through that channel, the balance of the other party increases. Once their balance is higher than the required channel reserve, you can receive coins through that channel.
  • Alice opens a channel to node Bob.
  • Charlie opens a channel to node Bob.
  • They both deposit 10 mBTC and they wait for the required confirmations.

So now Alice and Charlie can both send ~10 mBTC to each other by none of them can receive. In order to do that they'll have to increase their receiving capacity. Can you continue this sentence further?

The node keeps ~20 mBTC on two different 2-of-2 multisig addresses. Why is sending/receiving capacity required? Charlie says to Bob that he wants to transfer 5 mBTC to Alice and thus, the node shares the new balance of each side.

15 mBTC to Alice and 5 mBTC to Charlie. So now the current, signed from both sides, transaction can be broadcasted to the blockchain. Charlie has signed that he'll transfer 5 mBTC from his multi-sig address to Alice's.

Where am I wrong? I'm trying to understand the capacity thing and it doesn't make any sense to me.
legendary
Activity: 1876
Merit: 3132
April 10, 2021, 02:25:19 PM
#4
You can also simply spend some coins over the Lightning Network if you don't want to pay the swap fee. You will gain incoming capacity this way.

As far as I've understood this happens so the node that you're connected be able to know how many bitcoins there are left to be received (from your channel)

I am not sure what you mean by that. In short, when you open a channel, you cannot receive any coins through it because the other person does not have any coins on their side of the exactly same channel. As you spend coins through that channel, the balance of the other party increases. Once their balance is higher than the required channel reserve, you can receive coins through that channel.
jr. member
Activity: 36
Merit: 27
April 10, 2021, 08:22:43 AM
#3
it works, thanks!
legendary
Activity: 1512
Merit: 7340
Farewell, Leo
April 10, 2021, 07:46:57 AM
#2
why is that
You'll have to increase your receiving capacity. As far as I've understood this happens so the node that you're connected be able to know how many bitcoins there are left to be received (from your channel). In order to increase your receiving capacity click "Swap" and it'll show you some input fields. You can "convert" your sending capacity to receiving capacity.

If I've made a technical mistake in the second sentence above, I'd like to get a proper answer from a LN expert.
jr. member
Activity: 36
Merit: 27
April 10, 2021, 07:40:08 AM
#1
I am starting to use the lightning network feature in the electrum wallet for the first time. I've already funded and have opened a channel. great. but it only shows that I 'Can Send' at the moment. My 'Can Receive' is showing 0....why is that
Jump to: