|
|
|
|
@@ -205,14 +205,7 @@ func TestABCIResponsesSaveLoad2(t *testing.T) {
|
|
|
|
|
res, err := stateStore.LoadABCIResponses(h)
|
|
|
|
|
if assert.NoError(t, err, "%d", i) {
|
|
|
|
|
t.Log(res)
|
|
|
|
|
responses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
TxResults: tc.expected,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
sm.ABCIResponsesResultsHash(res)
|
|
|
|
|
sm.ABCIResponsesResultsHash(responses)
|
|
|
|
|
assert.Equal(t, sm.ABCIResponsesResultsHash(responses), sm.ABCIResponsesResultsHash(res), "%d", i)
|
|
|
|
|
assert.Equal(t, abci.MustHashResults(tc.expected), abci.MustHashResults(res.FinalizeBlock.TxResults), "%d", i)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@@ -278,7 +271,7 @@ func TestOneValidatorChangesSaveLoad(t *testing.T) {
|
|
|
|
|
header, blockID, responses := makeHeaderPartsResponsesValPowerChange(t, state, power)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(responses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
state, err = state.Update(blockID, &header, sm.ABCIResponsesResultsHash(responses), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
state, err = state.Update(blockID, &header, abci.MustHashResults(responses.FinalizeBlock.TxResults), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
err := stateStore.Save(state)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
@@ -456,14 +449,12 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
|
|
|
|
|
bps, err := block.MakePartSet(testPartSize)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
updatedState, err := state.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err := state.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
curTotal := val1VotingPower
|
|
|
|
|
// one increment step and one validator: 0 + power - total_power == 0
|
|
|
|
|
@@ -478,7 +469,7 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
|
|
|
|
|
updateAddVal := abci.ValidatorUpdate{PubKey: fvp, Power: val2VotingPower}
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{updateAddVal})
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
updatedState2, err := updatedState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState2, err := updatedState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, len(updatedState2.NextValidators.Validators), 2)
|
|
|
|
|
@@ -517,7 +508,7 @@ func TestProposerPriorityDoesNotGetResetToZero(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
// this will cause the diff of priorities (77)
|
|
|
|
|
// to be larger than threshold == 2*totalVotingPower (22):
|
|
|
|
|
updatedState3, err := updatedState2.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState3, err := updatedState2.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, len(updatedState3.NextValidators.Validators), 2)
|
|
|
|
|
@@ -575,15 +566,13 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
// no updates:
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
updatedState, err := state.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err := state.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
// 0 + 10 (initial prio) - 10 (avg) - 10 (mostest - total) = -10
|
|
|
|
|
@@ -600,7 +589,7 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{updateAddVal})
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
updatedState2, err := updatedState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState2, err := updatedState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
require.Equal(t, len(updatedState2.NextValidators.Validators), 2)
|
|
|
|
|
@@ -640,10 +629,10 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
|
|
|
|
|
updatedVal2,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
updatedState3, err := updatedState2.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState3, err := updatedState2.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
assert.Equal(t, updatedState3.Validators.Proposer.Address, updatedState3.NextValidators.Proposer.Address)
|
|
|
|
|
@@ -679,15 +668,13 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
|
|
|
|
|
// no changes in voting power and both validators have same voting power
|
|
|
|
|
// -> proposers should alternate:
|
|
|
|
|
oldState := updatedState3
|
|
|
|
|
abciResponses = &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb = &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
oldState, err = oldState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
oldState, err = oldState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
expectedVal1Prio2 = 1
|
|
|
|
|
expectedVal2Prio2 = -1
|
|
|
|
|
@@ -696,15 +683,13 @@ func TestProposerPriorityProposerAlternates(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
|
|
|
// no validator updates:
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
// alternate (and cyclic priorities):
|
|
|
|
|
assert.NotEqual(
|
|
|
|
|
@@ -755,12 +740,10 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
oldState := state
|
|
|
|
|
for i := 0; i < 10; i++ {
|
|
|
|
|
// no updates:
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
block, err := statefactory.MakeBlock(oldState, oldState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
@@ -769,7 +752,7 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
// no changes in voting power (ProposerPrio += VotingPower == Voting in 1st round; than shiftByAvg == 0,
|
|
|
|
|
// than -Total == -Voting)
|
|
|
|
|
@@ -791,10 +774,8 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
firstAddedVal := abci.ValidatorUpdate{PubKey: fvp, Power: firstAddedValVotingPower}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{firstAddedVal})
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{firstAddedVal},
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{firstAddedVal},
|
|
|
|
|
}
|
|
|
|
|
block, err := statefactory.MakeBlock(oldState, oldState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
@@ -803,18 +784,16 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err := oldState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
lastState := updatedState
|
|
|
|
|
for i := 0; i < 200; i++ {
|
|
|
|
|
// no updates:
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
block, err := statefactory.MakeBlock(lastState, lastState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
@@ -825,7 +804,7 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
|
|
|
|
|
updatedStateInner, err := lastState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedStateInner, err := lastState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
lastState = updatedStateInner
|
|
|
|
|
}
|
|
|
|
|
@@ -851,10 +830,8 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates([]abci.ValidatorUpdate{addedVal})
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{addedVal},
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{addedVal},
|
|
|
|
|
}
|
|
|
|
|
block, err := statefactory.MakeBlock(oldState, oldState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
@@ -862,7 +839,7 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
state, err = state.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
state, err = state.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
}
|
|
|
|
|
require.Equal(t, 10+2, len(state.NextValidators.Validators))
|
|
|
|
|
@@ -871,10 +848,8 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
gp, err := encoding.PubKeyToProto(genesisPubKey)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
removeGenesisVal := abci.ValidatorUpdate{PubKey: gp, Power: 0}
|
|
|
|
|
abciResponses = &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{removeGenesisVal},
|
|
|
|
|
},
|
|
|
|
|
fb = &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: []abci.ValidatorUpdate{removeGenesisVal},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
block, err = statefactory.MakeBlock(oldState, oldState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
@@ -884,9 +859,9 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
blockID = types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
updatedState, err = state.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err = state.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
// only the first added val (not the genesis val) should be left
|
|
|
|
|
assert.Equal(t, 11, len(updatedState.NextValidators.Validators))
|
|
|
|
|
@@ -897,12 +872,10 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
count := 0
|
|
|
|
|
isProposerUnchanged := true
|
|
|
|
|
for isProposerUnchanged {
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb = &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
block, err = statefactory.MakeBlock(curState, curState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
@@ -911,7 +884,7 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
blockID = types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
curState, err = curState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
curState, err = curState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
if !bytes.Equal(curState.Validators.Proposer.Address, curState.NextValidators.Proposer.Address) {
|
|
|
|
|
isProposerUnchanged = false
|
|
|
|
|
@@ -927,12 +900,10 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
proposers := make([]*types.Validator, numVals)
|
|
|
|
|
for i := 0; i < 100; i++ {
|
|
|
|
|
// no updates:
|
|
|
|
|
abciResponses := &tmstate.ABCIResponses{
|
|
|
|
|
FinalizeBlock: &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
},
|
|
|
|
|
fb := &abci.ResponseFinalizeBlock{
|
|
|
|
|
ValidatorUpdates: nil,
|
|
|
|
|
}
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(abciResponses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
validatorUpdates, err := types.PB2TM.ValidatorUpdates(fb.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
block, err := statefactory.MakeBlock(updatedState, updatedState.LastBlockHeight+1, new(types.Commit))
|
|
|
|
|
@@ -943,7 +914,7 @@ func TestLargeGenesisValidator(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
blockID := types.BlockID{Hash: block.Hash(), PartSetHeader: bps.Header()}
|
|
|
|
|
|
|
|
|
|
updatedState, err = updatedState.Update(blockID, &block.Header, sm.ABCIResponsesResultsHash(abciResponses), abciResponses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
updatedState, err = updatedState.Update(blockID, &block.Header, abci.MustHashResults(fb.TxResults), fb.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
if i > numVals { // expect proposers to cycle through after the first iteration (of numVals blocks):
|
|
|
|
|
if proposers[i%numVals] == nil {
|
|
|
|
|
@@ -1002,7 +973,7 @@ func TestManyValidatorChangesSaveLoad(t *testing.T) {
|
|
|
|
|
var validatorUpdates []*types.Validator
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(responses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
state, err = state.Update(blockID, &header, sm.ABCIResponsesResultsHash(responses), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
state, err = state.Update(blockID, &header, abci.MustHashResults(responses.FinalizeBlock.TxResults), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
nextHeight := state.LastBlockHeight + 1
|
|
|
|
|
err = stateStore.Save(state)
|
|
|
|
|
@@ -1080,7 +1051,7 @@ func TestConsensusParamsChangesSaveLoad(t *testing.T) {
|
|
|
|
|
header, blockID, responses := makeHeaderPartsResponsesParams(t, state, &cp)
|
|
|
|
|
validatorUpdates, err = types.PB2TM.ValidatorUpdates(responses.FinalizeBlock.ValidatorUpdates)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
state, err = state.Update(blockID, &header, sm.ABCIResponsesResultsHash(responses), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
state, err = state.Update(blockID, &header, abci.MustHashResults(responses.FinalizeBlock.TxResults), responses.FinalizeBlock.ConsensusParamUpdates, validatorUpdates)
|
|
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
err := stateStore.Save(state)
|
|
|
|
|
|