コード例 #1
0
        static void Main(string[] args)
        {
            var nodeAPI = new NodeApiInvoker();

            //var ct = nodeAPI.GetContractTransactionsAsync("TK6EDrMUfiRcso1uR7rNBVDjHRayKPQMoA").Result;
            //var t = nodeAPI.GetTransactionAsync("56d8123b79a05ff093bc5b55a86b13e11a0a907a31c2abcaea02561def53f50b").Result;
            //var t2 = nodeAPI.GetTransactionListAsync().Result;

            //var b = nodeAPI.GetBalanceAsync("TBVbLiQirADEdMsTL4WeTgNmMAgeoS16cF").Result;

            Console.ReadKey();

            var address         = "TPq7HbnLXuapW9oazU6Pqsrp1cduapZhj8";
            var privateKey      = "7b81cd82b28dbf9a6efb21de40fb263d83e286644ca04f910f486cb90a7a8357";
            var contractAddress = "TMWkPhsb1dnkAVNy8ej53KrFNGWy9BJrfu";
            var pwd             = "Passw0rd";
            var client          = new TronCliClient(@"C:\wallet-cli\", @"build\libs\wallet-cli.jar");

            //client.ImportWalletAsync(pwd, privateKey).Wait();
            client.LoginAsync("Passw0rd").Wait();
            client.TransferTRC20Async(address, contractAddress, 10).Wait();

            //client.SendCoinAsync(address, 1).Wait();
            //client.TransferAssetAsync(address, "REVOLUTION", 1).Wait();

            Console.ReadKey();
        }
コード例 #2
0
        static async Task Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("appsettings.json");
            var configuration = builder.Build();

            var optionsBuilder = new DbContextOptionsBuilder <KyubeyContext>();

            optionsBuilder.UseMySql(configuration["MySQL"]);
            db = new KyubeyContext(optionsBuilder.Options);

            tronCliClient = new TronCliClient(configuration["WalletWorkPath"], configuration["WalletFilePath"]);

            Console.WriteLine("Matching bot is starting...");
            //await tronCliClient.ImportWalletAsync(cliWalletPwd, "7b81cd82b28dbf9a6efb21de40fb263d83e286644ca04f910f486cb90a7a8357");
            await tronCliClient.LoginAsync(cliWalletPwd);

            while (true)
            {
                var posItem = await db.Constants.FirstOrDefaultAsync(x => x.Id == "exchange_pos");

                var pos    = Convert.ToInt64(posItem.Value);
                var result = await api.GetContractTransactionsAsync(dexContractAddress);

                foreach (var x in result.Data.OrderBy(x => x.Block))
                {
                    if (x.Block <= pos)
                    {
                        continue;
                    }

                    var tx = await api.GetTransactionAsync(x.TxHash);

                    if (tx.SmartCalls == null)
                    {
                        Thread.Sleep(1000);
                        tx = await api.GetTransactionAsync(x.TxHash);
                    }
                    if (tx.SmartCalls == null)
                    {
                        Thread.Sleep(3000);
                        tx = await api.GetTransactionAsync(x.TxHash);
                    }
                    if (tx.SmartCalls == null)
                    {
                        Thread.Sleep(5000);
                        tx = await api.GetTransactionAsync(x.TxHash);
                    }

                    var owner = tx.SmartCalls.First().Owner;
                    var call  = tx.SmartCalls.First().Calls.FirstOrDefault(y => y.Name == "exchange");
                    if (call == null)
                    {
                        continue;
                    }
                    var bidSymbol    = call.Parameters.First(y => y.Name == "bid").Value;
                    var bidAmount    = Convert.ToInt64(call.Parameters.First(y => y.Name == "bidamount").Value);
                    var askSymbol    = call.Parameters.First(y => y.Name == "ask").Value;
                    var askAmount    = Convert.ToInt64(call.Parameters.First(y => y.Name == "askamount").Value);
                    var transferHash = await GetTransferHashAsync(owner, bidAmount, bidSymbol);

                    if (transferHash == null)
                    {
                        if (!db.TronTrades.Any(t => t.Id == x.TxHash))
                        {
                            db.TronTrades.Add(new TronTrade
                            {
                                Id           = x.TxHash,
                                Status       = TronTradeStatus.ValidateFailed,
                                Account      = owner,
                                AskAmount    = askAmount,
                                AskSymbol    = askSymbol,
                                BidAmount    = bidAmount,
                                BidSymbol    = bidSymbol,
                                Time         = new DateTime(x.Timestamp),
                                TransferHash = null
                            });
                            await db.SaveChangesAsync();
                        }
                        continue;
                    }

                    var dbInstance = db.TronTrades.FirstOrDefault(t => t.Id == x.TxHash);
                    if (dbInstance == null)
                    {
                        db.TronTrades.Add(new TronTrade
                        {
                            Id           = x.TxHash,
                            Status       = TronTradeStatus.ValidateFailed,
                            Account      = owner,
                            AskAmount    = askAmount,
                            AskSymbol    = askSymbol,
                            BidAmount    = bidAmount,
                            BidSymbol    = bidSymbol,
                            Time         = new DateTime(x.Timestamp),
                            TransferHash = transferHash
                        });
                    }
                    else
                    {
                        dbInstance.TransferHash = transferHash;
                    }

                    posItem.Value = x.Block.ToString();
                    await db.SaveChangesAsync();
                    await DoMatchAsync(transferHash, owner, askSymbol, askAmount, bidSymbol, bidAmount);
                }

                await Task.Delay(2000);
            }
        }