mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-28 19:31:34 +00:00
consensus: remove unnecessary call to ComputeNextBlockValidators
dBFT doesn't use validators got from this call to GetValidators callback, because NeoGo doesn't properly set WithGetConsensusAddress, and thus this call can be safely skipped. Instead, NeoGo fills NextConsensus field by itself in NewBlockFromContext callback. This commit technically doesn't perform any functional changes and doesn't affect the problem described in #3253 in any way. This commit is just a removal of the code that was never used by NeoGo library. This commit is a direct consequence of https://github.com/nspcc-dev/dbft/issues/84. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
parent
d7d850ac7d
commit
47aefad7ea
1 changed files with 15 additions and 5 deletions
|
@ -681,12 +681,12 @@ func (s *service) getValidators(txes ...block.Transaction) []crypto.PublicKey {
|
||||||
// block's validators, thus should return validators from the current
|
// block's validators, thus should return validators from the current
|
||||||
// epoch without recalculation.
|
// epoch without recalculation.
|
||||||
pKeys, err = s.Chain.GetNextBlockValidators()
|
pKeys, err = s.Chain.GetNextBlockValidators()
|
||||||
} else {
|
|
||||||
// getValidators with non-empty args is used by dbft to fill block's
|
|
||||||
// NextConsensus field, ComputeNextBlockValidators will return proper
|
|
||||||
// value for NextConsensus wrt dBFT epoch start/end.
|
|
||||||
pKeys = s.Chain.ComputeNextBlockValidators()
|
|
||||||
}
|
}
|
||||||
|
// getValidators with non-empty args is used by dbft to fill block's
|
||||||
|
// NextConsensus field, but NeoGo doesn't provide WithGetConsensusAddress
|
||||||
|
// callback and fills NextConsensus by itself via WithNewBlockFromContext
|
||||||
|
// callback. Thus, leave pKeys empty if txes != nil.
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.log.Error("error while trying to get validators", zap.Error(err))
|
s.log.Error("error while trying to get validators", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
@ -727,6 +727,16 @@ func (s *service) newBlockFromContext(ctx *dbft.Context) block.Block {
|
||||||
block.PrevStateRoot = sr.Root
|
block.PrevStateRoot = sr.Root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ComputeNextBlockValidators returns proper set of validators wrt dBFT epochs
|
||||||
|
// boundary. I.e. for the last block in the dBFT epoch this method returns the
|
||||||
|
// list of validators recalculated from the latest relevant information about
|
||||||
|
// NEO votes; in this case list of validators may differ from the one returned
|
||||||
|
// by GetNextBlockValidators. For the not-last block of dBFT epoch this method
|
||||||
|
// returns the same list as GetNextBlockValidators. Note, that by this moment
|
||||||
|
// we must be sure that previous block was successfully persisted to chain
|
||||||
|
// (i.e. PostPersist was completed for native Neo contract and PostPersist
|
||||||
|
// execution cache was persisted to s.Chain's DAO), otherwise the wrong
|
||||||
|
// (outdated, relevant for the previous dBFT epoch) value will be returned.
|
||||||
var validators = s.Chain.ComputeNextBlockValidators()
|
var validators = s.Chain.ComputeNextBlockValidators()
|
||||||
script, err := smartcontract.CreateDefaultMultiSigRedeemScript(validators)
|
script, err := smartcontract.CreateDefaultMultiSigRedeemScript(validators)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue