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();
 }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
 public BlockValidationTransactionsExecutor(ITransactionProcessorAdapter transactionProcessor, IStateProvider stateProvider)
 {
     _transactionProcessor = transactionProcessor;
     _stateProvider        = stateProvider;
 }
Ejemplo n.º 5
0
 private ChangeableTransactionProcessorAdapter(ITransactionProcessorAdapter adapter)
 {
     CurrentAdapter = adapter;
 }