public BlockProductionTransactionsExecutor( ITransactionProcessor transactionProcessor, IStateProvider stateProvider, IStorageProvider storageProvider, ISpecProvider specProvider, ILogManager logManager) { _transactionProcessor = new BuildUpTransactionProcessorAdapter(transactionProcessor); _stateProvider = stateProvider; _storageProvider = storageProvider; _blockProductionTransactionPicker = new BlockProductionTransactionPicker(specProvider); _logger = logManager.GetClassLogger(); }
public static void ProcessTransaction(this ITransactionProcessorAdapter transactionProcessor, Block block, Transaction currentTx, BlockReceiptsTracer receiptsTracer, ProcessingOptions processingOptions, IStateProvider stateProvider) { if (processingOptions.ContainsFlag(ProcessingOptions.DoNotVerifyNonce)) { currentTx.Nonce = stateProvider.GetNonce(currentTx.SenderAddress); } receiptsTracer.StartNewTxTrace(currentTx); transactionProcessor.Execute(currentTx, block.Header, receiptsTracer); receiptsTracer.EndTxTrace(); }
public GethLikeTxTrace?Trace(BlockParameter blockParameter, Transaction tx, GethTraceOptions options, CancellationToken cancellationToken) { Block block = _blockTree.FindBlock(blockParameter); if (block is null) { throw new InvalidOperationException($"Cannot find block {blockParameter}"); } tx.Hash ??= tx.CalculateHash(); block = block.WithReplacedBodyCloned(BlockBody.WithOneTransactionOnly(tx)); ITransactionProcessorAdapter currentAdapter = _transactionProcessorAdapter.CurrentAdapter; _transactionProcessorAdapter.CurrentAdapter = new TraceTransactionProcessorAdapter(_transactionProcessorAdapter.TransactionProcessor); try { return(Trace(block, tx.Hash, cancellationToken, options)); } finally { _transactionProcessorAdapter.CurrentAdapter = currentAdapter; } }
public BlockValidationTransactionsExecutor(ITransactionProcessorAdapter transactionProcessor, IStateProvider stateProvider) { _transactionProcessor = transactionProcessor; _stateProvider = stateProvider; }
private ChangeableTransactionProcessorAdapter(ITransactionProcessorAdapter adapter) { CurrentAdapter = adapter; }