public CliqueBlockProducer(IPendingTxSelector pendingTxSelector,
                                   IBlockchainProcessor blockchainProcessor,
                                   IStateProvider stateProvider,
                                   IBlockTree blockTree,
                                   ITimestamper timestamper,
                                   ICryptoRandom cryptoRandom,
                                   ISnapshotManager snapshotManager,
                                   ISealer cliqueSealer,
                                   Address address,
                                   ICliqueConfig config,
                                   ILogManager logManager)
        {
            _logger            = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
            _pendingTxSelector = pendingTxSelector ?? throw new ArgumentNullException(nameof(pendingTxSelector));
            _processor         = blockchainProcessor ?? throw new ArgumentNullException(nameof(blockchainProcessor));
            _blockTree         = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
            _stateProvider     = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
            _timestamper       = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
            _cryptoRandom      = cryptoRandom ?? throw new ArgumentNullException(nameof(cryptoRandom));
            _sealer            = cliqueSealer ?? throw new ArgumentNullException(nameof(cliqueSealer));
            _snapshotManager   = snapshotManager ?? throw new ArgumentNullException(nameof(snapshotManager));
            _config            = config ?? throw new ArgumentNullException(nameof(config));
            _address           = address ?? throw new ArgumentNullException(nameof(address));
            _wiggle            = new WiggleRandomizer(_cryptoRandom, _snapshotManager);

            _timer.AutoReset = false;
            _timer.Elapsed  += TimerOnElapsed;
            _timer.Interval  = 100;
            _timer.Start();
        }
Example #2
0
        public void SetUp()
        {
            _stepDelay = TimeSpan.FromMilliseconds(20);

            _pendingTxSelector   = Substitute.For <IPendingTxSelector>();
            _blockchainProcessor = Substitute.For <IBlockchainProcessor>();
            _sealer               = Substitute.For <ISealer>();
            _blockTree            = Substitute.For <IBlockTree>();
            _blockProcessingQueue = Substitute.For <IBlockProcessingQueue>();
            _stateProvider        = Substitute.For <IStateProvider>();
            _timestamper          = Substitute.For <ITimestamper>();
            _auRaStepCalculator   = Substitute.For <IAuRaStepCalculator>();
            _auraConfig           = Substitute.For <IAuraConfig>();
            _nodeAddress          = TestItem.AddressA;
            _auRaBlockProducer    = new AuRaBlockProducer(
                _pendingTxSelector,
                _blockchainProcessor,
                _stateProvider,
                _sealer,
                _blockTree,
                _blockProcessingQueue,
                _timestamper,
                LimboLogs.Instance, _auRaStepCalculator, _auraConfig, _nodeAddress);

            _auraConfig.ForceSealing.Returns(true);
            _pendingTxSelector.SelectTransactions(Arg.Any <long>()).Returns(Array.Empty <Transaction>());
            _sealer.CanSeal(Arg.Any <long>(), Arg.Any <Keccak>()).Returns(true);
            _sealer.SealBlock(Arg.Any <Block>(), Arg.Any <CancellationToken>()).Returns(c => Task.FromResult(c.Arg <Block>()));
            _blockProcessingQueue.IsEmpty.Returns(true);
            _auRaStepCalculator.TimeToNextStep.Returns(_stepDelay);
            _blockTree.BestKnownNumber.Returns(1);
            _blockTree.Head.Returns(Build.A.BlockHeader.WithAura(10, Bytes.Empty).TestObject);
            _blockchainProcessor.Process(Arg.Any <Block>(), ProcessingOptions.ProducingBlock, Arg.Any <IBlockTracer>()).Returns(c => c.Arg <Block>());
        }
 public DevBackgroundBlockProducer(
     IPendingTxSelector pendingTxSelector,
     IBlockchainProcessor processor,
     IBlockTree blockTree,
     IBlockProcessingQueue blockProcessingQueue,
     IStateProvider stateProvider,
     ITimestamper timestamper,
     ILogManager logManager) : base(pendingTxSelector, processor, NullSealEngine.Instance, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager, "Dev")
 {
 }
Example #4
0
 public DevBlockProducer(IPendingTxSelector pendingTxSelector,
                         IBlockchainProcessor processor,
                         IStateProvider stateProvider,
                         IBlockTree blockTree,
                         IBlockProcessingQueue blockProcessingQueue,
                         ITxPool txPool,
                         ITimestamper timestamper,
                         ILogManager logManager)
     : base(pendingTxSelector, processor, NethDevSealEngine.Instance, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager)
 {
     _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool));
 }
Example #5
0
 public MinedBlockProducer(
     IPendingTxSelector pendingTxSelector,
     IBlockchainProcessor processor,
     ISealer sealer,
     IBlockTree blockTree,
     IBlockProcessingQueue blockProcessingQueue,
     IStateProvider stateProvider,
     ITimestamper timestamper,
     ILogManager logManager,
     IDifficultyCalculator difficultyCalculator)
     : base(pendingTxSelector, processor, sealer, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager)
 {
     _difficultyCalculator = difficultyCalculator ?? throw new ArgumentNullException(nameof(difficultyCalculator));
 }
 protected BaseLoopBlockProducer(
     IPendingTxSelector pendingTxSelector,
     IBlockchainProcessor processor,
     ISealer sealer,
     IBlockTree blockTree,
     IBlockProcessingQueue blockProcessingQueue,
     IStateProvider stateProvider,
     ITimestamper timestamper,
     ILogManager logManager,
     string name)
     : base(pendingTxSelector, processor, sealer, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager)
 {
     _name = name;
 }
Example #7
0
 public AuRaBlockProducer(IPendingTxSelector pendingTxSelector,
                          IBlockchainProcessor processor,
                          IStateProvider stateProvider,
                          ISealer sealer,
                          IBlockTree blockTree,
                          IBlockProcessingQueue blockProcessingQueue,
                          ITimestamper timestamper,
                          ILogManager logManager,
                          IAuRaStepCalculator auRaStepCalculator,
                          IAuraConfig config,
                          Address nodeAddress)
     : base(pendingTxSelector, processor, sealer, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager, "AuRa")
 {
     _auRaStepCalculator = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _config             = config ?? throw new ArgumentNullException(nameof(config));
     _nodeAddress        = nodeAddress ?? throw new ArgumentNullException(nameof(nodeAddress));
 }
Example #8
0
 protected BaseBlockProducer(
     IPendingTxSelector pendingTxSelector,
     IBlockchainProcessor processor,
     ISealer sealer,
     IBlockTree blockTree,
     IBlockProcessingQueue blockProcessingQueue,
     IStateProvider stateProvider,
     ITimestamper timestamper,
     ILogManager logManager)
 {
     _pendingTxSelector   = pendingTxSelector ?? throw new ArgumentNullException(nameof(pendingTxSelector));
     Processor            = processor ?? throw new ArgumentNullException(nameof(processor));
     _sealer              = sealer ?? throw new ArgumentNullException(nameof(sealer));
     BlockTree            = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     BlockProcessingQueue = blockProcessingQueue ?? throw new ArgumentNullException(nameof(blockProcessingQueue));
     _stateProvider       = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _timestamper         = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     Logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }