public async Task <string> ExecuteRawTransactionAsync(ExecuteRawTransactionDto input) { Transaction transaction; try { var byteArray = ByteArrayHelper.HexStringToByteArray(input.RawTransaction); transaction = Transaction.Parser.ParseFrom(byteArray); transaction.Signature = ByteString.CopyFrom(ByteArrayHelper.HexStringToByteArray(input.Signature)); } catch (Exception e) { Logger.LogError(e, e.Message); //for debug throw new UserFriendlyException(Error.Message[Error.InvalidParams], Error.InvalidParams.ToString()); } if (!transaction.VerifySignature()) { throw new UserFriendlyException(Error.Message[Error.InvalidSignature], Error.InvalidSignature.ToString()); } try { var response = await CallReadOnlyAsync(transaction); return(response?.ToHex()); } catch (Exception e) { throw new UserFriendlyException(Error.Message[Error.InvalidTransaction], Error.InvalidTransaction.ToString(), e.Message); } }
/// <summary> /// Call a method of a contract by given serialized strings. /// </summary> /// <param name="input"></param> /// <returns>Serialized result</returns> public async Task <string> ExecuteRawTransactionAsync(ExecuteRawTransactionDto input) { var url = GetRequestUrl(_baseUrl, "api/blockChain/executeRawTransaction"); var parameters = new Dictionary <string, string> { { "RawTransaction", input.RawTransaction }, { "Signature", input.Signature } }; return(await _httpService.PostResponseAsync <string>(url, parameters)); }
public async Task <string> ExecuteRawTransactionAsync(ExecuteRawTransactionDto input) { Transaction transaction; try { var byteArray = ByteArrayHelper.HexStringToByteArray(input.RawTransaction); transaction = Transaction.Parser.ParseFrom(byteArray); transaction.Signature = ByteString.CopyFrom(ByteArrayHelper.HexStringToByteArray(input.Signature)); } catch (Exception e) { Logger.LogError(e, e.Message); //for debug throw new UserFriendlyException(Error.Message[Error.InvalidParams], Error.InvalidParams.ToString()); } if (!transaction.VerifySignature()) { throw new UserFriendlyException(Error.Message[Error.InvalidSignature], Error.InvalidSignature.ToString()); } try { var response = await CallReadOnlyAsync(transaction); try { var contractMethodDescriptor = await GetContractMethodDescriptorAsync(transaction.To, transaction.MethodName); var output = contractMethodDescriptor.OutputType.Parser.ParseFrom(ByteString.CopyFrom(response)); return(JsonFormatter.ToDiagnosticString(output)); } catch { return(response?.ToHex()); } } catch (Exception e) { throw new UserFriendlyException(Error.Message[Error.InvalidTransaction], Error.InvalidTransaction.ToString(), e.Message); } }
public async Task <string> ExecuteRawTransactionAsync(ExecuteRawTransactionDto input) { try { var byteArray = ByteArrayHelper.HexStringToByteArray(input.RawTransaction); var transaction = Transaction.Parser.ParseFrom(byteArray); transaction.Signature = ByteString.CopyFrom(ByteArrayHelper.HexStringToByteArray(input.Signature)); if (!transaction.VerifySignature()) { throw new UserFriendlyException(Error.Message[Error.InvalidTransaction], Error.InvalidTransaction.ToString()); } var response = await CallReadOnlyReturnReadableValueAsync(transaction); return(response); } catch { throw new UserFriendlyException(Error.Message[Error.InvalidTransaction], Error.InvalidTransaction.ToString()); } }