示例#1
0
        public void Run(bool testNet = false)
        {
            _logger.Information("------------------------------");
            _logger.Information("Starting Marvin...");
            _logger.Information("Getting current price...");
            var meanPrices = GetMeanPrices();

            _logger.Information($"ICXUSD current price: {meanPrices}");
            var tx = CreateTransaction(meanPrices);

            _logger.Information($"Updating Daedric...");
            var result = UpdateDaedric(tx);

            _logger.Information($"Deadric updated tx hash: {result}");

            TransactionInfo postResult = null;

            try
            {
                var getTransactionByHash = new GetTransactionByHash(_appsetting.Network_Url);
                postResult = getTransactionByHash.Invoke(result).Result;
                _logger.Information($"Transaction info : {postResult.ToString()}");
            }
            catch (Exception ex)
            {
                _logger.Information("Error retrieving Transaction info, swallowing error");
            }
            _logger.Information("Completed");
        }
示例#2
0
        public async Task Test_GetTransactionByHashVersion3Tx2()
        {
            // Link : https://trackerdev.icon.foundation/transaction/0x5aff7a465532e0262c9ca7d8ea783855675ad5ed1a4aa2e1b40c96291c84dd9c

            var getTransactionByHash = new GetTransactionByHash(Consts.ApiUrl.TestNet);
            var result = await getTransactionByHash.Invoke("0x5aff7a465532e0262c9ca7d8ea783855675ad5ed1a4aa2e1b40c96291c84dd9c");

            Assert.AreEqual(result.Transaction.Version, "0x3");
            Assert.AreEqual(result.Transaction.From, "hxcc345473807f9fa3c4d147433708e85bb106885b");
            Assert.AreEqual(result.Transaction.To, "cx0dd9315a1d34f547fca030381c1cd3a803dba22c");
            Assert.AreEqual(result.Transaction.StepLimit.Value.ToHex0x(), "0x87000000");
            Assert.AreEqual(result.Transaction.Timestamp.Value.ToHex0x(), "0x57c65b3f9adb8");
            Assert.AreEqual(result.Transaction.NID.Value.ToHex0x(), "0x2");
            Assert.AreEqual(result.Transaction.Value, null);
            Assert.AreEqual(result.Transaction.Nonce, null);
            Assert.AreEqual(result.Transaction.DataType, "call");
            Assert.AreEqual(result.Transaction.Hash, "0x5aff7a465532e0262c9ca7d8ea783855675ad5ed1a4aa2e1b40c96291c84dd9c");
            Assert.AreEqual(result.Transaction.Signature, "v5xCYupHC0fXWV/FWV9TaDT0ykqbFYH9olRxoO/rZN574N97niadjmQIwSpKsufjqhTeYDhCRy0CbSZ22cQA4gA=");
            Assert.AreEqual(result.TxIndex.ToHex0x(), "0x0");
            Assert.AreEqual(result.BlockHash, "0xbcff5484e5faf559401bdcc2d4a2f843e6659a69e22cea23074d75c6119f146e");
            Assert.AreEqual(result.BlockHeight.ToHex0x(), "0xa190");
            Assert.AreEqual(result.Transaction.Data, new Dictionary <string, object>()
            {
                ["method"] = "dispossess_broker_tokens",
                ["params"] = new Dictionary <string, object>()
                {
                    ["amount"] = "0xf6b75ab2bc2bfc0"
                }
            });
        }
示例#3
0
        public void Run()
        {
            _logger.Information("------------------------------");
            _logger.Information("Starting Marvin...");
            _logger.Information("Getting current price...");
            var meanPrices = GetMeanPrices();

            _logger.Information($"ICXUSD current price: {meanPrices}");
            var tx = CreateTransaction(meanPrices);

            _logger.Information($"Updating Daedric...");
            var result = UpdateDaedric(tx);

            _logger.Information($"Deadric updated tx hash: {result}");
            var getTransactionByHash = new GetTransactionByHash(_appsetting.Network_Url);
            var postResult           = getTransactionByHash.Invoke(result).Result;
        }
示例#4
0
        public void Run(bool testNet = false)
        {
            _logger.Information("------------------------------");
            _logger.Information("Starting Marvin...");
            _logger.Information("Getting current price...");
            var meanPrices = GetMeanPrices();

            _logger.Information($"ICXUSD current price: {meanPrices}");
            var tx = CreateTransaction(meanPrices);

            _logger.Information($"Updating Daedric...");
            var result = UpdateDaedric(tx);

            _logger.Information($"Deadric updated tx hash: {result}");
            ExceptionHelper.TryNoException(() =>
            {
                var getTransactionByHash   = new GetTransactionByHash(_appsetting.Network_Url);
                TransactionInfo postResult = getTransactionByHash.Invoke(result).Result;
                _logger.Information($"Transaction info : {postResult.ToString()}");
            }, _logger);
            _logger.Information("Completed");
        }
示例#5
0
        public async Task Test_GetTransactionByHashVersion3Tx1()
        {
            // Link : https://trackerdev.icon.foundation/transaction/0x1dd7f6ec8f6de0b454c827d7f845fcc8056dd32f0ed1fecb37be860148081263

            var getTransactionByHash = new GetTransactionByHash(Consts.ApiUrl.TestNet);
            var result = await getTransactionByHash.Invoke("0x1dd7f6ec8f6de0b454c827d7f845fcc8056dd32f0ed1fecb37be860148081263");

            Assert.AreEqual(result.Transaction.Version, "0x3");
            Assert.AreEqual(result.Transaction.From, "hx889fd3476171ccaf650bdba0778ddafe7a5efc3e");
            Assert.AreEqual(result.Transaction.To, "hx1589eda4474e6fb213ee0cd68e7768b3ded5bb34");
            Assert.AreEqual(result.Transaction.StepLimit.Value.ToHex0x(), "0x186a0");
            Assert.AreEqual(result.Transaction.Timestamp.Value.ToHex0x(), "0x57bde4189e6fa");
            Assert.AreEqual(result.Transaction.NID.Value.ToHex0x(), "0x2");
            Assert.AreEqual(result.Transaction.Value.Value.ToHex0x(), "0x1a5a3afa64f38000");
            Assert.AreEqual(result.Transaction.Nonce.Value.ToHex0x(), "0x2");
            Assert.AreEqual(result.Transaction.Data, null);
            Assert.AreEqual(result.Transaction.DataType, null);
            Assert.AreEqual(result.Transaction.Signature, "rSzwJxRMl0wRTPq98RMKFFaGpJLmb03fcKSEjqozwhV8upGrK31iguB6e9HvnOXnbaTqAnB/ofmvebclxKaa2gA=");
            Assert.AreEqual(result.Transaction.Hash, "0x1dd7f6ec8f6de0b454c827d7f845fcc8056dd32f0ed1fecb37be860148081263");
            Assert.AreEqual(result.TxIndex.ToHex0x(), "0x0");
            Assert.AreEqual(result.BlockHash, "0x2213ebbdd4e6ec569ca002f2da1c228f4a6e3e1c2d346c4890bc8c0da454dee3");
            Assert.AreEqual(result.BlockHeight.ToHex0x(), "0xa056");
        }
示例#6
0
        public static void SearchTransaction()
        {
            Console.WriteLine("Enter the transaction you wish to search for");
            var tx = Console.ReadLine();

            var getTransactionByHash = new GetTransactionByHash(WalletHelper.TestNetUrl);
            var result = getTransactionByHash.Invoke(tx).Result;

            var ticks = Utils.FromEpoch((long)result.Transaction.Timestamp.Value / 1000);

            Console.WriteLine($"BlockHeight : {result.BlockHeight}");
            Console.WriteLine($"Transaction Timestamp : {ticks.ToLocalTime().ToString("yyyy-MM-dd, HH:mm:ss")}");

            if (result.Transaction.Value != null)
            {
                Console.WriteLine($"Transaction Amount : {Utils.Loop2ICX(result.Transaction.Value.Value)} ICX");
            }

            var json = JsonConvert.SerializeObject(result.Transaction.Data);
            var data = JsonConvert.DeserializeObject <DataViewer>(json.Replace("params", "param"));

            Console.WriteLine($"Method name: {data?.method}");
            Console.WriteLine($"Value: {data?.param.value}");
        }
示例#7
0
        public static void LoadTransactions(string publicAddress, List <IconTransactionModel> transactionList, long chatId, int numberOfBets)
        {
            Console.WriteLine($"{DateTime.Now.ToLocalTime()}: Loading bet history for: {publicAddress} ");

            // Open the stream using a StreamReader for easy access.
            var message = "";

            var transactionsByAddress = (from tranList in transactionList
                                         from dataList in tranList.data
                                         where dataList.fromAddr == publicAddress
                                         orderby dataList.createDate descending
                                         select dataList.txHash).Distinct().ToList().Take(numberOfBets);


            foreach (var transaction in transactionsByAddress)
            {
                var getTransactionByHash = new GetTransactionByHash(Consts.ApiUrl.MainNet);
                var result = getTransactionByHash.Invoke(transaction).Result;

                var json     = JsonConvert.SerializeObject(result.Transaction.Data);
                var betModel = JsonConvert.DeserializeObject <BetModel>(json.Replace("params", "param"));

                var getTransactionResult = GetTransactionResult.Create(Consts.ApiUrl.MainNet);
                var transactionResult    = getTransactionResult(transaction).Result;

                message += $"Bet Type: {betModel.method}\n";

                if (betModel.method.Contains("number"))
                {
                    message += $"Numbers Placed: {betModel.param.numbers} \n";
                }


                if (betModel.method.Contains("color"))
                {
                    var color = string.Empty;
                    switch (betModel.param.color)
                    {
                    case 0:
                        color = "Black";
                        break;

                    case 1:
                        color = "Red";
                        break;
                    }

                    message += $"Bet Option Placed: {color}\n";
                }

                if (betModel.method.Contains("even_odd"))
                {
                    var even_odd = string.Empty;

                    switch (betModel.param.even_odd)
                    {
                    case 0:
                        even_odd = "Even";
                        break;

                    case 1:
                        even_odd = "Odd";
                        break;
                    }

                    message += $"Bet Option Placed: {even_odd}\n";
                }
                bool win       = false;
                var  amountBet = string.Empty;
                foreach (var log in transactionResult.EventLogs)
                {
                    var eventTransactionString = JsonConvert.SerializeObject(log);
                    var transactionResultModel = JsonConvert.DeserializeObject <TransactionResultModel>(eventTransactionString);

                    if (transactionResultModel.Indexed[0].Contains("BetPlaced"))
                    {
                        var betAmount = transactionResultModel.Indexed[1];
                        if (betAmount.StartsWith("0x"))
                        {
                            betAmount = betAmount.Substring(2, betAmount.Length - 2);
                        }

                        BigInteger number = BigInteger.Parse("00" + betAmount, System.Globalization.NumberStyles.AllowHexSpecifier);


                        amountBet = NumericHelper.Loop2ICX(number.ToString());

                        message += $"Amount placed {amountBet} ICX \n";
                    }


                    if (transactionResultModel.Indexed[0].Contains("BetResult"))
                    {
                        message += $"Wheel stopped on number: {transactionResultModel.Indexed[2]}\n";
                    }

                    if (transactionResultModel.Indexed[0].Contains("ICXTransfer"))
                    {
                        var betWinings = transactionResultModel.Indexed[3];

                        if (betWinings.StartsWith("0x"))
                        {
                            betWinings = betWinings.Substring(2, betWinings.Length - 2);
                        }

                        BigInteger number    = BigInteger.Parse("00" + betWinings, System.Globalization.NumberStyles.AllowHexSpecifier);
                        var        amountWon = NumericHelper.Loop2ICX(number.ToString());

                        var winTakeBet = Convert.ToDecimal(amountWon) - Convert.ToDecimal(amountBet);
                        message += $"You won {winTakeBet} ICX \n";
                    }

                    foreach (var eventData in log.Data)
                    {
                        if (eventData.ToUpper().Contains("WINNINGS"))
                        {
                            win = true;
                            break;
                        }
                    }
                }

                if (win)
                {
                    message += "Bet Result: WIN!\n";
                }
                else
                {
                    message += "Bet Result: LOST!\n";
                }

                message += "-----------------------------------------\n";
            }
            SendTelegram(message, chatId);
        }