aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/oracle_contracts.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@byzantine-lab.io>2019-08-04 13:39:30 +0800
committerWei-Ning Huang <w@byzantine-lab.io>2019-09-17 16:57:31 +0800
commit5e30a1686f8a049c27d10d21cca1b7b5aee18f70 (patch)
tree8d687af451cd3f86b865e92814f3e5fd9a65541b /core/vm/oracle_contracts.go
parent174f6bfcdf4e2c7fea3a071653908b477ad9a3b3 (diff)
downloadgo-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar.gz
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar.bz2
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar.lz
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar.xz
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.tar.zst
go-tangerine-5e30a1686f8a049c27d10d21cca1b7b5aee18f70.zip
core: consider reset round when getting config state
Previous config snapshot is determined as follows, for round n: Return the snapshot state of round (n - ConfigRoundShift) However this may cause the system to stuck at a particular round if the DKG for the next round continues to fail (maybe due to node failure). To fix this, instead of using the simple logic above, we consider the reset rounds as a normal round, and use the snapshot of the reset rounds as config. Thus we could gradually push out the broken nodes from nodeset. The snapshot is now determined as follows, for round n: If resetCount < ConfigRoundShift Return the snapshot state of round (n - ConfigRoundShift) Else Reutrn the stateshot state of (n + resetCount - ConfigRoundShift)
Diffstat (limited to 'core/vm/oracle_contracts.go')
-rw-r--r--core/vm/oracle_contracts.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go
index a2c7d7814..e1408d8d2 100644
--- a/core/vm/oracle_contracts.go
+++ b/core/vm/oracle_contracts.go
@@ -2172,7 +2172,7 @@ func (g *GovernanceContract) resetDKG(newSignedCRS []byte) ([]byte, error) {
g.fineFailStopDKG(tsigThreshold)
// Update CRS.
- state, err := g.util.GetStateAtRound(round.Uint64())
+ state, err := g.util.GetRoundState(round.Uint64())
if err != nil {
return nil, errExecutionReverted
}