This is a story about (probably) loosing 5M sats while running a reckless lightning networks node.
I had some sats to spend in an electrum wallet and wanted to open a new channel with the OKX node. With lncli I opened a new channel and selected the -psbt (partial signed bitcoin transaction) option which allows me to use funds from an external wallet to fund the new channel. Everything went fine so far as I could create, sign and broadcast the transaction. Unfortunately I decided to open with too low fees and the channel opening was stuck in the mempool. Instead of just wait and drink tee, I decided to bump the fee which was a very bad idea. If you bump the fee with the external wallet, you create a new transaction with a new txid. My node and also the OKX node have no idea about the new transaction and I essentialy sent 5M sats to a 2of2 multi-sig address which only I have the key for (not exactly).
Well, fortunately there exists chantools rescuefunding but this is only helping if your peer is cooperative. Now that my peer is not a pleb which I can contact on SN, I have to go through the OKX support. After telling them that there is no point in sending them screenshots of my app or whatever and insiting they should just send my psbt which releases my funds to the tech team they agreed and now I hope and wait (... for some weeks now).
If someone knows someone at OKX: please let me know, that could help.
If you want to dig deeper, everything is documented on github
And if I don't get the sats back its a gift to all you awesome bitcoiners out there.
Unfortunately I decided to open with too low fees and the channel opening was stuck in the mempool. Instead of just wait and drink tee, I decided to bump the fee which was a very bad idea.
FYI the reason why this is a bad idea is because a Lightning channel is two transactions from the very start:
  1. The transaction funding the channel
  2. The commitment transaction that closes the channel if one of the parties goes offline.
If you fee-bump the funding transaction, the txid changes, and the commitment transaction is no longer valid. The Lightning protocol isn't designed to deal with this situation.
Lightning node implementations could have made this easy, by letting you fee bump by opening a new channel with a higher fee, and then figuring out which channel to actually use when one of the txs finally confirms. Or at the very least, by letting you easily broadcast a cancel tx with RBF. But unfortunately LND doesn't support this even though lots of users have lost money like you.
SIGHASH_ANYPREVOUT could have fixed this too, as with it the commitment transaction wouldn't have needed to sign a specific funding tx. But sadly that was held back years ago out of silly concerns that people would lose money misusing it manually; there's so many ways to lose money misusing Bitcoin!
reply
The channel opening protocol should support RBF:ing and updating the txid (or not telling the other side what the txid is until one confirmation). We already have the waiting for confirmations before completing the opening process.
reply
Thanks for your explanation.
I could have bumped the fee with a new transaction that paid for the child (Child-Pays-For-Parent (CPFP)). That would have worked perfectly fine...
reply
Ouch... complicated situation indeed.
reply
Every day people losing sats over LN channels 😔
reply
If you stick to the node implementation software and not to try some funky stuff, you probably don't loose anything. (except for some force closures.... 🤬)
reply
Take some sats to help make up for the loss and also for sharing this with others to learn from!
reply
I lose a bounch of sats crewimg around with lightning, but yeah I hope you get those Sats back and save it for your future and not lose it, cheers
reply
Very sorry to hear, that is painful... Thanks for sharing this too, now I'll know to keep this in mind!
reply
Try not to think that those 5M sats someday will be 5M dollars...
reply
nah, I don't think like that. If so, I would never spend some sats.
reply
I don’t get it. How do you have a 2 for 2 multisig with OKX if you haven’t opened the channel.
reply
The thing is, if you do RBF (replace by fee), then you create a new transaction which has a new transaction id. Both nodes do not have any idea about the new transaction and will never accept it as their channel. Therfore the channel will never be "opened" and recognized by the nodes. So technicaly there is a 2of2 multisig which also can be used in a new transaction but both peers have to manually cooporate (sign the new transaction). And if you deal with an exchange like OKX thats not that easy.
reply
Ouch thanks for sharing. I (probably) lost more than that staking sats on Gemini with “their” earn product. Genesis had the sats and sold them, grrr
reply
Damn, good luck
reply