htlcswitch: add awareness of new partial sig fields and musig2 nonces

This commit is contained in:
Olaoluwa Osuntokun 2023-01-19 20:30:10 -08:00
parent 7d7513aa3c
commit e8b6e0ca45
No known key found for this signature in database
GPG key ID: 3BBD59E99B280306

View file

@ -10,6 +10,7 @@ import (
"sync/atomic"
"time"
"github.com/btcsuite/btcd/btcec/v2/schnorr/musig2"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/wire"
"github.com/btcsuite/btclog"
@ -738,6 +739,26 @@ func (l *channelLink) syncChanStates() error {
}
}
// Before we process the ChanSync message, if this is a taproot
// channel, then we'll init our musig2 nonces state.
if chanState.ChanType.IsTaproot() {
l.log.Infof("initializing musig2 nonces")
if remoteChanSyncMsg.LocalNonce == nil {
return fmt.Errorf("remote nonce is nil")
}
syncMsg := remoteChanSyncMsg
remoteNonce := &musig2.Nonces{
PubNonce: *syncMsg.LocalNonce,
}
err := l.channel.InitRemoteMusigNonces(remoteNonce)
if err != nil {
return fmt.Errorf("unable to init musig2 "+
"nonces: %w", err)
}
}
// In any case, we'll then process their ChanSync message.
l.log.Info("received re-establishment message from remote side")
@ -1909,6 +1930,7 @@ func (l *channelLink) handleUpstreamMsg(msg lnwire.Message) {
err = l.channel.ReceiveNewCommitment(&lnwallet.CommitSigs{
CommitSig: msg.CommitSig,
HtlcSigs: msg.HtlcSigs,
PartialSig: msg.PartialSig,
})
if err != nil {
// If we were unable to reconstruct their proposed
@ -2275,6 +2297,7 @@ func (l *channelLink) updateCommitTx() error {
ChanID: l.ChanID(),
CommitSig: newCommit.CommitSig,
HtlcSigs: newCommit.HtlcSigs,
PartialSig: newCommit.PartialSig,
}
l.cfg.Peer.SendMessage(false, commitSig)