Skip to content

Splicing Gossip #6481

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ddustin opened this issue Aug 1, 2023 · 3 comments · Fixed by #6677
Closed

Splicing Gossip #6481

ddustin opened this issue Aug 1, 2023 · 3 comments · Fixed by #6677
Assignees
Labels
protocol These issues are protocol level issues that should be discussed on the protocol spec repo

Comments

@ddustin
Copy link
Collaborator

ddustin commented Aug 1, 2023

@litch reports: I'm testing this in a mixed-nodes environment and it looks like a post-spliced channel is un-detectable by LND. I'm not 100% sure why at this point, and have some logs I can provide on request.

Workflow:

  • Lnd1 is connected to cln1
  • Open a channel between cln1 and cln2
  • Verify that Lnd1 can see the channel between cln1 and cln2 in its describegraph
  • Splice the channel
  • the channel between cln1 and cln2 is now not listed in the describegraph
  • Open a new channel between cln1 and cln2
  • Verify that the new channel between cln1 and cln2 appears in the describegraph, whereas the spliced one does not

Happy to help debug!

EDIT TO ADD:

It looks the newly-created channel eventually does get broadcast. The ChannelAnnounce message wound up getting broadcast an hour after the splice happened. Even with dev-fast-gossip enabled and I restarted the CLN node within that hour window (at about 40 minutes). Unsure if that is related.

In any case: tACK (at least in my cluster of regtest nodes)

Originally posted by @litch in #6253 (comment)

@ddustin ddustin self-assigned this Aug 1, 2023
@rustyrussell
Copy link
Contributor

Yes, this is expected!

  1. You can only announce a "new" channel after it's 6 blocks deep (to avoid reorg hell).
  2. As of last year, you are supposed to wait for 12 blocks before seeing a channel "close" before discarding it.

Obviously LND didn't implement number 2, yet (and, without splices, I guess there was no reason to) so it sees a channel "vanish".

@rustyrussell rustyrussell added the protocol These issues are protocol level issues that should be discussed on the protocol spec repo label Aug 3, 2023
@litch
Copy link
Contributor

litch commented Aug 3, 2023

Just to clarify, hundreds of blocks may pass without the spliced channel being broadcast (I test this in regtest) regularly.

I've tested this a number of times, and I've gotten a number of unique failure modes.

I wish it were a bit cleaner and I could give you a better precise set of observations, but it's different each time I run the experiment.

Observations:

  • the channel doesn't show up in the LND node even after an hour (and many hundreds of blocks), and upon restarting the CLN node the channel gets force closed because the CLN node doesn't know it spliced it
  • the channel gets broadcast after ~1 hour (and hundreds of blocks)
  • the channel doesn't get broadcast no matter how many times I restart all the involved nodes, but I can close it and open a new one

@litch
Copy link
Contributor

litch commented Aug 11, 2023

Oh nice find, 846cec4 - I'll keep experimenting with this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
protocol These issues are protocol level issues that should be discussed on the protocol spec repo
Projects
None yet
3 participants