private async Task <bool> ValidateTransactionAsync(BlockWithTransactions blockWithTransactions) { foreach (var transaction in blockWithTransactions.Transactions) { if (!transaction.VerifyExpiration(blockWithTransactions.Height - 1)) { Logger.LogWarning($"Transaction {transaction.GetHash()} expired."); return(false); } // No need to validate again if this tx already in local database. if (await _blockchainService.HasTransactionAsync(transaction.GetHash())) { continue; } if (!await _transactionValidationService.ValidateTransactionAsync(transaction)) { return(false); } var constrainedTransactionValidationResult = _transactionValidationService.ValidateConstrainedTransaction(transaction, blockWithTransactions.GetHash()); _transactionValidationService.ClearConstrainedTransactionValidationProvider(blockWithTransactions .GetHash()); if (!constrainedTransactionValidationResult) { Logger.LogWarning($"Transaction {transaction} validation failed for constraint."); return(false); } } return(true); }
private async Task <bool> ValidateTransactionAsync(BlockWithTransactions blockWithTransactions) { foreach (var transaction in blockWithTransactions.Transactions) { // No need to validate again if this tx already in local database. var tx = await _transactionManager.GetTransactionAsync(transaction.GetHash()); if (tx != null) { continue; } if (!await _transactionValidationService.ValidateTransactionAsync(transaction)) { return(false); } var constrainedTransactionValidationResult = _transactionValidationService.ValidateConstrainedTransaction(transaction, blockWithTransactions.GetHash()); _transactionValidationService.ClearConstrainedTransactionValidationProvider(blockWithTransactions .GetHash()); if (!constrainedTransactionValidationResult) { return(false); } } return(true); }