コード例 #1
0
ファイル: AuRaSealer.cs プロジェクト: tr002196/nethermind
 public AuRaSealer(
     IBlockTree blockTree,
     IAuRaValidator validator,
     IAuRaStepCalculator auRaStepCalculator,
     Address nodeAddress,
     IBasicWallet wallet,
     ILogManager logManager)
 {
     _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _validator          = validator ?? throw new ArgumentNullException(nameof(validator));
     _auRaStepCalculator = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _nodeAddress        = nodeAddress ?? throw new ArgumentNullException(nameof(nodeAddress));
     _wallet             = wallet ?? throw new ArgumentNullException(nameof(wallet));
     _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
コード例 #2
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));
 }
コード例 #3
0
        public void SetUp()
        {
            _auRaParameters     = new AuRaParameters();
            _auRaStepCalculator = Substitute.For <IAuRaStepCalculator>();
            _logManager         = NullLogManager.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);

            _sealValidator = new AuRaSealValidator(_auRaParameters,
                                                   _auRaStepCalculator,
                                                   Substitute.For <IAuRaValidator>(),
                                                   _ethereumEcdsa,
                                                   _logManager);
        }
コード例 #4
0
ファイル: AuRaSealerTests.cs プロジェクト: rlanga/nethermind
        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>();
            _auRaValidator      = Substitute.For <IAuRaValidator>();
            var wallet = new DevWallet(new WalletConfig(), NullLogManager.Instance);

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

            _auRaSealer = new AuRaSealer(
                _blockTree,
                _auRaValidator,
                _auRaStepCalculator,
                _address,
                wallet,
                NullLogManager.Instance);
        }
コード例 #5
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);
        }
コード例 #6
0
 public AuRaBlockProducer(
     ITxSource txSource,
     IBlockchainProcessor processor,
     IStateProvider stateProvider,
     ISealer sealer,
     IBlockTree blockTree,
     IBlockProcessingQueue blockProcessingQueue,
     ITimestamper timestamper,
     ILogManager logManager,
     IAuRaStepCalculator auRaStepCalculator,
     IAuraConfig config,
     Address nodeAddress,
     IGasLimitOverride gasLimitOverride = null)
     : base(txSource, processor, sealer, blockTree, blockProcessingQueue, stateProvider, timestamper, logManager, "AuRa")
 {
     _auRaStepCalculator = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _config             = config ?? throw new ArgumentNullException(nameof(config));
     CanProduce          = _config.AllowAuRaPrivateChains;
     _nodeAddress        = nodeAddress ?? throw new ArgumentNullException(nameof(nodeAddress));
     _gasLimitOverride   = gasLimitOverride;
 }
コード例 #7
0
 public AuRaBlockProducer(ITxPool txPool,
                          IBlockchainProcessor blockchainProcessor,
                          IBlockTree blockTree,
                          ITimestamper timestamper,
                          IAuRaStepCalculator auRaStepCalculator,
                          Address nodeAddress,
                          ISealer sealer,
                          IStateProvider stateProvider,
                          IAuraConfig config,
                          ILogManager logManager)
 {
     _txPool             = txPool ?? throw new ArgumentNullException(nameof(txPool));
     _processor          = blockchainProcessor ?? throw new ArgumentNullException(nameof(blockchainProcessor));
     _blockTree          = blockTree ?? throw new ArgumentNullException(nameof(blockTree));
     _timestamper        = timestamper ?? throw new ArgumentNullException(nameof(timestamper));
     _auRaStepCalculator = auRaStepCalculator ?? throw new ArgumentNullException(nameof(auRaStepCalculator));
     _nodeAddress        = nodeAddress ?? throw new ArgumentNullException(nameof(nodeAddress));
     _sealer             = sealer ?? throw new ArgumentNullException(nameof(sealer));
     _stateProvider      = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider));
     _config             = config ?? throw new ArgumentNullException(nameof(config));
     _logger             = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager));
 }
コード例 #8
0
        protected override IBlockProducer CreateTestBlockProducer(TxPoolTxSource txPoolTxSource, ISealer sealer, ITransactionComparerProvider transactionComparerProvider)
        {
            SealEngine = new MergeSealEngine(SealEngine, PoSSwitcher, SealValidator, LogManager);
            MiningConfig miningConfig = new() { Enabled = true, MinGasPrice = 0 };
            TargetAdjustedGasLimitCalculator targetAdjustedGasLimitCalculator = new(SpecProvider, miningConfig);

            EthSyncingInfo = new EthSyncingInfo(BlockTree);
            PostMergeBlockProducerFactory blockProducerFactory = new(
                SpecProvider,
                SealEngine,
                Timestamper,
                miningConfig,
                LogManager,
                targetAdjustedGasLimitCalculator);

            BlockProducerEnvFactory blockProducerEnvFactory = new(
                DbProvider,
                BlockTree,
                ReadOnlyTrieStore,
                SpecProvider,
                BlockValidator,
                NoBlockRewards.Instance,
                ReceiptStorage,
                BlockPreprocessorStep,
                TxPool,
                transactionComparerProvider,
                miningConfig,
                LogManager);


            BlockProducerEnv       blockProducerEnv       = blockProducerEnvFactory.Create();
            PostMergeBlockProducer postMergeBlockProducer = blockProducerFactory.Create(blockProducerEnv, BlockProductionTrigger);

            PostMergeBlockProducer = postMergeBlockProducer;
            PayloadPreparationService ??= new PayloadPreparationService(
                postMergeBlockProducer,
                new BlockImprovementContextFactory(BlockProductionTrigger, TimeSpan.FromSeconds(MergeConfig.SecondsPerSlot)
                                                   ),
                TimerFactory.Default,
                LogManager,
                TimeSpan.FromSeconds(MergeConfig.SecondsPerSlot)
                );

            IAuRaStepCalculator auraStepCalculator = Substitute.For <IAuRaStepCalculator>();

            auraStepCalculator.TimeToNextStep.Returns(TimeSpan.FromMilliseconds(0));
            FollowOtherMiners gasLimitCalculator    = new(MainnetSpecProvider.Instance);
            AuRaBlockProducer preMergeBlockProducer = new(
                txPoolTxSource,
                blockProducerEnvFactory.Create().ChainProcessor,
                ((TestBlockchain)this).BlockProductionTrigger,
                State,
                sealer,
                BlockTree,
                Timestamper,
                auraStepCalculator,
                NullReportingValidator.Instance,
                new AuRaConfig(),
                gasLimitCalculator,
                SpecProvider,
                LogManager
                );

            return(new MergeBlockProducer(preMergeBlockProducer, postMergeBlockProducer, PoSSwitcher));
        }
    }
コード例 #9
0
 public AuraDifficultyCalculator(IAuRaStepCalculator auRaStepCalculator)
 {
     _auRaStepCalculator = auRaStepCalculator;
 }
コード例 #10
0
 public TestAuraProducer(ITxSource transactionSource, IBlockchainProcessor processor, IStateProvider stateProvider, ISealer sealer, IBlockTree blockTree, IBlockProcessingQueue blockProcessingQueue, ITimestamper timestamper, ILogManager logManager, IAuRaStepCalculator auRaStepCalculator, IAuraConfig config, Address nodeAddress) : base(transactionSource, processor, stateProvider, sealer, blockTree, blockProcessingQueue, timestamper, logManager, auRaStepCalculator, config, nodeAddress)
 {
 }