/// <summary> /// /// </summary> /// <param name="ecdsa">Needed to recover an address from a signature.</param> /// <param name="txPool">Finding transactions in mempool can speed up address recovery.</param> /// <param name="specProvider">Spec Provider</param> /// <param name="logManager">Logging</param> public RecoverSignatures(IEthereumEcdsa?ecdsa, ITxPool?txPool, ISpecProvider?specProvider, ILogManager?logManager) { _ecdsa = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa)); _txPool = txPool ?? throw new ArgumentNullException(nameof(ecdsa)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); }
public BlockProcessor( ISpecProvider?specProvider, IBlockValidator?blockValidator, IRewardCalculator?rewardCalculator, ITransactionProcessor?transactionProcessor, IStateProvider?stateProvider, IStorageProvider?storageProvider, ITxPool?txPool, IReceiptStorage?receiptStorage, IWitnessCollector?witnessCollector, ILogManager?logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _stateProvider = stateProvider ?? throw new ArgumentNullException(nameof(stateProvider)); _storageProvider = storageProvider ?? throw new ArgumentNullException(nameof(storageProvider)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _witnessCollector = witnessCollector ?? throw new ArgumentNullException(nameof(witnessCollector)); _rewardCalculator = rewardCalculator ?? throw new ArgumentNullException(nameof(rewardCalculator)); _transactionProcessor = transactionProcessor ?? throw new ArgumentNullException(nameof(transactionProcessor)); _receiptsTracer = new BlockReceiptsTracer(); }
public ReadOnlyTxProcessingEnv( IReadOnlyDbProvider?readOnlyDbProvider, IReadOnlyTrieStore?readOnlyTrieStore, IReadOnlyBlockTree?readOnlyBlockTree, ISpecProvider?specProvider, ILogManager?logManager) { if (specProvider == null) { throw new ArgumentNullException(nameof(specProvider)); } DbProvider = readOnlyDbProvider ?? throw new ArgumentNullException(nameof(readOnlyDbProvider)); _codeDb = readOnlyDbProvider.CodeDb.AsReadOnly(true); StateReader = new StateReader(readOnlyTrieStore, _codeDb, logManager); StateProvider = new StateProvider(readOnlyTrieStore, _codeDb, logManager); StorageProvider = new StorageProvider(readOnlyTrieStore, StateProvider, logManager); IWorldState worldState = new WorldState(StateProvider, StorageProvider); BlockTree = readOnlyBlockTree ?? throw new ArgumentNullException(nameof(readOnlyBlockTree)); BlockhashProvider = new BlockhashProvider(BlockTree, logManager); Machine = new VirtualMachine(BlockhashProvider, specProvider, logManager); TransactionProcessor = new TransactionProcessor(specProvider, worldState, Machine, logManager); }
public CliqueBlockProducer( ITxSource txSource, IBlockchainProcessor blockchainProcessor, IStateProvider stateProvider, IBlockTree blockTree, ITimestamper timestamper, ICryptoRandom cryptoRandom, ISnapshotManager snapshotManager, ISealer cliqueSealer, IGasLimitCalculator gasLimitCalculator, ISpecProvider?specProvider, ICliqueConfig config, ILogManager logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _txSource = txSource ?? throw new ArgumentNullException(nameof(txSource)); _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)); _gasLimitCalculator = gasLimitCalculator ?? throw new ArgumentNullException(nameof(gasLimitCalculator)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _snapshotManager = snapshotManager ?? throw new ArgumentNullException(nameof(snapshotManager)); _config = config ?? throw new ArgumentNullException(nameof(config)); _wiggle = new WiggleRandomizer(_cryptoRandom, _snapshotManager); _timer.AutoReset = false; _timer.Elapsed += TimerOnElapsed; _timer.Interval = 100; _timer.Start(); }
public BlockTreeBuilder WithTransactions(IReceiptStorage receiptStorage, ISpecProvider specProvider, Func <Block, Transaction, IEnumerable <LogEntry> >?logsForBlockBuilder = null) { _specProvider = specProvider; _ecdsa = new EthereumEcdsa(specProvider.ChainId, LimboLogs.Instance); _receiptStorage = receiptStorage; _logCreationFunction = logsForBlockBuilder; return(this); }
protected override async Task <TestBlockchain> Build(ISpecProvider?specProvider = null, UInt256?initialValues = null) { TestBlockchain chain = await base.Build(specProvider, initialValues); await chain.BlockchainProcessor.StopAsync(true); return(chain); }
public OnChainTxWatcher(IBlockTree blockTree, ITxPool txPool, ISpecProvider?specProvider, ILogManager logManager) { _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _txPool = txPool ?? throw new ArgumentNullException(nameof(txPool)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider));; _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree.BlockAddedToMain += OnBlockAddedToMain; }
protected override async Task <TestBlockchain> Build(ISpecProvider?specProvider = null, UInt256?initialValues = null) { TestBlockchain chain = await base.Build(specProvider, initialValues); AccountAbstractionRpcModule = new AccountAbstractionRpcModule(UserOperationPool, new [] { new Address(_accountAbstractionConfig.EntryPointContractAddress) }); return(chain); }
public HeaderValidator(IBlockTree?blockTree, ISealValidator?sealValidator, ISpecProvider?specProvider, ILogManager?logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _daoBlockNumber = specProvider.DaoBlockNumber; }
public TransactionProcessor( ISpecProvider?specProvider, IStateProvider?stateProvider, IStorageProvider?storageProvider, IVirtualMachine?virtualMachine, ILogManager?logManager) : this(specProvider, new WorldState(stateProvider, storageProvider), virtualMachine, logManager) { }
public TxPoolTxSource(ITxPool?transactionPool, IStateReader?stateReader, ISpecProvider?specProvider, ITransactionComparerProvider transactionComparerProvider, ILogManager?logManager, ITxFilterPipeline?txFilterPipeline) { _transactionPool = transactionPool ?? throw new ArgumentNullException(nameof(transactionPool)); _stateReader = stateReader ?? throw new ArgumentNullException(nameof(stateReader)); _transactionComparerProvider = transactionComparerProvider ?? throw new ArgumentNullException(nameof(transactionComparerProvider)); _txFilterPipeline = txFilterPipeline ?? throw new ArgumentNullException(nameof(txFilterPipeline)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logger = logManager?.GetClassLogger <TxPoolTxSource>() ?? throw new ArgumentNullException(nameof(logManager)); }
public ReadOnlyTxProcessingEnv( IDbProvider?dbProvider, IReadOnlyTrieStore?trieStore, IBlockTree?blockTree, ISpecProvider?specProvider, ILogManager?logManager) : this(dbProvider?.AsReadOnly(false), trieStore, blockTree?.AsReadOnly(), specProvider, logManager) { }
public ReadOnlyTxProcessingEnvFactory( IReadOnlyDbProvider?readOnlyDbProvider, IReadOnlyTrieStore?readOnlyTrieStore, IReadOnlyBlockTree?readOnlyBlockTree, ISpecProvider?specProvider, ILogManager?logManager) { _readOnlyDbProvider = readOnlyDbProvider; _readOnlyTrieStore = readOnlyTrieStore; _readOnlyBlockTree = readOnlyBlockTree; _specProvider = specProvider; _logManager = logManager; }
public BlockTreeBuilder(Block genesisBlock, ISpecProvider?specProvider = null) { BlocksDb = new MemDb(); HeadersDb = new MemDb(); BlockInfoDb = new MemDb(); MetadataDb = new MemDb(); // so we automatically include in all tests my questionable decision of storing Head block header at 00... BlocksDb.Set(Keccak.Zero, Rlp.Encode(Build.A.BlockHeader.TestObject).Bytes); _genesisBlock = genesisBlock; ChainLevelInfoRepository = new ChainLevelInfoRepository(BlockInfoDb); TestObjectInternal = new BlockTree(BlocksDb, HeadersDb, BlockInfoDb, ChainLevelInfoRepository, specProvider ?? MainnetSpecProvider.Instance, Substitute.For <IBloomStorage>(), LimboLogs.Instance); }
public BlockValidator( ITxValidator?txValidator, IHeaderValidator?headerValidator, IUnclesValidator?unclesValidator, ISpecProvider?specProvider, ILogManager?logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _txValidator = txValidator ?? throw new ArgumentNullException(nameof(txValidator)); _unclesValidator = unclesValidator ?? throw new ArgumentNullException(nameof(unclesValidator)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _headerValidator = headerValidator ?? throw new ArgumentNullException(nameof(headerValidator)); }
protected override async Task <TestBlockchain> Build(ISpecProvider?specProvider = null, UInt256?initialValues = null) { TestBlockchain chain = await base.Build(specProvider, initialValues); MevRpcModule = new MevRpcModule(new JsonRpcConfig(), BundlePool, BlockFinder, StateReader, _tracerFactory, SpecProvider, Signer); return(chain); }
public TransactionProcessor( ISpecProvider?specProvider, IWorldState?worldState, IVirtualMachine?virtualMachine, ILogManager?logManager) { _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _worldState = worldState ?? throw new ArgumentNullException(nameof(worldState)); _stateProvider = worldState.StateProvider; _storageProvider = worldState.StorageProvider; _virtualMachine = virtualMachine ?? throw new ArgumentNullException(nameof(virtualMachine)); _ecdsa = new EthereumEcdsa(specProvider.ChainId, logManager); }
public static ITxFilterPipeline CreateStandardFilteringPipeline( ILogManager logManager, ISpecProvider?specProvider, IMiningConfig?miningConfig = null) { if (specProvider == null) { throw new ArgumentNullException(nameof(specProvider)); } return(new TxFilterPipelineBuilder(logManager) .WithMinGasPriceFilter(miningConfig?.MinGasPrice ?? UInt256.Zero, specProvider) .WithBaseFeeFilter(specProvider) .Build); }
public DevBlockProducer( ITxSource?txSource, IBlockchainProcessor?processor, IStateProvider?stateProvider, IBlockTree?blockTree, IBlockProductionTrigger?trigger, ITimestamper?timestamper, ISpecProvider?specProvider, IMiningConfig?miningConfig, ILogManager logManager) : base( txSource, processor, new NethDevSealEngine(), blockTree, trigger, stateProvider,
protected override async Task <TestBlockchain> Build(ISpecProvider?specProvider = null, UInt256?initialValues = null) { TestBlockchain chain = await base.Build(specProvider, initialValues); IList <Address> entryPointContractAddresses = new List <Address>(); IList <string> _entryPointContractAddressesString = _accountAbstractionConfig.GetEntryPointAddresses().ToList(); foreach (string _addressString in _entryPointContractAddressesString) { bool parsed = Address.TryParse( _addressString, out Address? entryPointContractAddress); entryPointContractAddresses.Add(entryPointContractAddress !); } AccountAbstractionRpcModule = new AccountAbstractionRpcModule(UserOperationPool, entryPointContractAddresses.ToArray()); return(chain); }
protected BlockProducerBase( ITxSource?txSource, IBlockchainProcessor?processor, ISealer?sealer, IBlockTree?blockTree, IBlockProcessingQueue?blockProcessingQueue, IStateProvider?stateProvider, IGasLimitCalculator?gasLimitCalculator, ITimestamper?timestamper, ISpecProvider?specProvider, ILogManager?logManager) { _txSource = txSource ?? throw new ArgumentNullException(nameof(txSource)); 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)); _gasLimitCalculator = gasLimitCalculator ?? throw new ArgumentNullException(nameof(gasLimitCalculator)); Timestamper = timestamper ?? throw new ArgumentNullException(nameof(timestamper)); _spec = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); Logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); }
public BlockDownloader( ISyncFeed <BlocksRequest?>?feed, ISyncPeerPool?syncPeerPool, IBlockTree?blockTree, IBlockValidator?blockValidator, ISealValidator?sealValidator, ISyncReport?syncReport, IReceiptStorage?receiptStorage, ISpecProvider?specProvider, ILogManager?logManager) : base(feed, syncPeerPool, new BlocksSyncPeerAllocationStrategyFactory(), logManager) { _blockTree = blockTree ?? throw new ArgumentNullException(nameof(blockTree)); _blockValidator = blockValidator ?? throw new ArgumentNullException(nameof(blockValidator)); _sealValidator = sealValidator ?? throw new ArgumentNullException(nameof(sealValidator)); _syncReport = syncReport ?? throw new ArgumentNullException(nameof(syncReport)); _receiptStorage = receiptStorage ?? throw new ArgumentNullException(nameof(receiptStorage)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _logger = logManager?.GetClassLogger() ?? throw new ArgumentNullException(nameof(logManager)); _receiptsRecovery = new ReceiptsRecovery(new EthereumEcdsa(_specProvider.ChainId, logManager), _specProvider); _syncBatchSize = new SyncBatchSize(logManager); _blockTree.NewHeadBlock += BlockTreeOnNewHeadBlock; }
public TargetAdjustedGasLimitCalculator(ISpecProvider?specProvider, IMiningConfig?miningConfig) { _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); _miningConfig = miningConfig ?? throw new ArgumentNullException(nameof(miningConfig)); }
public async Task <T> Build(ISpecProvider?specProvider = null, UInt256?initialValues = null) { return((T)(await _blockchain.Build(specProvider, initialValues))); }
public ReceiptsRecovery(IEthereumEcdsa?ecdsa, ISpecProvider?specProvider) { _ecdsa = ecdsa ?? throw new ArgumentNullException(nameof(ecdsa)); _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); }
public async Task <MergeTestBlockchain> Build(ISpecProvider?specProvider = null) => (MergeTestBlockchain) await Build(specProvider, null);
private static PoSSwitcher CreatePosSwitcher(IBlockTree blockTree, IDb?db = null, ISpecProvider?specProvider = null) { db ??= new MemDb(); MergeConfig?mergeConfig = new() { Enabled = true }; return(new PoSSwitcher(mergeConfig, new SyncConfig(), db, blockTree, specProvider ?? MainnetSpecProvider.Instance, LimboLogs.Instance)); } }
public RewardCalculator(ISpecProvider?specProvider) { _specProvider = specProvider ?? throw new ArgumentNullException(nameof(specProvider)); }