Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        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());
            }
        }