public static void Encode(IByteWriter stream, TransactionResultSet encodedTransactionResultSet) {
   int resultssize = encodedTransactionResultSet.Results.Length;
   XdrEncoding.EncodeInt32(resultssize, stream);
   for (int i = 0; i < resultssize; i++) {
     TransactionResultPair.Encode(stream, encodedTransactionResultSet.Results[i]);
   }
 }
Exemple #2
0
        public static TransactionHistoryResultEntry Decode(XdrDataInputStream stream)
        {
            var decodedTransactionHistoryResultEntry = new TransactionHistoryResultEntry();

            decodedTransactionHistoryResultEntry.LedgerSeq   = Uint32.Decode(stream);
            decodedTransactionHistoryResultEntry.TxResultSet = TransactionResultSet.Decode(stream);
            decodedTransactionHistoryResultEntry.Ext         = TransactionHistoryResultEntryExt.Decode(stream);
            return(decodedTransactionHistoryResultEntry);
        }
Exemple #3
0
        public static TransactionHistoryResultEntry Decode(IByteReader stream)
        {
            TransactionHistoryResultEntry decodedTransactionHistoryResultEntry = new TransactionHistoryResultEntry();

            decodedTransactionHistoryResultEntry.LedgerSeq   = Uint32.Decode(stream);
            decodedTransactionHistoryResultEntry.TxResultSet = TransactionResultSet.Decode(stream);
            decodedTransactionHistoryResultEntry.Ext         = TransactionHistoryResultEntryExt.Decode(stream);
            return(decodedTransactionHistoryResultEntry);
        }
 public static TransactionResultSet Decode(IByteReader stream) {
   TransactionResultSet decodedTransactionResultSet = new TransactionResultSet();
   int resultssize = XdrEncoding.DecodeInt32(stream);
   decodedTransactionResultSet.Results = new TransactionResultPair[resultssize];
   for (int i = 0; i < resultssize; i++) {
     decodedTransactionResultSet.Results[i] = TransactionResultPair.Decode(stream);
   }
   return decodedTransactionResultSet;
 }
Exemple #5
0
        public static void Encode(XdrDataOutputStream stream, TransactionResultSet encodedTransactionResultSet)
        {
            var resultssize = encodedTransactionResultSet.Results.Length;

            stream.WriteInt(resultssize);
            for (var i = 0; i < resultssize; i++)
            {
                TransactionResultPair.Encode(stream, encodedTransactionResultSet.Results[i]);
            }
        }
Exemple #6
0
        public static void Encode(IByteWriter stream, TransactionResultSet encodedTransactionResultSet)
        {
            int resultssize = encodedTransactionResultSet.Results.Length;

            XdrEncoding.EncodeInt32(resultssize, stream);
            for (int i = 0; i < resultssize; i++)
            {
                TransactionResultPair.Encode(stream, encodedTransactionResultSet.Results[i]);
            }
        }
Exemple #7
0
        public static TransactionResultSet Decode(XdrDataInputStream stream)
        {
            var decodedTransactionResultSet = new TransactionResultSet();
            var resultssize = stream.ReadInt();

            decodedTransactionResultSet.Results = new TransactionResultPair[resultssize];
            for (var i = 0; i < resultssize; i++)
            {
                decodedTransactionResultSet.Results[i] = TransactionResultPair.Decode(stream);
            }
            return(decodedTransactionResultSet);
        }
Exemple #8
0
        public static TransactionResultSet Decode(IByteReader stream)
        {
            TransactionResultSet decodedTransactionResultSet = new TransactionResultSet();
            int resultssize = XdrEncoding.DecodeInt32(stream);

            decodedTransactionResultSet.Results = new TransactionResultPair[resultssize];
            for (int i = 0; i < resultssize; i++)
            {
                decodedTransactionResultSet.Results[i] = TransactionResultPair.Decode(stream);
            }
            return(decodedTransactionResultSet);
        }
Exemple #9
0
        private static Response HandleRequest(DataProvider dp)
        {
            Response response = new Response();

            try
            {
                if (dp.extra_data != null)
                {
                    DateTime expires_at       = DateTime.Now.AddSeconds(BitCoinTraderConfig.EXPIRE);
                    string   receiver_address = dp.extra_data["qrcode"].ToString();
                    decimal  amount;
                    decimal.TryParse(dp.extra_data["amount"].ToString(), out amount);
                    string crypto_currency_symbol    = dp.extra_data["crypto_currency_symbol"].ToString();
                    TransactionResultSet transaction = new TransactionResultSet();
                    if (dp.extra_data.ContainsKey("transaction"))
                    {
                        transaction = JsonConvert.DeserializeObject <TransactionResultSet>(dp.extra_data["transaction"].ToString());
                    }

                    while (_isSending)
                    {
                        Thread.Sleep(500);
                    }

                    if (expires_at < DateTime.Now)
                    {
                        response.status.code  = Objects.Error.SystemTimeout;
                        response.status.value = "Timeout";
                    }
                    else
                    {
                        _isSending = true;
                        BitCoinTrader.Transaction cryptoTransaction = new BitCoinTrader.Transaction();

                        switch (crypto_currency_symbol)
                        {
                        case "BTC":
                            cryptoTransaction.InitVars(
                                _log,
                                BitCoinTraderConfig.BTC_FULL_NODE_URL,
                                BitCoinTraderConfig.BTC_FULL_NODE_AUTH,
                                BitCoinTraderConfig.BTC_INSIGHT_API,
                                BitCoinTraderConfig.BTC_SENDER_ADDRESS,
                                BitCoinTraderConfig.BTC_MINER_FEE,
                                crypto_currency_symbol
                                );
                            break;

                        case "LTC":
                            cryptoTransaction.InitVars(
                                _log,
                                BitCoinTraderConfig.LTC_FULL_NODE_URL,
                                BitCoinTraderConfig.LTC_FULL_NODE_AUTH,
                                BitCoinTraderConfig.LTC_INSIGHT_API,
                                BitCoinTraderConfig.LTC_SENDER_ADDRESS,
                                BitCoinTraderConfig.LTC_MINER_FEE,
                                crypto_currency_symbol
                                );
                            break;

                        default:
                            response.status.code  = Objects.Error.InvalidParameters;
                            response.status.value = "Crypto not support";
                            break;
                        }

                        if (response.status.code != Objects.Error.NoError)
                        {
                            return(response);
                        }

                        List <UTXOResponse> uTXOs = cryptoTransaction.GetListUnspent(cryptoTransaction._sender);

                        if (uTXOs.Count != 0)
                        {
                            DataProvider dataProvider = new DataProvider();
                            dataProvider.extra_data.Add("uTXOs", uTXOs);
                            dataProvider.extra_data.Add("amount", amount);
                            dataProvider.extra_data.Add("minerFee", cryptoTransaction._minerFee);
                            dataProvider.extra_data.Add("receiverAddress", receiver_address);
                            dataProvider.extra_data.Add("currencySymbol", cryptoTransaction._currencySymbol);
                            response = SpMessage.Transact <DataProvider, Response>(dataProvider, GetZMQAddress(crypto_currency_symbol), new ZContext(), log: _log);
                            if (response.status.code == Objects.Error.NoError)
                            {
                                RPCResponse rpcResponse = cryptoTransaction.SendRawTransaction(response.result.ToString(), transaction.transaction_id);
                                response.result = rpcResponse;
                                if (rpcResponse.error != null)
                                {
                                    response.status.code  = (Objects.Error)rpcResponse.error.code;
                                    response.status.value = rpcResponse.error.message;
                                }
                            }
                        }
                        else
                        {
                            response.status.code  = Objects.Error.ServerError;
                            response.status.value = "Sender address don't have utxo";
                        }
                        _isSending = false;
                    }
                }
            }
            catch (Exception ex)
            {
                response.status.code  = Objects.Error.ServerError;
                response.status.value = ex.Message;
                _isSending            = false;
            }

            return(response);
        }
 public static void Encode(XdrDataOutputStream stream, TransactionHistoryResultEntry encodedTransactionHistoryResultEntry)
 {
     Uint32.Encode(stream, encodedTransactionHistoryResultEntry.LedgerSeq);
     TransactionResultSet.Encode(stream, encodedTransactionHistoryResultEntry.TxResultSet);
     TransactionHistoryResultEntryExt.Encode(stream, encodedTransactionHistoryResultEntry.Ext);
 }
Exemple #11
0
 public static void Encode(IByteWriter stream, TransactionHistoryResultEntry encodedTransactionHistoryResultEntry)
 {
     Uint32.Encode(stream, encodedTransactionHistoryResultEntry.LedgerSeq);
     TransactionResultSet.Encode(stream, encodedTransactionHistoryResultEntry.TxResultSet);
     TransactionHistoryResultEntryExt.Encode(stream, encodedTransactionHistoryResultEntry.Ext);
 }