Saturday, 26 October 2019

How 4 BTC on the lightning network is likely not lost after all, at least not that way.

Just after u/ZipoTm posted his story, I checked my node logs for breach transactions, but found none. I concluded that I was not party to any of the channel funds he has lost.

Upon doing some more investigation, I have found that I was. But what happened is not at all how the story was portrayed. That kind of misunderstandings tend to happen when you are kind of rash, blame the technology, and fail to acknowledge it was your fault.

Nevertheless, he does still deserve help to find these coins. He still have them, though, at least those in my channel with him, provided he has not deleted anything.

So, what happened?

On october 2nd, the lightning-casino node is starting with an old channel db. It tries to reconnect to all its channel peers, who notice that his state is out of date. This, however, is not the same as a force-close. What happen then is that data loss protection protocol will handle this.

My node sees this data loss, and says:

2019-10-02 09:26:53.429 [ERR] LNWL: ChannelPoint(XXXXXXXX (removed for my privacy):0), sync failed: remote believes our tail height is 0, while we have 1117!

2019-10-02 09:26:53.429 [WRN] HSWC: Error when syncing channel states: possible remote commitment state data loss

2019-10-02 09:26:53.429 [ERR] HSWC: ChannelLink(NNNNNN:840:0) Failing link: unable to synchronize channel states: possible remote commitment state data loss

2019-10-02 09:26:53.429 [INF] HSWC: ChannelLink(XXXXXXXXX:0) has exited

2019-10-02 09:26:53.434 [INF] HSWC: Removing channel link with ChannelID(XXXXXXXXXXXX)

2019-10-02 09:26:53.434 [INF] HSWC: ChannelLink(XXXXXXXXX:0) is stopping

2019-10-02 09:26:53.534 [WRN] PEER: Force closing link(NNNNNNN:840:0)

2019-10-02 09:26:53.534 [INF] CNCT: Attempting to force close ChannelPoint(XXXXXXXXXXXXXX:0)

2019-10-02 09:26:53.552 [INF] CNCT: ChannelArbitrator(XXXXXXXXXXXXXX:0): force closing chan

This is a normal force close. A couple of days later, my node can sweep the funds in my end, and does so. A whooping 546 satoshi to me. lightning-casinos satoshi is, however, still sitting there on the blockchain, waiting for it to be swept by u/ZipoTm

Discussing this on slack, and checking some other force closes from that day, we find this is the issue with all the channels we checked.

How can these be restored? Likely a seed restore followed by a restorechanbackup. u/ZipoTm might need to change the lookahead window on the restore, and by all means, *be patient*.

Another possibility is to go back to slack, ask for help. He'll surely get it, but I *would* recommend being a bit less triggerhappy, and it'd probably have been wise to ask for help before he started doing things he knew little about.

Noone have seen a single instance of a channel breach, so likely all of his force closes were actually force closes by the other nodes due to DLP. They are now waiting for his node to sweep them.

Side note: In channels created with newer versions of LND, and probably the others, this extra sweep step would be unnecessary, because protocol was changed to be a bit simpler in this regard, and the force-close-address is now managed by the seed itself, when doing a seed restore. Previously, it'd be managed by another address generated by a special set of channel keys, which is most of the content of static channel backup - these keys.

submitted by /u/vegarde
[link] [comments]

No comments:

Post a Comment