public async Task <IActionResult> SubmitSignedTransaction([FromBody] PrivateWalletEthSignedTransaction ethTransactionSigned) { if (!ModelState.IsValid) { throw new ClientSideException(ExceptionType.WrongParams, JsonConvert.SerializeObject(ModelState.Errors())); } string serialized = JsonConvert.SerializeObject(ethTransactionSigned); await _log.WriteInfoAsync("PrivateWalletController", "SubmitSignedTransaction", serialized , "StartSubmitSignedTransaction", DateTime.UtcNow); string transactionHash; if (!await _transactionValidationService.IsTransactionErc20Transfer(ethTransactionSigned.SignedTransactionHex)) { transactionHash = await _privateWalletService.SubmitSignedTransaction(ethTransactionSigned.FromAddress, ethTransactionSigned.SignedTransactionHex); } else { transactionHash = await _erc20Service.SubmitSignedTransaction(ethTransactionSigned.FromAddress, ethTransactionSigned.SignedTransactionHex); } await _log.WriteInfoAsync("PrivateWalletController", "SubmitSignedTransaction", $"{serialized}-TransactionHash:{transactionHash}", "EndSubmitSignedTransaction", DateTime.UtcNow); return(Ok(new HashResponse() { HashHex = transactionHash })); }
public async Task <IActionResult> EstimateSignedTransaction([FromBody] PrivateWalletEthSignedTransaction ethTransactionSigned) { if (!ModelState.IsValid) { throw new ClientSideException(ExceptionType.WrongParams, JsonConvert.SerializeObject(ModelState.Errors())); } string serialized = JsonConvert.SerializeObject(ethTransactionSigned); await _log.WriteInfoAsync("PrivateWalletController", "EstimateSignedTransaction", serialized , "StartEstimateSignedTransaction", DateTime.UtcNow); var executionCost = await _privateWalletService.EstimateTransactionExecutionCost(ethTransactionSigned.FromAddress, ethTransactionSigned.SignedTransactionHex); await _log.WriteInfoAsync("PrivateWalletController", "EstimateSignedTransaction", $"{serialized}-TransactionHash:{executionCost.GasAmount.ToString()}", "EndEstimateSignedTransaction", DateTime.UtcNow); return(Ok(new EstimatedGasModel { EstimatedGas = executionCost.GasAmount.ToString(), IsAllowed = executionCost.IsAllowed })); }