Пример #1
0
        public MultiValidator(
            AuRaParameters.Validator validator,
            IAuRaValidatorFactory validatorFactory,
            IBlockTree blockTree,
            IValidatorStore validatorStore,
            IAuRaBlockFinalizationManager finalizationManager,
            BlockHeader parentHeader,
            ILogManager logManager,
            bool forSealing = false)
        {
            if (validator == null)
            {
                throw new ArgumentNullException(nameof(validator));
            }
            if (validator.ValidatorType != AuRaParameters.ValidatorType.Multi)
            {
                throw new ArgumentException("Wrong validator type.", nameof(validator));
            }
            _validatorFactory = validatorFactory ?? throw new ArgumentNullException(nameof(validatorFactory));
            _blockTree        = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _validatorStore   = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
            _forSealing       = forSealing;
            _logger           = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));

            _validators = validator.Validators?.Count > 0
                ? validator.Validators
                : throw new ArgumentException("Multi validator cannot be empty.", nameof(validator.Validators));

            SetFinalizationManager(finalizationManager, parentHeader);
        }
Пример #2
0
        public void SetUp()
        {
            _validator           = GetValidator(AuRaParameters.ValidatorType.List);
            _innerValidators     = new SortedList <long, IAuRaValidator>();
            _factory             = Substitute.For <IAuRaValidatorFactory>();
            _logManager          = LimboLogs.Instance;
            _finalizationManager = Substitute.For <IAuRaBlockFinalizationManager>();
            _blockTree           = Substitute.For <IBlockTree>();
            _validatorStore      = Substitute.For <IValidatorStore>();
            _finalizationManager.LastFinalizedBlockLevel.Returns(0);

            _factory.CreateValidatorProcessor(default, default, default)
Пример #3
0
        private void SetFinalizationManager(IAuRaBlockFinalizationManager finalizationManager, BlockHeader parentHeader)
        {
            _blockFinalizationManager = finalizationManager ?? throw new ArgumentNullException(nameof(finalizationManager));

            if (!ForSealing)
            {
                _blockFinalizationManager.BlocksFinalized += OnBlocksFinalized;

                if (parentHeader != null)
                {
                    Validators = LoadValidatorsFromContract(parentHeader);
                    InitValidatorStore();
                }
            }
        }
Пример #4
0
 public ContractBasedValidator(
     IValidatorContract validatorContract,
     IBlockTree blockTree,
     IReceiptFinder receiptFinder,
     IValidatorStore validatorStore,
     IValidSealerStrategy validSealerStrategy,
     IAuRaBlockFinalizationManager finalizationManager,
     BlockHeader parentHeader,
     ILogManager logManager,
     long startBlockNumber,
     long posdaoTransition = long.MaxValue,
     bool forSealing       = false) : base(validSealerStrategy, validatorStore, logManager, startBlockNumber, forSealing)
 {
     BlockTree         = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _receiptFinder    = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));
     _posdaoTransition = posdaoTransition;
     _logger           = logManager?.GetClassLogger <ContractBasedValidator>() ?? throw new ArgumentNullException(nameof(logManager));
     ValidatorContract = validatorContract ?? throw new ArgumentNullException(nameof(validatorContract));
     SetPendingValidators(LoadPendingValidators());
     SetFinalizationManager(finalizationManager, parentHeader ?? BlockTree.Head?.Header);
 }
Пример #5
0
 public AuRaValidatorFactory(IAbiEncoder abiEncoder,
                             IStateProvider stateProvider,
                             ITransactionProcessor transactionProcessor,
                             IBlockTree blockTree,
                             IReadOnlyTxProcessorSource readOnlyTxProcessorSource,
                             IReceiptFinder receiptFinder,
                             IValidatorStore validatorStore,
                             IAuRaBlockFinalizationManager finalizationManager,
                             ITxSender txSender,
                             ITxPool txPool,
                             IMiningConfig miningConfig,
                             ILogManager logManager,
                             ISigner signer,
                             ISpecProvider specProvider,
                             IGasPriceOracle gasPriceOracle,
                             ReportingContractBasedValidator.Cache reportingValidatorCache,
                             long posdaoTransition, bool forSealing = false)
 {
     _stateProvider             = stateProvider;
     _abiEncoder                = abiEncoder;
     _transactionProcessor      = transactionProcessor;
     _readOnlyTxProcessorSource = readOnlyTxProcessorSource;
     _blockTree           = blockTree;
     _receiptFinder       = receiptFinder;
     _validatorStore      = validatorStore;
     _finalizationManager = finalizationManager;
     _txSender            = txSender;
     _txPool                  = txPool;
     _miningConfig            = miningConfig;
     _logManager              = logManager;
     _signer                  = signer;
     _reportingValidatorCache = reportingValidatorCache;
     _posdaoTransition        = posdaoTransition;
     _gasPriceOracle          = gasPriceOracle;
     _forSealing              = forSealing;
     _specProvider            = specProvider;
 }
Пример #6
0
 public void SetFinalizationManager(IAuRaBlockFinalizationManager finalizationManager, BlockHeader parentHeader)
 {
     _blockFinalizationManager = finalizationManager ?? throw new ArgumentNullException(nameof(finalizationManager));
     _blockFinalizationManager.BlocksFinalized += OnBlocksFinalized;
     InitCurrentValidator(_blockFinalizationManager.LastFinalizedBlockLevel, parentHeader);
 }