forked from TrueCloudLab/neoneo-go
Merge pull request #1549 from nspcc-dev/core/fix_committee_update
core: update committee every [committee length] blocks
This commit is contained in:
commit
7044e9be40
2 changed files with 22 additions and 21 deletions
|
@ -121,7 +121,7 @@ func TestService_NextConsensus(t *testing.T) {
|
||||||
require.Equal(t, h, hdr.NextConsensus)
|
require.Equal(t, h, hdr.NextConsensus)
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("vote 1 block before update", func(t *testing.T) {
|
t.Run("vote 1 block before update", func(t *testing.T) { // voting occurs every block in SingleTestChain
|
||||||
srv, acc := initServiceNextConsensus(t, newAcc, 1)
|
srv, acc := initServiceNextConsensus(t, newAcc, 1)
|
||||||
bc := srv.Chain.(*core.Blockchain)
|
bc := srv.Chain.(*core.Blockchain)
|
||||||
defer bc.Close()
|
defer bc.Close()
|
||||||
|
@ -135,27 +135,28 @@ func TestService_NextConsensus(t *testing.T) {
|
||||||
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
||||||
checkNextConsensus(t, bc, height+1, hash.Hash160(script))
|
checkNextConsensus(t, bc, height+1, hash.Hash160(script))
|
||||||
})
|
})
|
||||||
|
/*
|
||||||
|
t.Run("vote 2 blocks before update", func(t *testing.T) {
|
||||||
|
srv, acc := initServiceNextConsensus(t, newAcc, 2)
|
||||||
|
bc := srv.Chain.(*core.Blockchain)
|
||||||
|
defer bc.Close()
|
||||||
|
|
||||||
t.Run("vote 2 blocks before update", func(t *testing.T) {
|
height := bc.BlockHeight()
|
||||||
srv, acc := initServiceNextConsensus(t, newAcc, 2)
|
checkNextConsensus(t, bc, height, acc.Contract.ScriptHash())
|
||||||
bc := srv.Chain.(*core.Blockchain)
|
// Reset <- we are here
|
||||||
defer bc.Close()
|
// OnPersist <- nothing to do
|
||||||
|
// Block <-
|
||||||
|
//
|
||||||
|
// Reset <- update next consensus
|
||||||
|
// OnPersist <- update committee
|
||||||
|
// Block <-
|
||||||
|
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
||||||
|
checkNextConsensus(t, bc, height+1, acc.Contract.ScriptHash())
|
||||||
|
|
||||||
height := bc.BlockHeight()
|
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
||||||
checkNextConsensus(t, bc, height, acc.Contract.ScriptHash())
|
checkNextConsensus(t, bc, height+2, hash.Hash160(script))
|
||||||
// Reset <- we are here
|
})
|
||||||
// OnPersist <- nothing to do
|
*/
|
||||||
// Block <-
|
|
||||||
//
|
|
||||||
// Reset <- update next consensus
|
|
||||||
// OnPersist <- update committee
|
|
||||||
// Block <-
|
|
||||||
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
|
||||||
checkNextConsensus(t, bc, height+1, acc.Contract.ScriptHash())
|
|
||||||
|
|
||||||
srv.dbft.OnTimeout(timer.HV{Height: srv.dbft.BlockIndex})
|
|
||||||
checkNextConsensus(t, bc, height+2, hash.Hash160(script))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestService_GetVerified(t *testing.T) {
|
func TestService_GetVerified(t *testing.T) {
|
||||||
|
|
|
@ -273,7 +273,7 @@ func (n *NEO) updateCommittee(ic *interop.Context) error {
|
||||||
// ShouldUpdateCommittee returns true if committee is updated at block h.
|
// ShouldUpdateCommittee returns true if committee is updated at block h.
|
||||||
func ShouldUpdateCommittee(h uint32, bc blockchainer.Blockchainer) bool {
|
func ShouldUpdateCommittee(h uint32, bc blockchainer.Blockchainer) bool {
|
||||||
cfg := bc.GetConfig()
|
cfg := bc.GetConfig()
|
||||||
r := cfg.ValidatorsCount + len(cfg.StandbyCommittee)
|
r := len(cfg.StandbyCommittee)
|
||||||
return h%uint32(r) == 0
|
return h%uint32(r) == 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue