diff options
author | Jimmy Hu <jimmy.hu@dexon.org> | 2018-10-08 18:02:19 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-08 18:02:19 +0800 |
commit | 54b3726dc9183cbf2b517f71413a2559040ae5e0 (patch) | |
tree | 8ab2e3e360dac54d1b06c9dd93471b2555edf9be /core | |
parent | e90d1ceaf78afeb624665c6d37a808ea7bbb294c (diff) | |
download | dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar.gz dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar.bz2 dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar.lz dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar.xz dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.tar.zst dexon-consensus-54b3726dc9183cbf2b517f71413a2559040ae5e0.zip |
core: Remove round from gov.ProposeCRS (#183)
Diffstat (limited to 'core')
-rw-r--r-- | core/consensus.go | 2 | ||||
-rw-r--r-- | core/interfaces.go | 2 | ||||
-rw-r--r-- | core/nodeset-cache_test.go | 2 | ||||
-rw-r--r-- | core/test/governance.go | 15 |
4 files changed, 14 insertions, 7 deletions
diff --git a/core/consensus.go b/core/consensus.go index e0f8ef2..3b8883e 100644 --- a/core/consensus.go +++ b/core/consensus.go @@ -445,7 +445,7 @@ func (con *Consensus) runCRS() { if err != nil { log.Println(err) } else { - con.gov.ProposeCRS(con.round+1, crs) + con.gov.ProposeCRS(crs) } } } diff --git a/core/interfaces.go b/core/interfaces.go index 710550f..77d7610 100644 --- a/core/interfaces.go +++ b/core/interfaces.go @@ -97,7 +97,7 @@ type Governance interface { CRS(round uint64) common.Hash // Propose a CRS of round. - ProposeCRS(round uint64, signedCRS []byte) + ProposeCRS(signedCRS []byte) // NodeSet returns the node set at a given round. // Return the genesis node set if round == 0. diff --git a/core/nodeset-cache_test.go b/core/nodeset-cache_test.go index 993b3ec..f36b59a 100644 --- a/core/nodeset-cache_test.go +++ b/core/nodeset-cache_test.go @@ -41,7 +41,7 @@ func (g *testGov) Configuration(round uint64) (cfg *types.Config) { } } func (g *testGov) CRS(round uint64) (b common.Hash) { return g.crs } -func (g *testGov) ProposeCRS(uint64, []byte) {} +func (g *testGov) ProposeCRS([]byte) {} func (g *testGov) NodeSet(round uint64) []crypto.PublicKey { // Randomly generating keys, and check them for verification. g.curKeys = []crypto.PublicKey{} diff --git a/core/test/governance.go b/core/test/governance.go index 31fe5f4..f013534 100644 --- a/core/test/governance.go +++ b/core/test/governance.go @@ -40,7 +40,7 @@ type Governance struct { lambdaBA time.Duration lambdaDKG time.Duration privateKeys map[types.NodeID]crypto.PrivateKey - crs map[uint64]common.Hash + crs []common.Hash tsig map[uint64]crypto.Signature DKGComplaint map[uint64][]*types.DKGComplaint DKGMasterPublicKey map[uint64][]*types.DKGMasterPublicKey @@ -58,7 +58,7 @@ func NewGovernance(nodeCount int, lambda time.Duration) ( lambdaBA: lambda, lambdaDKG: lambda * 10, privateKeys: make(map[types.NodeID]crypto.PrivateKey), - crs: map[uint64]common.Hash{0: hashCRS}, + crs: []common.Hash{hashCRS}, tsig: make(map[uint64]crypto.Signature), DKGComplaint: make(map[uint64][]*types.DKGComplaint), DKGMasterPublicKey: make(map[uint64][]*types.DKGMasterPublicKey), @@ -107,14 +107,21 @@ func (g *Governance) Configuration(_ uint64) *types.Config { func (g *Governance) CRS(round uint64) common.Hash { g.lock.RLock() defer g.lock.RUnlock() + if round >= uint64(len(g.crs)) { + return common.Hash{} + } return g.crs[round] } // ProposeCRS propose a CRS. -func (g *Governance) ProposeCRS(round uint64, signedCRS []byte) { +func (g *Governance) ProposeCRS(signedCRS []byte) { g.lock.Lock() defer g.lock.Unlock() - g.crs[round] = crypto.Keccak256Hash(signedCRS) + crs := crypto.Keccak256Hash(signedCRS) + if g.crs[len(g.crs)-1].Equal(crs) { + return + } + g.crs = append(g.crs, crs) } // PrivateKeys return the private key for that node, this function |