AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Low 37 Bitcoin

Support async signing of splice shared input

Public commit record

What the developer wrote

Authored by Wilmer Paulino

73/100 · Adequate
Support async signing of splice shared input

While user signatures may be provided whenever ready at the user's
discretion when handling a `FundingTransactionReadyForSigning` event, it
does not cover the user's signature for the 2-of-2 multisig input in a
splice. This signature is obtained via the `EcdsaChannelSigner`, which
did not support providing it asynchronously.

Since the splice shared input signature is part of the `tx_signatures`
message, we're not allowed to send the message until it's complete. This
results in us needing to explicitly handle the signature exchange logic
when the signer unblocks the shared input signature.
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
The short version

What changed, and why it matters

This commit adds support for asynchronous signing of the shared input in a Lightning channel splice. Previously, the signature for the 2-of-2 multisig input had to be produced immediately when requested, which could block users whose signing hardware or policy requires delays. The change allows the signer to return an error and retry later, and it reworks the internal state machine so the splice negotiation waits cleanly until that signature is available. It is a feature/robustness improvement rather than a fix for an active exploit.

Recommended action

Review as a normal robustness/feature commit. Validate that the new async path cannot leave a channel stuck indefinitely, that re-entrancy in signer_unblocked is safe, and that the partial-signature state cannot be confused with a fully signed state. No urgent security response is indicated by the diff alone.

Security signals we found

01

API change to allow signer to refuse producing a signature and retry later

02

State-machine change to avoid sending incomplete tx_signatures while waiting for shared-input signature

03

New test covering async splice shared-input signature unblock path

04

Rework of FundingTxSigned bundling to coordinate commitment_signed, tx_signatures, splice_locked, and funding_tx broadcast on signer resume

05

No direct memory-safety, cryptographic, or remote-exploitable vulnerability visible in the diff

Risk score

Why this scored 37/100

Our methodology →
Potential impact 8/30
Exploitability 5/25
Stealth signal 6/15
Affected reach 7/15
Confidence 7/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.