Let me preface the issue by saying I have learned my lesson and do not intend to close any more channels randomly. Unless it falls under one of the cases outlined by DarthCoin here.
Setup: Umbrel node running on Raspberry Pi 4.
Issue: I closed 3 channels 2 days ago, where the settled balance was much lower than the channel capacity. The settled balances were in the amount of my local balance at the time of closing, minus the channel commit fee. The difference I’m missing right now is 602,299 sats, which are still not back in my BTC wallet. We’re way past the block specified in the “Close Height” field for each closure.
I’m just wondering if I need to wait longer or if I messed something up here. Apologies if I’m missing something obvious, but any help or insights would be much appreciated.
More details on channel closures (all Co-operative Close):
- Settled balance: 16,225, Capacity: 200,000, Close Height: 712,331, Time Locked Balance: 0, Closing transaction hash: 75bbde619df2fce609df8624a3f4472ddfa2c0ee4110171efc869f33b79763ba
- Settled balance: 12,976, Capacity: 350,000, Close Height: 712,331, Time Locked Balance: 0, Closing transaction hash: 038bf7d2a3b5eb7c34c3f548e78a7c1b3c7838415816bb205cc5800aaf7d41e9
- Settled balance: 18,500, Capacity: 100,000, Close Height: 712,298, Time Locked Balance: 0, Closing transaction hash: dd4f4e11c788f79a5a9db115e0e5bb14ae793013b11df01a821447be831d3ab9
Happy to provide any other details as needed.
Thanks in advance for any insights here.
After doing some investigation and reading other posts, it looks like you do indeed only get the local balance when closing a channel. So this is one expensive 600k sats lesson.
Everyone who’s reading this and considering closing channels, don’t. Unless you have an extremely good reason to do so.
Sats went from one side of the channel to the other, but did you spend these sats? Or did Sats flow from another channel to your side then from this channel to the other side? If so you should find your 600k Sats over there.
I had this same feeling about a month ago until I remembered how liquidity channels work.
You do get only the local balances because only these sats are yours. The sum of all your channels local balances is the balance of your Lightning wallet.
When you open a channel, as you provide the entire channel capacity, it is all on your side (= local balance). But each time you spend sats (pay invoices), the paid amount moves to the other side of the channel (= remote balance) and thus decreases your Lightning wallet balance. That’s totally normal.
When someone opens a channel with you, as they provide the entire channel capacity, it is all on their side (= remote balance). Those sats don’t belong to you. So you Lightning wallet balance is not equal to the sum of of channel capacity (local + remote balances).
I only spent about 10k sats, the rest were withdrawn from my bluewallet into my on chain BTC wallet. So I didn’t spend them, I simply sent ~500k sats from one lightning wallet to my BTC wallet, through my node. I had a separate 600k balance on my Umbrel Lightning wallet that didn’t make it back.
I did more reading about liquidity works and it makes a lot more sense now, thanks. It looks like the 600k sats went to the nodes I was connected to since they weren’t on my side.
Thanks @louneskmt, this all makes sense to me after the fact and further research. However, I opened each channel mentioned above with the capacity coming from my on chain BTC wallet. So all of the sats were in my local balance to start.
Here was the sequence of events:
- I funded my BTC on chain wallet ~700k sats and opened 3 channels with a 650,000 capacity total.
- I had 500k sats sitting in my blue wallet, which was connected to my node
- I wanted to withdraw all 500k from my blue wallet so I could open more channels (so at this point I had 1.15 million sats between Umbrel and Blue wallet)
- When I tried to withdraw to my Umbrel lightning wallet, I kept getting (node can’t receive sats error), which I now realize was simply because I had no inbound liquidity
- At this point I got worried that I can’t withdraw my sats so I tipped a small amount 10k sats and started withdrawing the 500k little by little as the inbound liquidity kept increasing. I used fixedfloat.com to exchange BTC LN in my blue wallet to my core BTC Umbrel wallet. Took about 8 exchanges.
- After I finally withdrew all my 500k sats from my blue wallet to my BTC on chain wallet, I wanted to close the current channels to open up new ones (with bigger capacities)
- At this point I have not actually spent the 500k sats I withdrew from my blue wallet, but my local balance on the 3 channels mentioned went down by 500k (which makes sense as I routed 500k sats since blue wallet was connected to my node.
- When I went to close the channels, the settled balance was way lower than what I opened with (again I didn’t spend the sats), but I figured it’s part of the process and the rest of the sats would come back
A week later they still haven’t, so my guess is the 600k sats went to the other nodes I was connected to.
This was 1 day after I set up my lightning node, meaning:
- I didn’t fully understand how liquidity works
- Never rebalanced or know what that actually does
- Probably shouldn’t have had my blue wallet connected to my node - I just followed the guides, but my node had almost no inbound liquidity, I didn’t know what I was doing
- Should have just left the sats in my blue wallet until I knew what I was doing
Mistakes were made and again, maybe I missed something. But everything points me to believe the other node operators had the sats deposited into their wallet after the channel closures.
If all new users will start by reading the guides, all this trouble will not exist.
- Important links about nodes and LN
- Getting started with Umbrel
- Check also all other posts in the “guides” section of this forum
You need to understand first how LN works, how you can do internal swaps LN -> onchain using Thunderhub or RTL app from Umbrel, how you manage your channels, how you fund/create channels and close them, balance of a channel is NOT the same as size of the channel.
Is your BlueWallet wallet configured to use both your Umbrel’s Electrum server and LNDHub server?
It is configured to use my Umbrel’s Electrum server and connected to my node (in Network -> Lightning Settings). I followed the instructions on Umbrel under “Connect Wallet” for BW exactly.
Would the blunder above be avoided if I didn’t connect my BW to my Umbrel node?
Okay, that’s normal then.
When you connect BlueWallet to your Lightning node using LndHub, it uses your node as a wallet. It is basically an wallet / account on top on your main Lightning (LND) wallet. If you send funds to your BW account, they will be received on your Lightning node wallet and the LndHub app will store in its database “these funds belongs to this BW account”. Same thing if you want to send funds: LndHub will check on much on the main Lightning wallet belongs to your BW account, and if your balance is enough, will send sats from that main wallet. But LND won’t know a thing about it. So if you use back your main wallet, you can basically spend the funds of a BW account.
I don’t kow if I’m clear enough.
So basically, to sum up, a BW account connected to your node uses your main Lightning wallet funds in the backend. So you didn’t lose funds.
Thanks Lounes, appreciate the clarification. I understood BW to be an additional layer on top of my LND wallet like you mentioned. So I figured BW funds are sitting in that layer and main LND wallet funds are in their own layer.
Looks like I had it wrong in terms of how it allocates funds in the backend. However, I did a quick sanity check of how much I deposited and got back in my on chain BTC wallet (when trying to start from scratch) and it still doesn’t add up. I’ll need to take some time to do it thoroughly again.
Thanks for all the insights and clarifications here. Only a couple weeks in, but learning a lot here.
I’m new to this – so what is stopping from someone rebalancing channels to their local balance and closing, thus robbing people of sats?
Rebalancing is a payment transaction. You send out some sats from one channel and receive it in another. Same thing with the nodes/peers that route your payment. They receive in one channel and send in another. If you receive 100K sats in a channel with my node, I will have received those 100K (+fee) from a channel with another peer.
If nodes are in disagreement regarding the distribution of funds at channel closing time, there are watchtowers to settle any disputes.
Here is a hypothetical:
- I open a node with someone for 1mil sats.
- I rebalance the node to 500k sats local/remote
- 300k sats in forwards move to the remote side of the channel, leaving me 200k sats local.
4a) I close the channel
4b) My peer closes the channel.
- 200k sats settle to my wallet, leaving them with the remaining 800k.
I’m left with 700k – 500k of which should be in another channel of mine (because it was a rebalance, assuming no other forwards), and 200k from the local balance.
If this isn’t accurate or realistic, please explain why. I’ll need some time to understand more about what watchtowers do and how they work.
What can be done to ensure lightning channels close and sats are settled under the same conditions by which they are opened? E.g., If I open a channel for 1mil sats, is there a way to make sure I get it all back upon closure?
- You open channel A with new peer for 1mil sats.
- You rebalance channel A to 500k sats local/remote by sending 500K out to your new peer and receiving 500K in channel B that you have with old peer.
- 300k sats in forwards come in from old peer in channel B and move to the remote side of channel A, leaving you 200k sats local in channel A.
- You or your peer close channel A.
- 200k sats settle to your on chain wallet. 500K + 300K = 800K sats came in via channel B, and now sits in channel B.
You are left with 200K on-chain funds and 800K still in your lightning node (channel B)
if the 300K in forwards in 3. were forwarded by your node, but not routed from another channel, it would be because you told it to make a payment of 300K - for example if you bought something or sent sats to an exchange. Your node would not spontaneously send 300K out.