protected override IBlockProducer CreateTestBlockProducer(TxPoolTxSource txPoolTxSource, ISealer sealer, ITransactionComparerProvider transactionComparerProvider) { MiningConfig miningConfig = new() { MinGasPrice = UInt256.One }; BlockProducerEnvFactory blockProducerEnvFactory = new BlockProducerEnvFactory( DbProvider, BlockTree, ReadOnlyTrieStore, SpecProvider, BlockValidator, NoBlockRewards.Instance, ReceiptStorage, BlockPreprocessorStep, TxPool, transactionComparerProvider, miningConfig, LogManager); UserOperationTxSource = new(UserOperationTxBuilder, UserOperationPool, UserOperationSimulator, SpecProvider, LogManager.GetClassLogger()); Eth2TestBlockProducerFactory producerFactory = new Eth2TestBlockProducerFactory(GasLimitCalculator, UserOperationTxSource); Eth2BlockProducer blockProducer = producerFactory.Create( blockProducerEnvFactory, BlockTree, BlockProductionTrigger, SpecProvider, new Eth2Signer(MinerAddress), Timestamper, miningConfig, LogManager); return(blockProducer); }
public Task InitBlockProducer() { if (_mergeConfig.Enabled) { _miningConfig = _api.Config <IMiningConfig>(); if (_api.EngineSigner == null) { throw new ArgumentException(nameof(_api.EngineSigner)); } if (_api.ChainSpec == null) { throw new ArgumentException(nameof(_api.ChainSpec)); } if (_api.BlockTree == null) { throw new ArgumentException(nameof(_api.BlockTree)); } if (_api.BlockProcessingQueue == null) { throw new ArgumentException(nameof(_api.BlockProcessingQueue)); } if (_api.StateProvider == null) { throw new ArgumentException(nameof(_api.StateProvider)); } if (_api.SpecProvider == null) { throw new ArgumentException(nameof(_api.SpecProvider)); } if (_api.BlockValidator == null) { throw new ArgumentException(nameof(_api.BlockValidator)); } if (_api.RewardCalculatorSource == null) { throw new ArgumentException(nameof(_api.RewardCalculatorSource)); } if (_api.ReceiptStorage == null) { throw new ArgumentException(nameof(_api.ReceiptStorage)); } if (_api.TxPool == null) { throw new ArgumentException(nameof(_api.TxPool)); } if (_api.DbProvider == null) { throw new ArgumentException(nameof(_api.DbProvider)); } if (_api.ReadOnlyTrieStore == null) { throw new ArgumentException(nameof(_api.ReadOnlyTrieStore)); } ILogger logger = _api.LogManager.GetClassLogger(); if (logger.IsWarn) { logger.Warn("Starting ETH2 block producer & sealer"); } _api.BlockProducer = _blockProducer = new Eth2BlockProducerFactory().Create( _api.BlockTree, _api.DbProvider, _api.ReadOnlyTrieStore, _api.BlockPreprocessor, _api.TxPool, _api.BlockValidator, _api.RewardCalculatorSource, _api.ReceiptStorage, _api.BlockProcessingQueue, _api.SpecProvider, _api.EngineSigner, _miningConfig, _api.LogManager ); } return(Task.CompletedTask); }
public Task <IBlockProducer> InitBlockProducer(IBlockProductionTrigger?blockProductionTrigger = null, ITxSource?additionalTxSource = null) { if (_mergeConfig.Enabled) { _miningConfig = _api.Config <IMiningConfig>(); if (_api.EngineSigner == null) { throw new ArgumentNullException(nameof(_api.EngineSigner)); } if (_api.ChainSpec == null) { throw new ArgumentNullException(nameof(_api.ChainSpec)); } if (_api.BlockTree == null) { throw new ArgumentNullException(nameof(_api.BlockTree)); } if (_api.BlockProcessingQueue == null) { throw new ArgumentNullException(nameof(_api.BlockProcessingQueue)); } if (_api.StateProvider == null) { throw new ArgumentNullException(nameof(_api.StateProvider)); } if (_api.SpecProvider == null) { throw new ArgumentNullException(nameof(_api.SpecProvider)); } if (_api.BlockValidator == null) { throw new ArgumentNullException(nameof(_api.BlockValidator)); } if (_api.RewardCalculatorSource == null) { throw new ArgumentNullException(nameof(_api.RewardCalculatorSource)); } if (_api.ReceiptStorage == null) { throw new ArgumentNullException(nameof(_api.ReceiptStorage)); } if (_api.TxPool == null) { throw new ArgumentNullException(nameof(_api.TxPool)); } if (_api.DbProvider == null) { throw new ArgumentNullException(nameof(_api.DbProvider)); } if (_api.ReadOnlyTrieStore == null) { throw new ArgumentNullException(nameof(_api.ReadOnlyTrieStore)); } ILogger logger = _api.LogManager.GetClassLogger(); if (logger.IsWarn) { logger.Warn("Starting ETH2 block producer & sealer"); } _manualTimestamper ??= new ManualTimestamper(); _api.BlockProducer = _blockProducer = new Eth2BlockProducerFactory(additionalTxSource).Create( _api.BlockProducerEnvFactory, _api.BlockTree, blockProductionTrigger ?? DefaultBlockProductionTrigger, _api.SpecProvider, _api.EngineSigner, _manualTimestamper, _miningConfig, _api.LogManager ); } return(Task.FromResult((IBlockProducer)_blockProducer)); }