From 84bde7dacd4bcd5e57fc506e34db00fd12faa298 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 14 May 2024 23:41:12 -0300 Subject: [PATCH] musig2 works now. --- go.mod | 4 ++-- go.sum | 4 ++++ key.go | 2 +- musig2.go | 11 ++++++++--- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6ec6656..66c89dc 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.21 toolchain go1.21.0 require ( - github.com/btcsuite/btcd/btcec/v2 v2.3.2 + github.com/btcsuite/btcd/btcec/v2 v2.3.3 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/fatih/color v1.16.0 github.com/mailru/easyjson v0.7.7 @@ -22,7 +22,7 @@ require ( github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/fiatjaf/eventstore v0.2.16 // indirect github.com/gobwas/httphead v0.1.0 // indirect github.com/gobwas/pool v0.2.1 // indirect diff --git a/go.sum b/go.sum index be183eb..c2d4069 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v5 github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.3 h1:6+iXlDKE8RMtKsvK0gshlXIuPbyWM/h84Ensb7o3sC0= +github.com/btcsuite/btcd/btcec/v2 v2.3.3/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= @@ -41,6 +43,8 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPc github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= diff --git a/key.go b/key.go index 2ede0c9..7e0cb4b 100644 --- a/key.go +++ b/key.go @@ -152,7 +152,7 @@ var combine = &cli.Command{ return err } - fmt.Println(hex.EncodeToString(agg.FinalKey.X().Bytes())) + fmt.Println(hex.EncodeToString(agg.FinalKey.SerializeCompressed())) return nil }, } diff --git a/musig2.go b/musig2.go index 13fc56c..3ad902a 100644 --- a/musig2.go +++ b/musig2.go @@ -134,6 +134,7 @@ func performMusig( if err != nil { return false, fmt.Errorf("failed to create session as the last peer to include our key: %w", err) } + knownNonces = append(knownNonces, session.PublicNonce()) } else { // otherwise we have included our own nonce in the parameters (from copypasting) but must // also include the secret nonce that wasn't shared with peers @@ -157,13 +158,18 @@ func performMusig( var noncesOk bool for _, b66nonce := range knownNonces { + if b66nonce == session.PublicNonce() { + // don't add our own nonce + continue + } + noncesOk, err = session.RegisterPubNonce(b66nonce) if err != nil { return false, fmt.Errorf("failed to register nonce: %w", err) } } if !noncesOk { - return false, fmt.Errorf("we've registered all the nonces we had but at least one is missing") + return false, fmt.Errorf("we've registered all the nonces we had but at least one is missing, this shouldn't happen") } // signing phase @@ -172,7 +178,6 @@ func performMusig( hash, _ := hex.DecodeString(id) var msg32 [32]byte copy(msg32[:], hash) - fmt.Println("signing over", hex.EncodeToString(msg32[:])) partialSig, err := session.Sign(msg32) // this will already include our sig in the bundle if err != nil { return false, fmt.Errorf("failed to produce partial signature: %w", err) @@ -212,7 +217,7 @@ func printPublicCommandForNextPeer( maybeNonceSecret = " --musig2-nonce-secret ''" } - fmt.Fprintf(os.Stderr, "the next signer and they should call this on their side:\nnak event --sec --musig2 %d %s%s%s%s%s", + fmt.Fprintf(os.Stderr, "the next signer and they should call this on their side:\nnak event --sec --musig2 %d %s%s%s%s%s\n", numSigners, eventToCliArgs(evt), signersToCliArgs(knownSigners),