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

Correctly fill PSBT for taproot `interactive-tx` (#3169)

Public commit record

What the developer wrote

Authored by Bastien Teinturier

100/100 · Strong
Correctly fill PSBT for taproot `interactive-tx` (#3169)

When using tapoot for our inputs, our signatures will cover *all* inputs
of the transaction, even those that don't belong to us. If our peer adds
inputs, we must thus fill them in the PSBT we create, otherwise signing
will fail.

This was the reason why we were previously sharing the same dummy wallet
between Alice and Bob in our unit tests, otherwise we were seeing that
kind of failures in unit tests, but we never figured out why before.

Now that this is fixed, we can improve the unit tests by having separate
wallets for Alice and Bob, and remove the unused `NoOpOnChainWallet`.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit fixes a bug in Eclair's dual-funded Lightning channel logic. When opening or splicing a channel using taproot (P2TR) inputs, each participant's wallet needs full details about every input in the transaction, not just its own. Previously, the PSBT (a data structure used to pass transaction signing information to the wallet) only included the shared splice input, but omitted the other peer's inputs. That caused the local wallet to fail when signing taproot inputs, because it couldn't compute the signature that covers all inputs. The fix adds all remote inputs to the PSBT before signing. The rest of the diff is mostly test cleanup: separate wallets for Alice and Bob and removal of an unused test helper.

Recommended action

Review and merge the fix, then ensure test coverage includes separate wallets for each party in taproot dual-funding and splice scenarios. Operators running nodes with taproot wallet inputs and dual-funding/splicing enabled should upgrade to avoid failed channel opens or splices.

Security signals we found

01

Fixes a signing failure in taproot interactive dual-funding/splicing

02

PSBT now includes all remote inputs, satisfying BIP-341 all-inputs signature commitment

03

Previously tests hid the bug by sharing a single dummy wallet between both parties

04

No direct funds-loss or theft path shown; primarily a liveness/DoS issue for channel open/splice

05

Error message improved to include failing PSBT input position

Risk score

Why this scored 60/100

Our methodology →
Potential impact 18/30
Exploitability 12/25
Stealth signal 8/15
Affected reach 10/15
Confidence 8/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.