Skip to content

lndclient: handle SIMPLE_TAPROOT_FINAL in acceptor request#276

Merged
Roasbeef merged 1 commit into
lnd-21-0from
add-taproot-final-acceptor-case
May 20, 2026
Merged

lndclient: handle SIMPLE_TAPROOT_FINAL in acceptor request#276
Roasbeef merged 1 commit into
lnd-21-0from
add-taproot-final-acceptor-case

Conversation

@Roasbeef
Copy link
Copy Markdown
Member

In this PR, we add the missing SIMPLE_TAPROOT_FINAL case to the
acceptor request translator in lightning_client.go. Today the switch
in newAcceptorRequest handles SIMPLE_TAPROOT (staging bits) and
SIMPLE_TAPROOT_OVERLAY, but the production taproot type added in
lnd v0.21 falls through to the default arm and is rejected with
unhandled commitment type 7. Any node running an lndclient-backed
acceptor (loop, tapd, custom integrations) would silently refuse every
inbound production taproot open, which becomes a real problem now that
lightningnetwork/lnd#10820
makes the production variant the one users actually pick.

The fix is a single case that maps SIMPLE_TAPROOT_FINAL to
lnwallet.CommitmentTypeSimpleTaprootFinal, so the new variant reaches
the acceptor callback the same way as the staging and overlay variants
already do.

Targeted at lnd-21-0 since SIMPLE_TAPROOT_FINAL only exists in the
lnd v0.21 RPC surface, and that branch already pins
lnd v0.21.0-beta.rc1.

Test plan

  • go build ./...
  • go test ./...
  • Manual: stand up a node with an lndclient-backed acceptor, drive
    an inbound OpenChannel with CommitmentType_SIMPLE_TAPROOT_FINAL,
    confirm it reaches the acceptor callback instead of erroring out with
    unhandled commitment type 7.

In this commit, we add the missing case for the production taproot
channel type to `newAcceptorRequest` in `lightning_client.go`. The
existing switch handled the legacy `SIMPLE_TAPROOT` (staging) and
`SIMPLE_TAPROOT_OVERLAY` types, but `SIMPLE_TAPROOT_FINAL` (added in
lnd v0.21) fell through to the default and was rejected with
"unhandled commitment type 7". Any node running an lndclient-backed
acceptor (loop, tapd, custom integrations) would silently refuse every
inbound production taproot open.

We map it to `lnwallet.CommitmentTypeSimpleTaprootFinal` so the new
variant flows through to the acceptor callback the same way as the
staging and overlay variants.
@Roasbeef Roasbeef merged commit 473a16d into lnd-21-0 May 20, 2026
1 check passed
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

Successfully merging this pull request may close these issues.

1 participant