lnwallet+peer: add tapscript root awareness to musig2 sessions
With this commit, the channel is now aware of if it's a musig2 channel, that also has a tapscript root. We'll need to always pass in the tapscript root each time we: make the funding output, sign a new state, and also verify a new state.
This commit is contained in:
1 parent
c8b7987a39
commit
82ba5bf0bf
4 files changed
+104
-39
No files matched your search
+13
-8
@@ -1013,7 +1013,7 @@ func (lc *LightningChannel) createSignDesc() error {
|
||||
if chanState.ChanType.IsTaproot() {
|
||||
fundingPkScript, _, err = input.GenTaprootFundingScript(
|
||||
localKey, remoteKey, int64(lc.channelState.Capacity),
|
||||
fn.None[chainhash.Hash](),
|
||||
chanState.TapscriptRoot,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -6057,11 +6057,15 @@ func (lc *LightningChannel) getSignedCommitTx() (*wire.MsgTx, error) {
|
||||
"verification nonce: %w", err)
|
||||
}
|
||||
|
||||
tapscriptTweak := fn.MapOption(TapscriptRootToTweak)(
|
||||
lc.channelState.TapscriptRoot,
|
||||
)
|
||||
|
||||
// Now that we have the local nonce, we'll re-create the musig
|
||||
// session we had for this height.
|
||||
musigSession := NewPartialMusigSession(
|
||||
*localNonce, ourKey, theirKey, lc.Signer,
|
||||
&lc.fundingOutput, LocalMusigCommit,
|
||||
&lc.fundingOutput, LocalMusigCommit, tapscriptTweak,
|
||||
)
|
||||
|
||||
var remoteSig lnwire.PartialSigWithNonce
|
||||
@@ -8672,12 +8676,13 @@ func (lc *LightningChannel) InitRemoteMusigNonces(remoteNonce *musig2.Nonces,
|
||||
// TODO(roasbeef): propagate rename of signing and verification nonces
|
||||
|
||||
sessionCfg := &MusigSessionCfg{
|
||||
LocalKey: localChanCfg.MultiSigKey,
|
||||
RemoteKey: remoteChanCfg.MultiSigKey,
|
||||
LocalNonce: *localNonce,
|
||||
RemoteNonce: *remoteNonce,
|
||||
Signer: lc.Signer,
|
||||
InputTxOut: &lc.fundingOutput,
|
||||
LocalKey: localChanCfg.MultiSigKey,
|
||||
RemoteKey: remoteChanCfg.MultiSigKey,
|
||||
LocalNonce: *localNonce,
|
||||
RemoteNonce: *remoteNonce,
|
||||
Signer: lc.Signer,
|
||||
InputTxOut: &lc.fundingOutput,
|
||||
TapscriptTweak: lc.channelState.TapscriptRoot,
|
||||
}
|
||||
lc.musigSessions = NewMusigPairSession(
|
||||
sessionCfg,
|
||||
|
||||
Reference in new issue
Block a user