aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJimmy Hu <jimmy.hu@dexon.org>2019-03-17 22:52:40 +0800
committerGitHub <noreply@github.com>2019-03-17 22:52:40 +0800
commitfbab19d0998d9a2dc41ce8819a68e5e71e9ceb44 (patch)
treef30400be792b3ee8ecba38c360fe02573db4c3de /core
parent7b1113e5231d0841c5543228d35b12a83925977a (diff)
downloaddexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar.gz
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar.bz2
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar.lz
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar.xz
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.tar.zst
dexon-fbab19d0998d9a2dc41ce8819a68e5e71e9ceb44.zip
core: check reset of dkg types when adding (#268)
* vendor: sync to latest core * core: check dkg reset
Diffstat (limited to 'core')
-rw-r--r--core/vm/oracle_contracts.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go
index 56e82f7df..e58133990 100644
--- a/core/vm/oracle_contracts.go
+++ b/core/vm/oracle_contracts.go
@@ -1242,6 +1242,10 @@ func (g *GovernanceContract) addDKGComplaint(round *big.Int, comp []byte) ([]byt
return g.penalize()
}
+ if dkgComplaint.Reset != g.state.DKGResetCount(round).Uint64() {
+ return g.penalize()
+ }
+
// DKGComplaint must belongs to someone in DKG set.
if !g.inDKGSet(round, dkgComplaint.ProposerID) {
return g.penalize()
@@ -1324,6 +1328,10 @@ func (g *GovernanceContract) addDKGMasterPublicKey(round *big.Int, mpk []byte) (
return g.penalize()
}
+ if dkgMasterPK.Reset != g.state.DKGResetCount(round).Uint64() {
+ return g.penalize()
+ }
+
// DKGMasterPublicKey must belongs to someone in DKG set.
if !g.inDKGSet(round, dkgMasterPK.ProposerID) {
return g.penalize()
@@ -1350,6 +1358,10 @@ func (g *GovernanceContract) addDKGMPKReady(round *big.Int, ready []byte) ([]byt
return g.penalize()
}
+ if dkgReady.Reset != g.state.DKGResetCount(round).Uint64() {
+ return g.penalize()
+ }
+
// DKGFInalize must belongs to someone in DKG set.
if !g.inDKGSet(round, dkgReady.ProposerID) {
return g.penalize()
@@ -1380,6 +1392,10 @@ func (g *GovernanceContract) addDKGFinalize(round *big.Int, finalize []byte) ([]
return g.penalize()
}
+ if dkgFinalize.Reset != g.state.DKGResetCount(round).Uint64() {
+ return g.penalize()
+ }
+
// DKGFInalize must belongs to someone in DKG set.
if !g.inDKGSet(round, dkgFinalize.ProposerID) {
return g.penalize()