示例#1
0
 public ContractBasedValidator(
     AuRaParameters.Validator validator,
     IStateProvider stateProvider,
     IAbiEncoder abiEncoder,
     ITransactionProcessor transactionProcessor,
     IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
     IBlockTree blockTree,
     IReceiptFinder receiptFinder,
     IValidatorStore validatorStore,
     IValidSealerStrategy validSealerStrategy,
     IBlockFinalizationManager finalizationManager,
     BlockHeader parentHeader,
     ILogManager logManager,
     long startBlockNumber,
     bool forSealing = false) : base(validator, validSealerStrategy, validatorStore, logManager, startBlockNumber, forSealing)
 {
     _blockTree            = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     ContractAddress       = validator.Addresses?.FirstOrDefault() ?? throw new ArgumentException("Missing contract address for AuRa validator.", nameof(validator.Addresses));
     _stateProvider        = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor));
     _readOnlyReadOnlyTransactionProcessorSource = readOnlyTransactionProcessorSource ?? throw new ArgumentNullException(nameof(readOnlyTransactionProcessorSource));
     _receiptFinder = receiptFinder ?? throw new ArgumentNullException(nameof(receiptFinder));
     _logger        = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     AbiEncoder     = abiEncoder ?? throw new ArgumentNullException(nameof(abiEncoder));
     SetPendingValidators(LoadPendingValidators());
     SetFinalizationManager(finalizationManager, parentHeader ?? _blockTree.Head?.Header);
 }
示例#2
0
 public ListBasedValidator(AuRaParameters.Validator validator, IValidSealerStrategy validSealerStrategy, IValidatorStore validatorStore, ILogManager logManager, long startBlockNumber)
     : base(validator, validSealerStrategy, validatorStore, logManager, startBlockNumber)
 {
     Validators = validator.Addresses?.Length > 0
         ? validator.Addresses
         : throw new ArgumentException("Empty validator Addresses.", nameof(validator.Addresses));
 }
示例#3
0
        public void SetUp()
        {
            _auRaParameters     = new AuRaParameters();
            _auRaStepCalculator = Substitute.For <IAuRaStepCalculator>();
            _logManager         = LimboLogs.Instance;
            _wallet             = new DevWallet(new WalletConfig(), _logManager);
            _address            = _wallet.NewAccount(new NetworkCredential(string.Empty, "AAA").SecurePassword);

            _ethereumEcdsa = Substitute.For <IEthereumEcdsa>();
            _currentStep   = 11;
            _auRaStepCalculator.CurrentStep.Returns(_currentStep);

            _reportingValidator  = Substitute.For <IReportingValidator>();
            _blockTree           = Substitute.For <IBlockTree>();
            _validSealerStrategy = Substitute.For <IValidSealerStrategy>();
            _sealValidator       = new AuRaSealValidator(_auRaParameters,
                                                         _auRaStepCalculator,
                                                         _blockTree,
                                                         Substitute.For <IValidatorStore>(),
                                                         _validSealerStrategy,
                                                         _ethereumEcdsa,
                                                         _logManager)
            {
                ReportingValidator = _reportingValidator
            };
        }
 protected AuRaValidatorProcessorExtension(AuRaParameters.Validator validator, IValidSealerStrategy validSealerStrategy, ILogManager logManager)
 {
     if (validator == null)
     {
         throw new ArgumentNullException(nameof(validator));
     }
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
示例#5
0
 public AuRaSealValidator(AuRaParameters parameters, IAuRaStepCalculator stepCalculator, IBlockTree blockTree, IValidatorStore validatorStore, IValidSealerStrategy validSealerStrategy, IEthereumEcdsa ecdsa, ILogManager logManager)
 {
     _parameters          = parameters ?? throw new ArgumentNullException(nameof(parameters));
     _stepCalculator      = stepCalculator ?? throw new ArgumentNullException(nameof(stepCalculator));
     _blockTree           = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _validatorStore      = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _ecdsa  = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa));
     _logger = logManager.GetClassLogger <AuRaSealValidator>() ?? throw new ArgumentNullException(nameof(logManager));
 }
        public void Initialize()
        {
            _chainLevelInfoRepository = Substitute.For <IChainLevelInfoRepository>();
            _blockProcessor           = Substitute.For <IBlockProcessor>();
            _validatorStore           = Substitute.For <IValidatorStore>();
            _logManager          = LimboLogs.Instance;
            _validSealerStrategy = Substitute.For <IValidSealerStrategy>();

            _validatorStore.GetValidators(Arg.Any <long?>()).Returns(new Address[] { TestItem.AddressA, TestItem.AddressB, TestItem.AddressC });
        }
 protected AuRaValidatorProcessorExtension(AuRaParameters.Validator validator, IValidSealerStrategy validSealerStrategy, IValidatorStore validatorStore, ILogManager logManager, long startBlockNumber)
 {
     if (validator == null)
     {
         throw new ArgumentNullException(nameof(validator));
     }
     ValidatorStore       = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _logger         = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     InitBlockNumber = startBlockNumber;
 }
 public AuRaBlockFinalizationManager(IBlockTree blockTree, IChainLevelInfoRepository chainLevelInfoRepository, IBlockProcessor blockProcessor, IValidatorStore validatorStore, IValidSealerStrategy validSealerStrategy, ILogManager logManager)
 {
     _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _chainLevelInfoRepository = chainLevelInfoRepository ?? throw new ArgumentNullException(nameof(chainLevelInfoRepository));
     _logger                         = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     _blockProcessor                 = blockProcessor ?? throw new ArgumentNullException(nameof(blockProcessor));
     _validatorStore                 = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _validSealerStrategy            = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _blockProcessor.BlockProcessed += OnBlockProcessed;
     Initialize();
 }
        public void Initialize()
        {
            _chainLevelInfoRepository = Substitute.For <IChainLevelInfoRepository>();
            _blockProcessor           = Substitute.For <IBlockProcessor>();
            _validatorStore           = Substitute.For <IValidatorStore>();
            _logManager          = LimboLogs.Instance;
            _validSealerStrategy = Substitute.For <IValidSealerStrategy>();

            _validatorStore.GetValidators().Returns(new Address[] { TestItem.AddressA, TestItem.AddressB, TestItem.AddressC });

            Rlp.Decoders[typeof(BlockInfo)] = new BlockInfoDecoder(true);
        }
示例#10
0
 protected AuRaValidatorBase(
     IValidSealerStrategy validSealerStrategy,
     IValidatorStore validatorStore,
     ILogManager logManager,
     long startBlockNumber,
     bool forSealing)
 {
     ValidatorStore       = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _logger         = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
     InitBlockNumber = startBlockNumber;
     ForSealing      = forSealing;
 }
示例#11
0
 public ReportingContractBasedValidator(AuRaParameters.Validator validator,
                                        IStateProvider stateProvider,
                                        IAbiEncoder abiEncoder,
                                        ITransactionProcessor transactionProcessor,
                                        IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
                                        IBlockTree blockTree,
                                        IReceiptStorage receiptStorage,
                                        IValidatorStore validatorStore,
                                        IValidSealerStrategy validSealerStrategy,
                                        ILogManager logManager,
                                        long startBlockNumber)
     : base(validator, stateProvider, abiEncoder, transactionProcessor, readOnlyTransactionProcessorSource, blockTree, receiptStorage, validatorStore, validSealerStrategy, logManager, startBlockNumber)
 {
 }
示例#12
0
        public ListBasedValidator(AuRaParameters.Validator validator, IValidSealerStrategy validSealerStrategy, IValidatorStore validatorStore, ILogManager logManager, long startBlockNumber, bool forSealing = false)
            : base(validSealerStrategy, validatorStore, logManager, startBlockNumber, forSealing)
        {
            if (validator == null)
            {
                throw new ArgumentNullException(nameof(validator));
            }

            Validators = validator.Addresses?.Length > 0
                ? validator.Addresses
                : throw new ArgumentException("Empty validator Addresses.", nameof(validator.Addresses));

            InitValidatorStore();
        }
示例#13
0
 public AuRaSealer(
     IBlockTree blockTree,
     IValidatorStore validatorStore,
     IAuRaStepCalculator auRaStepCalculator,
     ISigner signer,
     IValidSealerStrategy validSealerStrategy,
     ILogManager logManager)
 {
     _blockTree           = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _validatorStore      = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _auRaStepCalculator  = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _signer              = signer ?? throw new ArgumentNullException(nameof(signer));
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _logger              = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
 public ReportingContractBasedValidator(AuRaParameters.Validator validator,
                                        IStateProvider stateProvider,
                                        IAbiEncoder abiEncoder,
                                        ITransactionProcessor transactionProcessor,
                                        IReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource,
                                        IBlockTree blockTree,
                                        IReceiptFinder receiptFinder,
                                        IValidatorStore validatorStore,
                                        IValidSealerStrategy validSealerStrategy,
                                        IBlockFinalizationManager finalizationManager,
                                        BlockHeader parentHeader,
                                        ILogManager logManager,
                                        long startBlockNumber,
                                        bool forSealing = false)
     : base(validator, stateProvider, abiEncoder, transactionProcessor, readOnlyTransactionProcessorSource, blockTree, receiptFinder, validatorStore, validSealerStrategy, finalizationManager, parentHeader, logManager, startBlockNumber, forSealing)
 {
 }
示例#15
0
 public AuRaSealer(
     IBlockTree blockTree,
     IValidatorStore validatorStore,
     IAuRaStepCalculator auRaStepCalculator,
     Address nodeAddress,
     IBasicWallet wallet,
     IValidSealerStrategy validSealerStrategy,
     ILogManager logManager)
 {
     _blockTree           = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _validatorStore      = validatorStore ?? throw new ArgumentNullException(nameof(validatorStore));
     _auRaStepCalculator  = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _nodeAddress         = nodeAddress ?? throw new ArgumentNullException(nameof(nodeAddress));
     _wallet              = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _validSealerStrategy = validSealerStrategy ?? throw new ArgumentNullException(nameof(validSealerStrategy));
     _logger              = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
示例#16
0
        public void Setup()
        {
            _blockTree = Substitute.For <IBlockTree>();
            _headStep  = 10;
            _blockTree.Head.Returns(Build.A.Block.WithHeader(Build.A.BlockHeader.WithHash(Keccak.Compute("hash")).WithAura(_headStep, Array.Empty <byte>()).TestObject).TestObject);

            _auRaStepCalculator  = Substitute.For <IAuRaStepCalculator>();
            _validatorStore      = Substitute.For <IValidatorStore>();
            _validSealerStrategy = Substitute.For <IValidSealerStrategy>();
            var signer = new Signer(ChainId.Mainnet, Build.A.PrivateKey.TestObject, LimboLogs.Instance);

            _address = signer.Address;

            _auRaSealer = new AuRaSealer(
                _blockTree,
                _validatorStore,
                _auRaStepCalculator,
                signer,
                _validSealerStrategy,
                LimboLogs.Instance);
        }
示例#17
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);
 }
示例#18
0
        public void Setup()
        {
            _blockTree = Substitute.For <IBlockTree>();
            _headStep  = 10;
            _blockTree.Head.Returns(Build.A.BlockHeader.WithHash(Keccak.Compute("hash")).WithAura(_headStep, Bytes.Empty).TestObject);

            _auRaStepCalculator  = Substitute.For <IAuRaStepCalculator>();
            _validatorStore      = Substitute.For <IValidatorStore>();
            _validSealerStrategy = Substitute.For <IValidSealerStrategy>();
            var wallet = new DevWallet(new WalletConfig(), LimboLogs.Instance);

            _address = wallet.NewAccount(new NetworkCredential(string.Empty, "AAA").SecurePassword);

            _auRaSealer = new AuRaSealer(
                _blockTree,
                _validatorStore,
                _auRaStepCalculator,
                _address,
                wallet,
                _validSealerStrategy,
                LimboLogs.Instance);
        }