Skip to content

[v0.21.x-branch] Backport #10763: multi: fix SIMPLE_TAPROOT_FINAL acceptor and overlay RBF auto-enable#10788

Merged
ziggie1984 merged 3 commits intov0.21.x-branchfrom
backport-10763-to-v0.21.x-branch
May 5, 2026
Merged

[v0.21.x-branch] Backport #10763: multi: fix SIMPLE_TAPROOT_FINAL acceptor and overlay RBF auto-enable#10788
ziggie1984 merged 3 commits intov0.21.x-branchfrom
backport-10763-to-v0.21.x-branch

Conversation

@github-actions
Copy link
Copy Markdown

@github-actions github-actions Bot commented May 5, 2026

Backport of #10763


Description

Adds the missing SIMPLE_TAPROOT_FINAL cases to the RPC acceptor switch so external acceptor clients no longer see UNKNOWN_COMMITMENT_TYPE for final-taproot channel opens, and narrows the taproot RBF auto-enable to skip taproot-overlay (where the RBF coop-close state machine does not yet thread through the AuxCloser hook).

The feature-bits-to-lnrpc-enum switch in sendAcceptRequests covered
every commitment type the RPC acceptor can be asked about, except the
production taproot variant introduced alongside the prod-taproot-chans
work. For a channel open using SimpleTaprootChannelsRequiredFinal (with
any combination of the scid-alias / zero-conf modifiers), the switch
fell through to the default branch, which logs a warning and leaves
commitmentType at its zero value -- lnrpc.CommitmentType_UNKNOWN_COMMITMENT_TYPE.
External acceptor clients then see UNKNOWN rather than the actual
commitment type and either reject or misclassify the channel.

Add the four missing cases so the new commitment type is reported to
acceptor clients correctly.

(cherry picked from commit 58231f1)
An earlier commit added an auto-enable that forces RbfCoopClose=true
whenever either taproot channel flag is set. This breaks
taproot-overlay channels, because the RBF coop close state machine in
lnwallet/chancloser/rbf_coop_*.go does not integrate the AuxCloser
(or any other aux) hook that overlay channels depend on to build
aux-aware close transactions. A node that enables
--protocol.simple-taproot-overlay-chans ends up with RBF force-on and
its overlay channel closes silently fail, leaving the aux closer
unable to finalize on-chain.

Narrow the auto-enable so it only fires for TaprootChans (staging /
final taproot) and explicitly skips it when TaprootOverlayChans is set.
Operators that positively want RBF can still opt in via
--protocol.rbf-coop-close; this change only removes the forced path
that silently breaks overlay closes.

(cherry picked from commit 6d95154)
@ziggie1984 ziggie1984 merged commit cd1f7b5 into v0.21.x-branch May 5, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants