public async Task ProcessTransactionAsync( Transaction transaction, TransactionReceipt transactionReceipt, HexBigInteger blockTimestamp) { var transactionHash = transaction.TransactionHash; var hasStackTrace = false; JObject stackTrace = null; var error = string.Empty; var hasError = transactionReceipt.Failed(); if (EnabledVmProcessing) { try { stackTrace = await _web3 .GetTransactionVmStack(transactionHash) .ConfigureAwait(false); } catch (Exception) { } if (stackTrace != null) { //TODO! _Remove this debug line //File.WriteAllText($"c:/Temp/StackTrace_{transactionReceipt.BlockNumber.Value}.json", stackTrace.ToString()); error = _vmStackErrorChecker.GetError(stackTrace); hasError = !string.IsNullOrEmpty(error); hasStackTrace = true; await _transactionVmStackHandler.HandleAsync (new TransactionVmStack(transactionHash, transaction.To, stackTrace)) .ConfigureAwait(false); } } var tx = new TransactionWithReceipt( transaction, transactionReceipt, hasError, blockTimestamp, error, hasStackTrace); await _transactionHandler.HandleTransactionAsync(tx) .ConfigureAwait(false); }
public async Task ProcessTransactionAsync( Transaction transaction, TransactionReceipt transactionReceipt, HexBigInteger blockTimestamp) { var transactionHash = transaction.TransactionHash; var hasStackTrace = false; JObject stackTrace = null; var error = string.Empty; var hasError = transactionReceipt.Failed(); if (EnabledVmProcessing) { try { stackTrace = await _vmStackProxy .GetTransactionVmStack(transactionHash) .ConfigureAwait(false); } catch { } if (stackTrace != null) { error = _vmStackErrorChecker.GetError(stackTrace); hasError = !string.IsNullOrEmpty(error); hasStackTrace = true; await _transactionVmStackHandler.HandleAsync (new TransactionVmStack(transactionHash, transaction.To, stackTrace)); } } await _transactionHandler.HandleTransactionAsync( new TransactionWithReceipt( transaction, transactionReceipt, hasError, blockTimestamp, error, hasStackTrace)); }