Skip to content
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

Peer crashed during splice-in, channel now unrecoverable #8011

Open
PdlNode opened this issue Jan 19, 2025 · 0 comments
Open

Peer crashed during splice-in, channel now unrecoverable #8011

PdlNode opened this issue Jan 19, 2025 · 0 comments

Comments

@PdlNode
Copy link

PdlNode commented Jan 19, 2025

The following situation occured while attempting a splice-in with CLN v24.11:

I initiated a splice as described in the documentation. The splice_init and splice_update commands returned successfully, however splice_signed aborted with an error indicating that the peer was unreachable. Indeed the peer has been offline ever since and no splice transaction has been published.

At the same time, my node apparently detected that the channel was in an error state and attempted to force-close it. However, the force-close doesn't work, because it tries to spend the UTXO of the splice transaction which hasn't been published. If my understanding is correct, the fully-signed splice transaction cannot be known to my node since the peer crashed before it could add their signature and send it. Therefore, the channel cannot be closed now without the peer coming back online and publishing the splice transaction, which hasn't happened and potentially won't.

I don't know what happened on the side of the peer. Obviously, their node also seems to be in trouble, so hopefully they will read this and collaborate to resolve the issue, if possible.

I don't know whether the splicing protocol can be changed to avoid this dangerous state, this might be a matter for research.

This is an excerpt from my log during the splicing operation:

XXXX-XX-XXXXX:X6:53.121Z UNUSUAL XXXXXX-channeld-chan#8: STFU complete: we are quiescent
XXXX-XX-XXXXX:X6:53.122Z UNUSUAL XXXXXX-channeld-chan#8: STFU complete: setting stfu_wait_single_msg = true
XXXX-XX-XXXXX:X7:36.662Z INFO    XXXXXX-channeld-chan#8: Splice negotation, will not send commit, not recv commit, not send signature, recv signature as initiator
XXXX-XX-XXXXX:X7:36.663Z INFO    XXXXXX-channeld-chan#8: Splice signing tx: 020000000XXXXXX
XXXX-XX-XXXXX:X9:22.305Z INFO    XXXXXX-chan#8: Peer transient failure in CHANNELD_NORMAL: Disconnected
XXXX-XX-XXXXX:X9:22.319Z INFO    XXXXXX-channeld-chan#8: Unable to resume splice as user sigs are missing.
XXXX-XX-XXXXX:X9:22.534Z INFO    XXXXXX-channeld-chan#8: We are initiating tx_abort for reason: next_funding_txid not recognized. Sending tx_abort.
XXXX-XX-XXXXX:X9:26.464Z UNUSUAL XXXXXX-chan#8: Peer permanent failure in CHANNELD_NORMAL: channeld: received ERROR channel XXXXXX: tx_abort is not allowed after I have sent my signature. msg: XXXXXX (reason=protocol)
XXXX-XX-XXXXX:X9:26.464Z INFO    XXXXXX-chan#8: State changed from CHANNELD_NORMAL to AWAITING_UNILATERAL
XXXX-XX-XXXXX:X9:29.323Z INFO    XXXXXX-connectd: Received WIRE_WARNING: WARNING: channel_announcement: no unspent txout XXXXXX
XXXX-XX-XXXXX:X9:29.699Z INFO    XXXXXX-connectd: Received WIRE_WARNING: WARNING: channel_announcement: no unspent txout XXXXXX

This is my node trying to force-close the channel, which fails (bad-txns-inputs-missingorspent) because the splicing transaction is unknown.

XXXX-XX-XXXXX:X9:43.073Z DEBUG   lightningd: sendrawtransaction: 02000000000XXXXXX
XXXX-XX-XXXXX:X9:43.159Z DEBUG   plugin-bcli: sendrawtx exit 25 (bitcoin-cli -rpcclienttimeout=60 -rpcconnect=X.X.X.X -rpcuser=... -stdinrpcpass sendrawtransaction 02000000000XXXXXX) error code: -25\nerror message:\nbad-txns-inputs-missingorspent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant