示例#1
0
        private bool TryUpdateValidator(Block block)
        {
            var validatorUpdated = false;

            // Check next validators as blocks are proceeding
            while (_validators.Length > _nextValidator && block.Number >= _validators[_nextValidator].Key)
            {
                _currentValidator = _validators[_nextValidator].Value;
                _nextValidator++;
                validatorUpdated = true;
            }

            // Check previous validators if reorganisation happened
            var currentValidator = _nextValidator - 1;

            while (currentValidator >= 0 && block.Number < _validators[currentValidator].Key)
            {
                _nextValidator = currentValidator;
                currentValidator--;
                _currentValidator = _validators[currentValidator].Value;
                validatorUpdated  = true;
            }

            return(validatorUpdated);
        }
示例#2
0
 private void SetCurrentValidator(long finalizedAtBlockNumber, AuRaParameters.Validator validator)
 {
     _currentValidator?.SetFinalizationManager(null);
     _currentValidator = CreateValidator(finalizedAtBlockNumber, validator);
     _currentValidator.SetFinalizationManager(_blockFinalizationManager, _isProducing);
 }
示例#3
0
 private void SetCurrentValidator(long finalizedAtBlockNumber, AuRaParameters.Validator validator)
 {
     _currentValidator?.SetFinalizationManager(null);
     _currentValidator = _validatorFactory.CreateValidatorProcessor(validator, finalizedAtBlockNumber + 1);
     _currentValidator.SetFinalizationManager(_blockFinalizationManager);
 }