diff options
-rw-r--r-- | core/governance.go | 2 | ||||
-rw-r--r-- | core/vm/oracle_contracts.go | 2 | ||||
-rw-r--r-- | core/vm/utils.go | 40 |
3 files changed, 9 insertions, 35 deletions
diff --git a/core/governance.go b/core/governance.go index 8cfed5e13..8bad0ca98 100644 --- a/core/governance.go +++ b/core/governance.go @@ -110,7 +110,7 @@ func (g *Governance) GetStateForDKGAtRound(round uint64) (*vm.GovernanceState, e if round == dkgRound { return gs, nil } - return g.util.GetRoundState(round) + return g.util.GetStateAtRound(round) } func (g *Governance) CRSRound() uint64 { diff --git a/core/vm/oracle_contracts.go b/core/vm/oracle_contracts.go index f30ed3bdb..10c8da424 100644 --- a/core/vm/oracle_contracts.go +++ b/core/vm/oracle_contracts.go @@ -2299,7 +2299,7 @@ func (g *GovernanceContract) resetDKG(newSignedCRS []byte) ([]byte, error) { g.fineFailStopDKG(nackThreshold) // Update CRS. - state, err := g.util.GetRoundState(round.Uint64()) + state, err := g.util.GetStateAtRound(round.Uint64()) if err != nil { return nil, errExecutionReverted } diff --git a/core/vm/utils.go b/core/vm/utils.go index 5ccc47867..0cc6343cc 100644 --- a/core/vm/utils.go +++ b/core/vm/utils.go @@ -28,7 +28,7 @@ func (g GovUtil) GetRoundHeight(round uint64) uint64 { return gs.RoundHeight(big.NewInt(int64(round))).Uint64() } -func (g GovUtil) GetRoundState(round uint64) (*GovernanceState, error) { +func (g GovUtil) GetStateAtRound(round uint64) (*GovernanceState, error) { height := g.GetRoundHeight(round) if round != 0 && height == 0 { @@ -44,38 +44,12 @@ func (g GovUtil) GetRoundState(round uint64) (*GovernanceState, error) { } func (g GovUtil) GetConfigState(round uint64) (*GovernanceState, error) { - headState, err := g.Intf.GetHeadGovState() - if err != nil { - return nil, err - } - if round < dexCore.ConfigRoundShift { - return g.GetRoundState(0) - } - - resetCount := headState.DKGResetCount(new(big.Int).SetUint64(round)).Uint64() - - // If we are resetting more round then ConfigRoundShift, we need to get the - // state of (resetCount - ConfigRoundShift) instead. - if resetCount >= dexCore.ConfigRoundShift { - shift := resetCount - dexCore.ConfigRoundShift - - prevConfigState, err := g.GetConfigState(round - 1) - if err != nil { - log.Error("Failed to get previous round config state", "round", round-1) - return nil, err - } - - height := g.GetRoundHeight(round-1) + shift*prevConfigState.RoundLength().Uint64() - s, err := g.Intf.StateAt(height) - if err != nil { - log.Error("Failed to get state", "height", height) - return nil, err - } - return &GovernanceState{StateDB: s}, nil + round = 0 + } else { + round -= dexCore.ConfigRoundShift } - - return g.GetRoundState(round - dexCore.ConfigRoundShift) + return g.GetStateAtRound(round) } func (g *GovUtil) CRSRound() uint64 { @@ -88,7 +62,7 @@ func (g *GovUtil) CRSRound() uint64 { func (g GovUtil) CRS(round uint64) common.Hash { if round <= dexCore.DKGDelayRound { - s, err := g.GetRoundState(0) + s, err := g.GetStateAtRound(0) if err != nil { return common.Hash{} } @@ -109,7 +83,7 @@ func (g GovUtil) CRS(round uint64) common.Hash { return common.Hash{} } } else { - s, err = g.GetRoundState(round) + s, err = g.GetStateAtRound(round) if err != nil { return common.Hash{} } |