/// <summary> /// send a transaction /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <SendRawTransactionOutput> SendRawTransactionAsync(SendRawTransactionInput input) { var transaction = Transaction.Parser.ParseFrom(ByteArrayHelper.HexStringToByteArray(input.Transaction)); transaction.Signature = ByteString.CopyFrom(ByteArrayHelper.HexStringToByteArray(input.Signature)); var txIds = await PublishTransactionsAsync(new[] { transaction.ToByteArray().ToHex() }); var output = new SendRawTransactionOutput { TransactionId = txIds[0] }; if (!input.ReturnTransaction) { return(output); } var transactionDto = JsonConvert.DeserializeObject <TransactionDto>(transaction.ToString()); var contractMethodDescriptor = await GetContractMethodDescriptorAsync(transaction.To, transaction.MethodName); var parameters = contractMethodDescriptor.InputType.Parser.ParseFrom(transaction.Params); transactionDto.Params = JsonFormatter.ToDiagnosticString(parameters); output.Transaction = transactionDto; return(output); }
/// <summary> /// Broadcast a serialized transaction. /// </summary> /// <param name="input"></param> /// <returns>SendRawTransactionOutput</returns> public async Task <SendRawTransactionOutput> SendRawTransactionAsync(SendRawTransactionInput input) { var url = GetRequestUrl(_baseUrl, "api/blockChain/sendRawTransaction"); var parameters = new Dictionary <string, string> { { "Transaction", input.Transaction }, { "Signature", input.Signature }, { "ReturnTransaction", input.ReturnTransaction ? "true" : "false" } }; return(await _httpService.PostResponseAsync <SendRawTransactionOutput>(url, parameters)); }
/// <summary> /// send a transaction /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <SendRawTransactionOutput> SendRawTransactionAsync(SendRawTransactionInput input) { var transaction = Transaction.Parser.ParseFrom(ByteArrayHelper.HexStringToByteArray(input.Transaction)); transaction.Signature = ByteString.CopyFrom(ByteArrayHelper.HexStringToByteArray(input.Signature)); var txIds = await PublishTransactionsAsync(new[] { transaction.ToByteArray().ToHex() }); var output = new SendRawTransactionOutput { TransactionId = txIds[0] }; if (!input.ReturnTransaction) { return(output); } var transactionDto = JsonConvert.DeserializeObject <TransactionDto>(transaction.ToString()); var contractMethodDescriptor = await GetContractMethodDescriptorAsync(transaction.To, transaction.MethodName); if (contractMethodDescriptor == null) { throw new UserFriendlyException(Error.Message[Error.NoMatchMethodInContractAddress], Error.NoMatchMethodInContractAddress.ToString()); } var parameters = contractMethodDescriptor.InputType.Parser.ParseFrom(transaction.Params); if (!IsValidMessage(parameters)) { throw new UserFriendlyException(Error.Message[Error.InvalidParams], Error.InvalidParams.ToString()); } transactionDto.Params = JsonFormatter.ToDiagnosticString(parameters); output.Transaction = transactionDto; return(output); }