public ReadOnlyChainProcessingEnv( ReadOnlyTxProcessingEnv txEnv, IBlockValidator blockValidator, IBlockPreprocessorStep recoveryStep, IRewardCalculator rewardCalculator, IReceiptStorage receiptStorage, IReadOnlyDbProvider dbProvider, ISpecProvider specProvider, ILogManager logManager) { _txEnv = txEnv; BlockProcessor = new BlockProcessor( specProvider, blockValidator, rewardCalculator, _txEnv.TransactionProcessor, StateProvider, _txEnv.StorageProvider, NullTxPool.Instance, receiptStorage, NullWitnessCollector.Instance, logManager); _blockProcessingQueue = new BlockchainProcessor(_txEnv.BlockTree, BlockProcessor, recoveryStep, logManager, BlockchainProcessor.Options.NoReceipts); BlockProcessingQueue = _blockProcessingQueue; ChainProcessor = new OneTimeChainProcessor(dbProvider, _blockProcessingQueue); }
public UserOperationSimulator( IUserOperationTxBuilder userOperationTxBuilder, IStateProvider stateProvider, IStateReader stateReader, AbiDefinition entryPointContractAbi, Address create2FactoryAddress, Address entryPointContractAddress, ISpecProvider specProvider, IBlockTree blockTree, IDbProvider dbProvider, IReadOnlyTrieStore trieStore, ITimestamper timestamper, ILogManager logManager) { _userOperationTxBuilder = userOperationTxBuilder; _stateProvider = stateProvider; _stateReader = stateReader; _entryPointContractAbi = entryPointContractAbi; _create2FactoryAddress = create2FactoryAddress; _entryPointContractAddress = entryPointContractAddress; _specProvider = specProvider; _blockTree = blockTree; _dbProvider = dbProvider.AsReadOnly(false); _trieStore = trieStore; _timestamper = timestamper; _logManager = logManager; _abiEncoder = new AbiEncoder(); }
public BeamBlockchainProcessor( IReadOnlyDbProvider readOnlyDbProvider, IBlockTree blockTree, ISpecProvider specProvider, ILogManager logManager, IBlockValidator blockValidator, IBlockPreprocessorStep recoveryStep, IRewardCalculatorSource rewardCalculatorSource, IBlockProcessingQueue processingQueue, ISyncModeSelector syncModeSelector) { _readOnlyDbProvider = readOnlyDbProvider ?? throw new ArgumentNullException(nameof(readOnlyDbProvider)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _recoveryStep = recoveryStep ?? throw new ArgumentNullException(nameof(recoveryStep)); _rewardCalculatorSource = rewardCalculatorSource ?? throw new ArgumentNullException(nameof(rewardCalculatorSource)); _standardProcessorQueue = processingQueue ?? throw new ArgumentNullException(nameof(processingQueue)); _syncModeSelector = syncModeSelector ?? throw new ArgumentNullException(nameof(syncModeSelector)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _readOnlyBlockTree = new ReadOnlyBlockTree(blockTree); blockTree.NewBestSuggestedBlock += OnNewBlock; _logger = logManager.GetClassLogger(); _blockAction = BeamProcess; _syncModeSelector.Preparing += SyncModeSelectorOnPreparing; _syncModeSelector.Changing += SyncModeSelectorOnChanging; _syncModeSelector.Changed += SyncModeSelectorOnChanged; }
public DebugBridge( IConfigProvider configProvider, IReadOnlyDbProvider dbProvider, IGethStyleTracer tracer, IBlockTree blockTree, IReceiptStorage receiptStorage, IReceiptsMigration receiptsMigration, ISpecProvider specProvider) { _configProvider = configProvider ?? throw new ArgumentNullException(nameof(configProvider)); _tracer = tracer ?? throw new ArgumentNullException(nameof(tracer)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _receiptsMigration = receiptsMigration ?? throw new ArgumentNullException(nameof(receiptsMigration)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); IDb blockInfosDb = dbProvider.BlockInfosDb ?? throw new ArgumentNullException(nameof(dbProvider.BlockInfosDb)); IDb blocksDb = dbProvider.BlocksDb ?? throw new ArgumentNullException(nameof(dbProvider.BlocksDb)); IDb headersDb = dbProvider.HeadersDb ?? throw new ArgumentNullException(nameof(dbProvider.HeadersDb)); IDb receiptsDb = dbProvider.ReceiptsDb ?? throw new ArgumentNullException(nameof(dbProvider.ReceiptsDb)); IDb codeDb = dbProvider.CodeDb ?? throw new ArgumentNullException(nameof(dbProvider.CodeDb)); IDb pendingTxsDb = dbProvider.PendingTxsDb ?? throw new ArgumentNullException(nameof(dbProvider.PendingTxsDb)); _dbMappings = new Dictionary <string, IDb>(StringComparer.InvariantCultureIgnoreCase) { { DbNames.State, dbProvider.StateDb }, { DbNames.Storage, dbProvider.StateDb }, { DbNames.BlockInfos, blockInfosDb }, { DbNames.Blocks, blocksDb }, { DbNames.Headers, headersDb }, { DbNames.Code, codeDb }, { DbNames.Receipts, receiptsDb }, { DbNames.PendingTxs, pendingTxsDb }, }; }
public DebugModuleFactory( IDbProvider dbProvider, IBlockTree blockTree, IJsonRpcConfig jsonRpcConfig, IBlockValidator blockValidator, IBlockPreprocessorStep recoveryStep, IRewardCalculatorSource rewardCalculator, IReceiptStorage receiptStorage, IReceiptsMigration receiptsMigration, IReadOnlyTrieStore trieStore, IConfigProvider configProvider, ISpecProvider specProvider, ILogManager logManager) { _dbProvider = dbProvider.AsReadOnly(false); _blockTree = blockTree.AsReadOnly(); _jsonRpcConfig = jsonRpcConfig ?? throw new ArgumentNullException(nameof(jsonRpcConfig)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _recoveryStep = recoveryStep ?? throw new ArgumentNullException(nameof(recoveryStep)); _rewardCalculatorSource = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _receiptsMigration = receiptsMigration ?? throw new ArgumentNullException(nameof(receiptsMigration)); _trieStore = (trieStore ?? throw new ArgumentNullException(nameof(trieStore))); _configProvider = configProvider ?? throw new ArgumentNullException(nameof(configProvider)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _logger = logManager.GetClassLogger(); }
public DebugBridge(IConfigProvider configProvider, IReadOnlyDbProvider dbProvider, ITracer tracer, IBlockchainProcessor receiptsProcessor, IBlockTree blockTree) { receiptsProcessor.ProcessingQueueEmpty += (sender, args) => _receiptProcessedEvent.Set(); _configProvider = configProvider ?? throw new ArgumentNullException(nameof(configProvider)); _tracer = tracer ?? throw new ArgumentNullException(nameof(tracer)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); IDb blockInfosDb = dbProvider.BlockInfosDb ?? throw new ArgumentNullException(nameof(dbProvider.BlockInfosDb)); IDb blocksDb = dbProvider.BlocksDb ?? throw new ArgumentNullException(nameof(dbProvider.BlocksDb)); IDb headersDb = dbProvider.HeadersDb ?? throw new ArgumentNullException(nameof(dbProvider.HeadersDb)); IDb receiptsDb = dbProvider.ReceiptsDb ?? throw new ArgumentNullException(nameof(dbProvider.ReceiptsDb)); IDb codeDb = dbProvider.CodeDb ?? throw new ArgumentNullException(nameof(dbProvider.CodeDb)); IDb pendingTxsDb = dbProvider.PendingTxsDb ?? throw new ArgumentNullException(nameof(dbProvider.PendingTxsDb)); IDb traceDb = dbProvider.TraceDb ?? throw new ArgumentNullException(nameof(dbProvider.TraceDb)); _dbMappings = new Dictionary <string, IDb>(StringComparer.InvariantCultureIgnoreCase) { { DbNames.State, dbProvider.StateDb }, { DbNames.Storage, dbProvider.StateDb }, { DbNames.BlockInfos, blockInfosDb }, { DbNames.Blocks, blocksDb }, { DbNames.Headers, headersDb }, { DbNames.Code, codeDb }, { DbNames.Receipts, receiptsDb }, { DbNames.PendingTxs, pendingTxsDb }, { DbNames.Trace, traceDb } }; }
protected override BlockProcessor CreateBlockProcessor( ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv, ReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource, IReadOnlyDbProvider readOnlyDbProvider) { if (_context.RewardCalculatorSource == null) { throw new StepDependencyException(nameof(_context.RewardCalculatorSource)); } if (_context.ValidatorStore == null) { throw new StepDependencyException(nameof(_context.ValidatorStore)); } if (_context.ChainSpec == null) { throw new StepDependencyException(nameof(_context.ChainSpec)); } if (_context.BlockTree == null) { throw new StepDependencyException(nameof(_context.BlockTree)); } var validator = new AuRaValidatorFactory( readOnlyTxProcessingEnv.StateProvider, _context.AbiEncoder, readOnlyTxProcessingEnv.TransactionProcessor, readOnlyTransactionProcessorSource, readOnlyTxProcessingEnv.BlockTree, _context.ReceiptStorage, _context.ValidatorStore, _context.FinalizationManager, _context.LogManager, true) .CreateValidatorProcessor(_context.ChainSpec.AuRa.Validators, _context.BlockTree.Head?.Header); if (validator is IDisposable disposableValidator) { _context.DisposeStack.Push(disposableValidator); } return(new AuRaBlockProcessor( _context.SpecProvider, _context.BlockValidator, _context.RewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), readOnlyTxProcessingEnv.TransactionProcessor, readOnlyDbProvider.StateDb, readOnlyDbProvider.CodeDb, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, _context.TxPool, _context.ReceiptStorage, _context.LogManager, readOnlyTxProcessingEnv.BlockTree, GetTxPermissionFilter(readOnlyTxProcessingEnv, readOnlyTransactionProcessorSource, readOnlyTxProcessingEnv.StateProvider), GetGasLimitOverride(readOnlyTxProcessingEnv, readOnlyTransactionProcessorSource, readOnlyTxProcessingEnv.StateProvider)) { AuRaValidator = validator }); }
public ReadOnlyTxProcessingEnv(IReadOnlyDbProvider readOnlyDbProvider, ReadOnlyBlockTree readOnlyBlockTree, ISpecProvider specProvider, ILogManager logManager) { ISnapshotableDb stateDb = readOnlyDbProvider.StateDb; IDb codeDb = readOnlyDbProvider.CodeDb; StateReader = new StateReader(stateDb, codeDb, logManager); StateProvider = new StateProvider(stateDb, codeDb, logManager); StorageProvider = new StorageProvider(stateDb, StateProvider, logManager); BlockTree = readOnlyBlockTree; BlockhashProvider = new BlockhashProvider(BlockTree, logManager); VirtualMachine = new VirtualMachine(StateProvider, StorageProvider, BlockhashProvider, specProvider, logManager); TransactionProcessor = new TransactionProcessor(specProvider, StateProvider, StorageProvider, VirtualMachine, logManager); }
public ReadOnlyChainProcessingEnv( ReadOnlyTxProcessingEnv txEnv, IBlockValidator blockValidator, IBlockDataRecoveryStep recoveryStep, IRewardCalculator rewardCalculator, IReceiptStorage receiptStorage, IReadOnlyDbProvider dbProvider, ISpecProvider specProvider, ILogManager logManager) { _txEnv = txEnv; IBlockProcessor blockProcessor = new BlockProcessor(specProvider, blockValidator, rewardCalculator, _txEnv.TransactionProcessor, dbProvider.StateDb, dbProvider.CodeDb, dbProvider.TraceDb, StateProvider, _txEnv.StorageProvider, NullTxPool.Instance, receiptStorage, logManager); Processor = new OneTimeChainProcessor(dbProvider, new BlockchainProcessor(_txEnv.BlockTree, blockProcessor, recoveryStep, logManager, false, false)); }
private (IBlockchainProcessor, IStateReader) CreateProcessor(Block block, IReadOnlyDbProvider readOnlyDbProvider, ISpecProvider specProvider, ILogManager logManager) { ReadOnlyTxProcessingEnv txEnv = new ReadOnlyTxProcessingEnv(readOnlyDbProvider, _readOnlyBlockTree, specProvider, logManager); ReadOnlyChainProcessingEnv env = new ReadOnlyChainProcessingEnv(txEnv, _blockValidator, _recoveryStep, _rewardCalculatorSource.Get(txEnv.TransactionProcessor), NullReceiptStorage.Instance, _readOnlyDbProvider, specProvider, logManager); env.BlockProcessor.TransactionProcessed += (sender, args) => { if (_logger.IsInfo) { _logger.Info($"Processed tx {args.Index}/{block.Transactions.Length} of {block.Number}"); } }; return(env.ChainProcessor, txEnv.StateReader); }
public RpcState(IBlockTree blockTree, ISpecProvider specProvider, IReadOnlyDbProvider readOnlyDbProvider, ILogManager logManager) { var stateDb = readOnlyDbProvider.StateDb; var codeDb = readOnlyDbProvider.CodeDb; StateReader = new StateReader(readOnlyDbProvider.StateDb, codeDb, logManager); StateProvider = new StateProvider(stateDb, codeDb, logManager); StorageProvider = new StorageProvider(stateDb, StateProvider, logManager); BlockTree = new ReadOnlyBlockTree(blockTree); BlockhashProvider = new BlockhashProvider(BlockTree, logManager); VirtualMachine = new VirtualMachine(StateProvider, StorageProvider, BlockhashProvider, logManager); TransactionProcessor = new TransactionProcessor(specProvider, StateProvider, StorageProvider, VirtualMachine, logManager); }
private (IBlockchainProcessor, IStateReader) CreateProcessor(Block block, IReadOnlyDbProvider readOnlyDbProvider, ISpecProvider specProvider, ILogManager logManager) { // TODO: need to pass the state with cache ReadOnlyTxProcessingEnv txEnv = new(readOnlyDbProvider, new TrieStore(readOnlyDbProvider.StateDb, logManager).AsReadOnly(), _readOnlyBlockTree, specProvider, logManager); ReadOnlyChainProcessingEnv env = new(txEnv, _blockValidator, _recoveryStep, _rewardCalculatorSource.Get(txEnv.TransactionProcessor), NullReceiptStorage.Instance, _readOnlyDbProvider, specProvider, logManager); env.BlockProcessor.TransactionProcessed += (_, args) => { Interlocked.Increment(ref Metrics.BeamedTransactions); if (_logger.IsInfo) { _logger.Info($"Processed tx {args.Index + 1}/{block.Transactions?.Length} of {block.Number}"); } }; return(env.ChainProcessor, txEnv.StateReader); }
public ReadOnlyTxProcessingEnv( IReadOnlyDbProvider readOnlyDbProvider, ReadOnlyTrieStore readOnlyTrieStore, ReadOnlyBlockTree readOnlyBlockTree, ISpecProvider specProvider, ILogManager logManager) { DbProvider = readOnlyDbProvider; _codeDb = readOnlyDbProvider.CodeDb.AsReadOnly(true); StateReader = new StateReader(readOnlyTrieStore, _codeDb, logManager); StateProvider = new StateProvider(readOnlyTrieStore, _codeDb, logManager); StorageProvider = new StorageProvider(readOnlyTrieStore, StateProvider, logManager); BlockTree = readOnlyBlockTree; BlockhashProvider = new BlockhashProvider(BlockTree, logManager); Machine = new VirtualMachine(StateProvider, StorageProvider, BlockhashProvider, specProvider, logManager); TransactionProcessor = new TransactionProcessor(specProvider, StateProvider, StorageProvider, Machine, logManager); }
public DebugBridge(IReadOnlyDbProvider dbProvider, ITracer tracer, IBlockchainProcessor receiptsProcessor) { _receiptsProcessor = receiptsProcessor ?? throw new ArgumentNullException(nameof(receiptsProcessor)); _receiptsProcessor.ProcessingQueueEmpty += (sender, args) => _receiptProcessedEvent.Set(); _tracer = tracer ?? throw new ArgumentNullException(nameof(tracer)); dbProvider = dbProvider ?? throw new ArgumentNullException(nameof(dbProvider)); IDb blockInfosDb = dbProvider.BlockInfosDb ?? throw new ArgumentNullException(nameof(dbProvider.BlockInfosDb)); IDb blocksDb = dbProvider.BlocksDb ?? throw new ArgumentNullException(nameof(dbProvider.BlocksDb)); IDb receiptsDb = dbProvider.ReceiptsDb ?? throw new ArgumentNullException(nameof(dbProvider.ReceiptsDb)); IDb codeDb = dbProvider.CodeDb ?? throw new ArgumentNullException(nameof(dbProvider.CodeDb)); _dbMappings = new Dictionary <string, IDb>(StringComparer.InvariantCultureIgnoreCase) { { DbNames.State, dbProvider.StateDb }, { DbNames.Storage, dbProvider.StateDb }, { DbNames.BlockInfos, blockInfosDb }, { DbNames.Blocks, blocksDb }, { DbNames.Code, codeDb }, { DbNames.Receipts, receiptsDb } }; }
public AlternativeChain( IBlockTree blockTree, IBlockValidator blockValidator, IRewardCalculator rewardCalculator, ISpecProvider specProvider, IReadOnlyDbProvider dbProvider, IBlockDataRecoveryStep recoveryStep, ILogManager logManager, ITransactionPool customTransactionPool, IReceiptStorage receiptStorage) { StateProvider = new StateProvider(new StateTree(dbProvider.StateDb), dbProvider.CodeDb, logManager); StorageProvider storageProvider = new StorageProvider(dbProvider.StateDb, StateProvider, logManager); IBlockTree readOnlyTree = new ReadOnlyBlockTree(blockTree); BlockhashProvider blockhashProvider = new BlockhashProvider(readOnlyTree); VirtualMachine virtualMachine = new VirtualMachine(StateProvider, storageProvider, blockhashProvider, logManager); ITransactionProcessor transactionProcessor = new TransactionProcessor(specProvider, StateProvider, storageProvider, virtualMachine, logManager); ITransactionPool transactionPool = customTransactionPool; IBlockProcessor blockProcessor = new BlockProcessor(specProvider, blockValidator, rewardCalculator, transactionProcessor, dbProvider.StateDb, dbProvider.CodeDb, dbProvider.TraceDb, StateProvider, storageProvider, transactionPool, receiptStorage, logManager); Processor = new BlockchainProcessor(readOnlyTree, blockProcessor, recoveryStep, logManager, false, false); }
public ReadOnlyChain( ReadOnlyBlockTree readOnlyTree, IBlockValidator blockValidator, IRewardCalculator rewardCalculator, ISpecProvider specProvider, IReadOnlyDbProvider dbProvider, IBlockDataRecoveryStep recoveryStep, ILogManager logManager, ITxPool customTxPool, IReceiptStorage receiptStorage) { ReadOnlyStateProvider = new StateProvider(dbProvider.StateDb, dbProvider.CodeDb, logManager); StorageProvider storageProvider = new StorageProvider(dbProvider.StateDb, ReadOnlyStateProvider, logManager); BlockhashProvider blockhashProvider = new BlockhashProvider(readOnlyTree, logManager); VirtualMachine virtualMachine = new VirtualMachine(ReadOnlyStateProvider, storageProvider, blockhashProvider, specProvider, logManager); ITransactionProcessor transactionProcessor = new TransactionProcessor(specProvider, ReadOnlyStateProvider, storageProvider, virtualMachine, logManager); ITxPool txPool = customTxPool; IBlockProcessor blockProcessor = new BlockProcessor(specProvider, blockValidator, rewardCalculator, transactionProcessor, dbProvider.StateDb, dbProvider.CodeDb, dbProvider.TraceDb, ReadOnlyStateProvider, storageProvider, txPool, receiptStorage, logManager); Processor = new OneTimeChainProcessor(dbProvider, new BlockchainProcessor(readOnlyTree, blockProcessor, recoveryStep, logManager, false, false)); }
protected virtual BlockProcessor CreateBlockProcessor( ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv, ReadOnlyTransactionProcessorSource readOnlyTransactionProcessorSource, IReadOnlyDbProvider readOnlyDbProvider) { if (_context.SpecProvider == null) { throw new StepDependencyException(nameof(_context.SpecProvider)); } if (_context.BlockValidator == null) { throw new StepDependencyException(nameof(_context.BlockValidator)); } if (_context.RewardCalculatorSource == null) { throw new StepDependencyException(nameof(_context.RewardCalculatorSource)); } if (_context.ReceiptStorage == null) { throw new StepDependencyException(nameof(_context.ReceiptStorage)); } if (_context.TxPool == null) { throw new StepDependencyException(nameof(_context.TxPool)); } return(new BlockProcessor( _context.SpecProvider, _context.BlockValidator, _context.RewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), readOnlyTxProcessingEnv.TransactionProcessor, readOnlyDbProvider.StateDb, readOnlyDbProvider.CodeDb, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, _context.TxPool, _context.ReceiptStorage, _context.LogManager)); }
protected virtual BlockProcessor CreateBlockProcessor( ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, IReadOnlyDbProvider readOnlyDbProvider) { if (_api.SpecProvider == null) { throw new StepDependencyException(nameof(_api.SpecProvider)); } if (_api.BlockValidator == null) { throw new StepDependencyException(nameof(_api.BlockValidator)); } if (_api.RewardCalculatorSource == null) { throw new StepDependencyException(nameof(_api.RewardCalculatorSource)); } if (_api.ReceiptStorage == null) { throw new StepDependencyException(nameof(_api.ReceiptStorage)); } if (_api.TxPool == null) { throw new StepDependencyException(nameof(_api.TxPool)); } return(new BlockProcessor( _api.SpecProvider, _api.BlockValidator, _api.RewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), readOnlyTxProcessingEnv.TransactionProcessor, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, _api.TxPool, _api.ReceiptStorage, NullWitnessCollector.Instance, _api.LogManager)); }
public BeamBlockchainProcessor( IReadOnlyDbProvider readOnlyDbProvider, IBlockTree blockTree, ISpecProvider specProvider, ILogManager logManager, IBlockValidator blockValidator, IBlockDataRecoveryStep recoveryStep, IRewardCalculatorSource rewardCalculatorSource, IBlockProcessingQueue blockchainProcessor) { _readOnlyDbProvider = readOnlyDbProvider ?? throw new ArgumentNullException(nameof(readOnlyDbProvider)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _recoveryStep = recoveryStep ?? throw new ArgumentNullException(nameof(recoveryStep)); _rewardCalculatorSource = rewardCalculatorSource ?? throw new ArgumentNullException(nameof(rewardCalculatorSource)); _blockchainProcessor = blockchainProcessor ?? throw new ArgumentNullException(nameof(blockchainProcessor)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logManager = logManager ?? throw new ArgumentNullException(nameof(logManager)); _readOnlyBlockTree = new ReadOnlyBlockTree(_blockTree); _logger = logManager.GetClassLogger(); _blockTree.NewBestSuggestedBlock += OnNewBlock; _blockTree.NewHeadBlock += BlockTreeOnNewHeadBlock; }
protected override BlockProcessor CreateBlockProcessor( ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv, IReadOnlyTxProcessorSource readOnlyTxProcessorSource, IReadOnlyDbProvider readOnlyDbProvider) { if (_api.RewardCalculatorSource == null) { throw new StepDependencyException(nameof(_api.RewardCalculatorSource)); } if (_api.ValidatorStore == null) { throw new StepDependencyException(nameof(_api.ValidatorStore)); } if (_api.ChainSpec == null) { throw new StepDependencyException(nameof(_api.ChainSpec)); } if (_api.BlockTree == null) { throw new StepDependencyException(nameof(_api.BlockTree)); } if (_api.EngineSigner == null) { throw new StepDependencyException(nameof(_api.EngineSigner)); } var chainSpecAuRa = _api.ChainSpec.AuRa; _txPermissionFilter = TxFilterBuilders.CreateTxPermissionFilter(_api, readOnlyTxProcessorSource); _validator = new AuRaValidatorFactory( readOnlyTxProcessingEnv.StateProvider, _api.AbiEncoder, readOnlyTxProcessingEnv.TransactionProcessor, readOnlyTxProcessorSource, readOnlyTxProcessingEnv.BlockTree, _api.ReceiptStorage, _api.ValidatorStore, _api.FinalizationManager, NullTxSender.Instance, NullTxPool.Instance, NethermindApi.Config <IMiningConfig>(), _api.LogManager, _api.EngineSigner, _api.ReportingContractValidatorCache, chainSpecAuRa.PosdaoTransition, true) .CreateValidatorProcessor(chainSpecAuRa.Validators, _api.BlockTree.Head?.Header); if (_validator is IDisposable disposableValidator) { _api.DisposeStack.Push(disposableValidator); } return(new AuRaBlockProcessor( _api.SpecProvider, _api.BlockValidator, _api.RewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), readOnlyTxProcessingEnv.TransactionProcessor, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, NullTxPool.Instance, _api.ReceiptStorage, _api.LogManager, readOnlyTxProcessingEnv.BlockTree, _txPermissionFilter, CreateGasLimitCalculator(readOnlyTxProcessorSource) as AuRaContractGasLimitOverride) { AuRaValidator = _validator }); }
protected override BlockProcessor CreateBlockProcessor(ReadOnlyTxProcessingEnv readOnlyTxProcessingEnv, IReadOnlyDbProvider readOnlyDbProvider) { if (_context.RewardCalculatorSource == null) { throw new StepDependencyException(nameof(_context.RewardCalculatorSource)); } if (_context.ValidatorStore == null) { throw new StepDependencyException(nameof(_context.ValidatorStore)); } if (_context.ChainSpec == null) { throw new StepDependencyException(nameof(_context.ChainSpec)); } var validator = new AuRaValidatorProcessorFactory( readOnlyTxProcessingEnv.StateProvider, new AbiEncoder(), readOnlyTxProcessingEnv.TransactionProcessor, new ReadOnlyTransactionProcessorSource(readOnlyTxProcessingEnv), readOnlyTxProcessingEnv.BlockTree, _context.ReceiptStorage, _context.ValidatorStore, _context.LogManager) .CreateValidatorProcessor(_context.ChainSpec.AuRa.Validators); var blockProducer = new AuRaBlockProcessor( _context.SpecProvider, _context.BlockValidator, _context.RewardCalculatorSource.Get(readOnlyTxProcessingEnv.TransactionProcessor), readOnlyTxProcessingEnv.TransactionProcessor, readOnlyDbProvider.StateDb, readOnlyDbProvider.CodeDb, readOnlyTxProcessingEnv.StateProvider, readOnlyTxProcessingEnv.StorageProvider, _context.TxPool, _context.ReceiptStorage, _context.LogManager, validator); validator.SetFinalizationManager(_context.FinalizationManager, true); return(blockProducer); }
public OneTimeProcessor(IReadOnlyDbProvider readOnlyDbProvider, IBlockchainProcessor processor) { _readOnlyDbProvider = readOnlyDbProvider ?? throw new ArgumentNullException(nameof(readOnlyDbProvider)); _processor = processor ?? throw new ArgumentNullException(nameof(processor)); }