diff --git a/tss/coordinator.go b/tss/coordinator.go index d041a661..a37b84d3 100644 --- a/tss/coordinator.go +++ b/tss/coordinator.go @@ -24,7 +24,6 @@ import ( var ( initiatePeriod = 1 * time.Second - tssTimeout = 30 * time.Second ) type TssProcess interface { @@ -35,6 +34,7 @@ type TssProcess interface { StartParams(readyPeers []peer.ID) []byte SessionID() string ValidCoordinators() []peer.ID + Timeout() time.Duration } type Coordinator struct { @@ -46,7 +46,6 @@ type Coordinator struct { processLock sync.Mutex CoordinatorTimeout time.Duration - TssTimeout time.Duration InitiatePeriod time.Duration } @@ -62,7 +61,6 @@ func NewCoordinator( pendingProcesses: make(map[string]bool), - TssTimeout: tssTimeout, InitiatePeriod: initiatePeriod, } } @@ -162,7 +160,7 @@ func (c *Coordinator) handleError(ctx context.Context, err error, tssProcesses [ func (c *Coordinator) watchExecution(ctx context.Context, tssProcess TssProcess, coordinator peer.ID, cancel context.CancelFunc) error { failChn := make(chan *comm.WrappedMessage) subscriptionID := c.communication.Subscribe(tssProcess.SessionID(), comm.TssFailMsg, failChn) - ticker := time.NewTicker(c.TssTimeout) + ticker := time.NewTicker(tssProcess.Timeout()) defer func() { ticker.Stop() c.communication.UnSubscribe(subscriptionID) diff --git a/tss/ecdsa/common/base.go b/tss/ecdsa/common/base.go index 67e08050..74b07b97 100644 --- a/tss/ecdsa/common/base.go +++ b/tss/ecdsa/common/base.go @@ -8,6 +8,7 @@ import ( "fmt" "math/big" "runtime/debug" + "time" "github.com/binance-chain/tss-lib/tss" "github.com/libp2p/go-libp2p/core/host" @@ -33,6 +34,7 @@ type BaseTss struct { Communication comm.Communication Peers []peer.ID Log zerolog.Logger + TssTimeout time.Duration Cancel context.CancelFunc } @@ -128,3 +130,7 @@ func (b *BaseTss) BroadcastPeers(msg tss.Message) ([]peer.ID, error) { func (b *BaseTss) SessionID() string { return b.SID } + +func (b *BaseTss) Timeout() time.Duration { + return b.TssTimeout +} diff --git a/tss/ecdsa/keygen/keygen.go b/tss/ecdsa/keygen/keygen.go index dac91201..df107781 100644 --- a/tss/ecdsa/keygen/keygen.go +++ b/tss/ecdsa/keygen/keygen.go @@ -7,6 +7,7 @@ import ( "context" "errors" "math/big" + "time" "github.com/binance-chain/tss-lib/ecdsa/keygen" "github.com/binance-chain/tss-lib/tss" @@ -51,6 +52,7 @@ func NewKeygen( SID: sessionID, Log: log.With().Str("SessionID", sessionID).Str("Process", "keygen").Logger(), Cancel: func() {}, + TssTimeout: time.Minute * 10, }, storer: storer, threshold: threshold, diff --git a/tss/ecdsa/keygen/keygen_test.go b/tss/ecdsa/keygen/keygen_test.go index 8c974185..810ac286 100644 --- a/tss/ecdsa/keygen/keygen_test.go +++ b/tss/ecdsa/keygen/keygen_test.go @@ -77,7 +77,7 @@ func (s *KeygenTestSuite) Test_KeygenTimeout() { keygen := keygen.NewKeygen("keygen2", s.Threshold, host, &communication, s.MockECDSAStorer) electorFactory := elector.NewCoordinatorElectorFactory(host, s.BullyConfig) coordinator := tss.NewCoordinator(host, &communication, electorFactory) - coordinator.TssTimeout = time.Millisecond + keygen.TssTimeout = time.Millisecond coordinators = append(coordinators, coordinator) processes = append(processes, keygen) } diff --git a/tss/ecdsa/resharing/resharing.go b/tss/ecdsa/resharing/resharing.go index 18793618..3abb9d1d 100644 --- a/tss/ecdsa/resharing/resharing.go +++ b/tss/ecdsa/resharing/resharing.go @@ -8,6 +8,7 @@ import ( "encoding/json" "errors" "math/big" + "time" "github.com/binance-chain/tss-lib/ecdsa/keygen" "github.com/binance-chain/tss-lib/ecdsa/resharing" @@ -68,6 +69,7 @@ func NewResharing( SID: sessionID, Log: log.With().Str("SessionID", sessionID).Str("Process", "resharing").Logger(), Cancel: func() {}, + TssTimeout: time.Minute * 10, }, key: key, storer: storer, diff --git a/tss/ecdsa/signing/signing.go b/tss/ecdsa/signing/signing.go index 0c2e6fca..995a7e76 100644 --- a/tss/ecdsa/signing/signing.go +++ b/tss/ecdsa/signing/signing.go @@ -74,6 +74,7 @@ func NewSigning( SID: sessionID, Log: log.With().Str("SessionID", sessionID).Str("messageID", messageID).Str("Process", "signing").Logger(), Cancel: func() {}, + TssTimeout: time.Second * 30, }, key: key, msg: msg, diff --git a/tss/ecdsa/signing/signing_test.go b/tss/ecdsa/signing/signing_test.go index fa450d62..c0d41dfd 100644 --- a/tss/ecdsa/signing/signing_test.go +++ b/tss/ecdsa/signing/signing_test.go @@ -156,7 +156,7 @@ func (s *SigningTestSuite) Test_SigningTimeout() { } electorFactory := elector.NewCoordinatorElectorFactory(host, s.BullyConfig) coordinator := tss.NewCoordinator(host, &communication, electorFactory) - coordinator.TssTimeout = time.Nanosecond + signing.TssTimeout = time.Nanosecond coordinators = append(coordinators, coordinator) processes = append(processes, signing) }