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
Hey! I've done a bunch of splicing cross-compatibility tests with
eclair, usingcln'smasterbranch, 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:
cln, thetx_signaturessent byclnis incorrect andclncrashes: I'm wondering if this is related to funding key rotation? I think the bug is on theclnside, since I've had no issue doing that withldkcommit_sig, andeclairactually wanted to cancel the splice,clnwill keep sending awarningand disconnecting instead of aborting that splice. It means that this test case isn't implemented incln: https://github.com/t-bast/bolts/blob/splicing/bolt02/splicing-test.md#disconnection-with-one-side-sending-commit_sigclnsendssplice_lockedafter only 1 confirmation: that's very dangerous, you should wait for at least 3 confirmations (eclairwaits for 8 confirmations by default). I wasn't able to fully testsplice_lockedbehavior because of this limitationclndoesn't retransmitannouncement_signatureson reconnection when requested inmy_current_funding_locked(by setting theannouncement_signaturesbit in theretransmit_flagsbitfield)And here is what I tested that worked:
commitment_numbers are differentcommit_sigon reconnection workstx_signatureson reconnection workssplice_lockedbehavior looks correct, but I couldn't test the case whereeclairsendssplice_lockedearlier thancln, sinceclnsends it after only 1 confirmation (see my previous point above)commit_sigandtx_signaturesretransmission on reconnect (but probably nottx_aborton 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
eclairfor your tests: https://github.com/ACINQ/eclair/tree/splicing-official-cross-compat