Skip to content

[Splicing] Cross-compatibility test results #8705

@t-bast

Description

@t-bast

Hey! I've done a bunch of splicing cross-compatibility tests with eclair, using cln's master branch, and here are the results. Things are mostly working well, but there are a few important bugs so this isn't safe to ship yet.

Let's start with the bugs/missing features:

  • if I initiate a splice-in (and I think splice-out will be the same) from cln, the tx_signatures sent by cln is incorrect and cln crashes: I'm wondering if this is related to funding key rotation? I think the bug is on the cln side, since I've had no issue doing that with ldk
  • aborting a splice on reconnection doesn't work: if we disconnect before receiving each other's commit_sig, and eclair actually wanted to cancel the splice, cln will keep sending a warning and disconnecting instead of aborting that splice. It means that this test case isn't implemented in cln: https://github.com/t-bast/bolts/blob/splicing/bolt02/splicing-test.md#disconnection-with-one-side-sending-commit_sig
  • cln sends splice_locked after only 1 confirmation: that's very dangerous, you should wait for at least 3 confirmations (eclair waits for 8 confirmations by default). I wasn't able to fully test splice_locked behavior because of this limitation
  • cln doesn't retransmit announcement_signatures on reconnection when requested in my_current_funding_locked (by setting the announcement_signatures bit in the retransmit_flags bitfield)

And here is what I tested that worked:

  • quiescence seems to work correctly (I couldn't test all cases easily from the outside, but what I tested worked well)
  • splicing works correctly even when the local and remote commitment_numbers are different
  • retransmission of commit_sig on reconnection works
  • retransmission of tx_signatures on reconnection works
  • splice_locked behavior looks correct, but I couldn't test the case where eclair sends splice_locked earlier than cln, since cln sends it after only 1 confirmation (see my previous point above)
  • RBF works correctly, including commit_sig and tx_signatures retransmission on reconnect (but probably not tx_abort on reconnect, since https://github.com/t-bast/bolts/blob/splicing/bolt02/splicing-test.md#disconnection-with-one-side-sending-commit_sig isn't implemented)

@ddustin I'll let you work on those remaining issues, I feel like we're pretty close! You can use this branch of eclair for your tests: https://github.com/ACINQ/eclair/tree/splicing-official-cross-compat

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions