diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-11-18 22:29:39 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-18 22:29:39 +0800 |
commit | 14e7fb10da9160d01f6dda0b86eaf7fe99d40a79 (patch) | |
tree | 81c931fccf1e981cfbd46dbfb3106a010882edba /core/configuration-chain.go | |
parent | 591c80dbe9dbdea4cec202b07f4da081020f964a (diff) | |
download | tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar.gz tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar.bz2 tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar.lz tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar.xz tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.tar.zst tangerine-consensus-14e7fb10da9160d01f6dda0b86eaf7fe99d40a79.zip |
core: Handle issues if DKG/CRS is already finished (#334)
Diffstat (limited to 'core/configuration-chain.go')
-rw-r--r-- | core/configuration-chain.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/core/configuration-chain.go b/core/configuration-chain.go index 47a40b1..fdfcd13 100644 --- a/core/configuration-chain.go +++ b/core/configuration-chain.go @@ -107,6 +107,10 @@ func (cc *configurationChain) runDKG(round uint64) error { cc.dkgLock.Lock() defer cc.dkgLock.Unlock() if cc.dkg == nil || cc.dkg.round != round { + if cc.dkg != nil && cc.dkg.round > round { + cc.logger.Warn("DKG canceled", "round", round) + return nil + } return ErrDKGNotRegistered } if func() bool { @@ -117,6 +121,11 @@ func (cc *configurationChain) runDKG(round uint64) error { }() { return nil } + cc.logger.Debug("Calling Governance.IsDKGFinal", "round", round) + if cc.gov.IsDKGFinal(round) { + cc.logger.Warn("DKG already final", "round", round) + return nil + } ticker := newTicker(cc.gov, round, TickerDKG) cc.dkgLock.Unlock() @@ -183,10 +192,6 @@ func (cc *configurationChain) runDKG(round uint64) error { if err != nil { return err } - signer, err := cc.dkg.recoverShareSecret(gpk.qualifyIDs) - if err != nil { - return err - } qualifies := "" for nID := range gpk.qualifyNodeIDs { qualifies += fmt.Sprintf("%s ", nID.String()[:6]) @@ -196,6 +201,14 @@ func (cc *configurationChain) runDKG(round uint64) error { "round", round, "count", len(gpk.qualifyIDs), "qualifies", qualifies) + if _, exist := gpk.qualifyNodeIDs[cc.ID]; !exist { + cc.logger.Warn("Self is not in Qualify Nodes") + return nil + } + signer, err := cc.dkg.recoverShareSecret(gpk.qualifyIDs) + if err != nil { + return err + } cc.dkgResult.Lock() defer cc.dkgResult.Unlock() cc.dkgSigner[round] = signer |