-
Notifications
You must be signed in to change notification settings - Fork 2.3k
multi: implement awareness of the final/production taproot channel variant #9985
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
Merged
Roasbeef
merged 42 commits into
lightningnetwork:master
from
Roasbeef:prod-taproot-chans
Apr 13, 2026
Merged
Changes from all commits
Commits
Show all changes
42 commits
Select commit
Hold shift + click to select a range
8ce6327
feature: add taproot final to feature bit manager
Roasbeef fc2e01a
input: add production taproot witness types for final channels
Roasbeef 0720abc
input: add production taproot HTLC succeed input constructor
Roasbeef 749a8e4
channeldb: add production taproot channel type support
Roasbeef 6b0c3f5
contractcourt: add channel type support to HTLC resolvers
Roasbeef 269d2c3
contractcourt: implement production taproot witness selection
Roasbeef f9a8598
contractcourt: integrate production taproot support in nursery
Roasbeef 60b3d2c
input: thread script options through taproot HTLC functions
Roasbeef 2e0343c
lnwallet: integrate production script options in commitment generation
Roasbeef 4ee8bd5
lnrpc+rpcserver: add production taproot commitment type to RPC interface
Roasbeef 27ae0cb
funding: add production taproot channel negotiation support
Roasbeef d15b961
itest+input: add production taproot channel integration tests
Roasbeef 597af82
watchtower: prepare infrastructure for production taproot support
Roasbeef d86b840
lnrpc/walletrpc: add witness types for taproot chans final
Roasbeef 5bbfdc6
itest: extend relevant itests to cover taproot chans final
Roasbeef 09acced
lnwire: add local_nonces field to revoke_and_ack
Roasbeef 55ab4b0
lnwallet: add support for local nonces map in revoke_and_ack
Roasbeef 5ffcd82
multi: use feature bits to pick which taproot nonce field to use
Roasbeef 29de2c8
cmd/commands: add taproot-final to lncli open command
Roasbeef 08c42b1
multi: add custom nonce rand support to MuSig2 sessions
Roasbeef 38c415a
lnwallet: add taproot channel test vector generator
Roasbeef fa97946
lnwallet: emit actual MuSig2 partial sigs and nonces in test vectors
Roasbeef b78de44
lnwallet: fix HTLC sig-to-transaction mapping in test vector generator
Roasbeef 745bdc1
lnwallet: fix HTLC trimming test case to use dust_limit for zero-fee …
Roasbeef 77da917
lnwallet: add 3rd-party signature verification for taproot test vectors
Roasbeef 70f189f
lnwallet: regenerate taproot channel test vectors
Roasbeef 2148445
lnwallet: add secret nonce stashing to MusigSession for test vectors
Roasbeef 4c225dd
lnwallet: add MuSig2 secret nonces and partial sig replay to test vec…
Roasbeef 50981df
lnwallet: regenerate taproot test vectors with secret nonces
Roasbeef 63450b8
lnwallet: use BIP-340 nonce derivation for HTLC sigs in test vectors
Roasbeef 1866770
lnwallet: regenerate test vectors with BIP-340 HTLC signatures
Roasbeef 1d7b5bb
lnrpc: regenerate protobuf files for Go 1.26 compatibility
Roasbeef a279700
lnwallet: fix fundingTxid scope in TestChanSyncTaprootLocalNonces
Roasbeef 65d04f3
multi: fix linter issues
Roasbeef 7a18fba
watchtower: add production taproot channel support to justice kit
Roasbeef 086f692
itest: extend watchtower breach test to cover production taproot chan…
Roasbeef 890636a
multi: fix linter issues
Roasbeef 91e35c4
docs/release-notes: add release note for production taproot channels
Roasbeef aaf7c29
lnwallet: return error from AggregateNonces in MusigSession
Roasbeef 98c086b
chanbackup: add SimpleTaprootFinalVersion for production taproot backups
Roasbeef fd3b638
multi: fix lint and itest failures for production taproot channels
Roasbeef 85bba2c
multi: add SCB restore support for production taproot channels
Roasbeef File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like this introduces a new SCB version for
SIMPLE_TAPROOT_FINAL, butchanrestore.openChannelShell()still does not map version 7 back to aChannelType. That means newly created backups for final taproot channels can be serialized/deserialized here, but restore/DLP will still fail once they reachchanrestore.This we can simply add a
case chanbackup.SimpleTaprootFinalVersionhere (same asSimpleTaprootVersion, pluschanneldb.TaprootFinalBit),lnd/chanrestore.go
Line 160 in 6b53079
So we can properly reconstruct the channel type, and add an SCB restore itest for
SIMPLE_TAPROOT_FINAL.