From 9691a14bd48538ef27ad0d201af9372071521aa9 Mon Sep 17 00:00:00 2001 From: mpetrun5 Date: Fri, 8 May 2026 16:37:21 +0200 Subject: [PATCH 1/4] fix: reduce process initiate time --- tss/coordinator.go | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/tss/coordinator.go b/tss/coordinator.go index 510d06c6..ee7f5395 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -22,7 +22,7 @@ import ( ) var ( - initiatePeriod = 1 * time.Second + initiatePeriod = 100 * time.Millisecond ) type TssProcess interface { @@ -185,10 +185,10 @@ func (c *Coordinator) start( } // broadcastInitiateMsg sends TssInitiateMsg to all peers -func (c *Coordinator) broadcastInitiateMsg(sessionID string) { +func (c *Coordinator) broadcastInitiateMsg(sessionID string, peers peer.IDSlice) { log.Debug().Str("SessionID", sessionID).Msgf("broadcasted initiate message") _ = c.communication.Broadcast( - c.host.Peerstore().Peers(), []byte{}, comm.TssInitiateMsg, sessionID, + peers, []byte{}, comm.TssInitiateMsg, sessionID, ) } @@ -212,7 +212,7 @@ func (c *Coordinator) initiate( ticker := time.NewTicker(c.InitiatePeriod) defer ticker.Stop() initiateStart := time.Now() - c.broadcastInitiateMsg(tssProcess.SessionID()) + go c.broadcastInitiateMsg(tssProcess.SessionID(), c.host.Peerstore().Peers()) for { select { case err := <-errChn: @@ -237,14 +237,25 @@ func (c *Coordinator) initiate( return err } - _ = c.communication.Broadcast(c.host.Peerstore().Peers(), startMsgBytes, comm.TssStartMsg, tssProcess.SessionID()) + go func() { + _ = c.communication.Broadcast(c.host.Peerstore().Peers(), startMsgBytes, comm.TssStartMsg, tssProcess.SessionID()) + }() c.metrics.RecordInitiateDuration(time.Since(initiateStart)) ticker.Stop() go c.startProcess(ctx, tssProcess, true, startParams, resultChn, errChn) } case <-ticker.C: { - c.broadcastInitiateMsg(tssProcess.SessionID()) + unreadyPeers := make([]peer.ID, 0) + for _, p := range c.host.Peerstore().Peers() { + if slices.Contains(readyPeers, p) { + continue + } + + unreadyPeers = append(unreadyPeers, p) + } + + go c.broadcastInitiateMsg(tssProcess.SessionID(), unreadyPeers) } case <-ctx.Done(): { @@ -281,9 +292,11 @@ func (c *Coordinator) waitForStart( } log.Debug().Str("SessionID", tssProcess.SessionID()).Msgf("sent ready message to %s", wMsg.From) - _ = c.communication.Broadcast( - peer.IDSlice{wMsg.From}, []byte{}, comm.TssReadyMsg, tssProcess.SessionID(), - ) + go func() { + _ = c.communication.Broadcast( + peer.IDSlice{wMsg.From}, []byte{}, comm.TssReadyMsg, tssProcess.SessionID(), + ) + }() } case err := <-errChn: return err From 7f9edac13c5f297036c638efa58701cb6024664d Mon Sep 17 00:00:00 2001 From: mpetrun5 Date: Fri, 8 May 2026 16:47:13 +0200 Subject: [PATCH 2/4] Lint --- tss/coordinator.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tss/coordinator.go b/tss/coordinator.go index ee7f5395..5ad4d809 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -248,7 +248,8 @@ func (c *Coordinator) initiate( { unreadyPeers := make([]peer.ID, 0) for _, p := range c.host.Peerstore().Peers() { - if slices.Contains(readyPeers, p) { + peerReady := slices.Contains(readyPeers, p) { + if peerReady { continue } From e1e594c62fd16a71a7e5432c2771e4b8b36ebfdd Mon Sep 17 00:00:00 2001 From: mpetrun5 Date: Fri, 8 May 2026 16:56:44 +0200 Subject: [PATCH 3/4] Inline slices.Contains call --- tss/coordinator.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tss/coordinator.go b/tss/coordinator.go index 5ad4d809..d19ebffb 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -247,9 +247,8 @@ func (c *Coordinator) initiate( case <-ticker.C: { unreadyPeers := make([]peer.ID, 0) - for _, p := range c.host.Peerstore().Peers() { - peerReady := slices.Contains(readyPeers, p) { - if peerReady { + for _, p := range readyPeers { + if slices.Contains[peer.IDSlice](readyPeers, p) { continue } From ca77d450b3bfe404c03c1c7157b0706d102f41d2 Mon Sep 17 00:00:00 2001 From: mpetrun5 Date: Fri, 8 May 2026 17:06:37 +0200 Subject: [PATCH 4/4] Lint --- tss/coordinator.go | 2 +- tss/ecdsa/signing/signing.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tss/coordinator.go b/tss/coordinator.go index d19ebffb..390dba4d 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -7,6 +7,7 @@ import ( "context" "errors" "fmt" + "slices" "sync" "time" @@ -18,7 +19,6 @@ import ( "github.com/sprintertech/sprinter-signing/comm/elector" "github.com/sprintertech/sprinter-signing/tss/ecdsa/common" "github.com/sprintertech/sprinter-signing/tss/message" - "golang.org/x/exp/slices" ) var ( diff --git a/tss/ecdsa/signing/signing.go b/tss/ecdsa/signing/signing.go index 282fcc38..ea7fe6e3 100644 --- a/tss/ecdsa/signing/signing.go +++ b/tss/ecdsa/signing/signing.go @@ -9,6 +9,7 @@ import ( "fmt" "math/big" "reflect" + "slices" "sync" "time" @@ -20,7 +21,6 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/rs/zerolog/log" "github.com/sourcegraph/conc/pool" - "golang.org/x/exp/slices" "github.com/sprintertech/sprinter-signing/comm" "github.com/sprintertech/sprinter-signing/keyshare"