예제 #1
0
파일: MyJson.cs 프로젝트: wangfei0/NeoDun
        public IJsonNode Clone()
        {
            var num = new JsonNode_Array();

            foreach (var item in this)
            {
                num.Add(item.Clone());
            }
            return(num);
        }
예제 #2
0
        async Task test_getAllSAR4C()
        {
            //查询所有状态为1的SAR
            DateTime dt = DateTime.Now;

            Console.WriteLine("Start time:" + dt);

            byte[] postdata;
            var    url = Helper.MakeRpcUrlPost(Config.api, "getsar4CListByType", out postdata,
                                               new JsonNode_ValueNumber(1),
                                               new JsonNode_ValueNumber(1000),
                                               new JsonNode_ValueNumber(1));
            var result = await Helper.HttpPost(url, postdata);

            List <string> list = new List <string>();

            MyJson.JsonNode_Object json = MyJson.Parse(result) as MyJson.JsonNode_Object;
            JsonNode_Array         arrs = json["result"].AsList();

            foreach (JsonNode_Object ob in arrs)
            {
                string addr = ob["addr"].AsString();

                Console.WriteLine("addr" + addr);

                //查询旧合约SAR
                var result2 = await newsar_common.api_InvokeScript(newsar_common.sc_sar, "getSAR4C", "(addr)" + addr);

                newsar_common.ResultItem   item  = result2.value;
                newsar_common.ResultItem[] items = item.subItem[0].subItem;

                if (items != null)
                {
                    string     owner     = ThinNeo.Helper.GetAddressFromScriptHash(items[0].AsHash160());
                    string     txid      = items[1].AsHashString();
                    BigInteger locked    = items[2].AsInteger();
                    BigInteger hasDrawed = items[3].AsInteger();
                    string     assetType = items[4].AsString();
                    BigInteger status    = items[5].AsInteger();

                    Console.WriteLine("###############");
                    Console.WriteLine("from:" + owner);
                    Console.WriteLine("txid:" + txid);
                    Console.WriteLine("locked:" + locked);
                    Console.WriteLine("hasDrawed:" + hasDrawed);
                    Console.WriteLine("assetType:" + assetType);
                    Console.WriteLine("status:" + status);
                    //Console.WriteLine("bondLocked:" + items[6].AsInteger());
                    //Console.WriteLine("bondDrawed:" + items[7].AsInteger());
                }
            }
            DateTime end = DateTime.Now;

            Console.WriteLine("End time:" + end);
        }
예제 #3
0
        async Task test_batchTransferNEO()
        {
            DateTime dt = DateTime.Now;

            Console.WriteLine("Start time:" + dt);
            byte[] postdata;

            string api = "http://api.alchemint.io/api/privatenet";
            //查询交易,总数可能很多
            var url = Helper.MakeRpcUrlPost(api, "getaddrs", out postdata,
                                            new JsonNode_ValueNumber(1000),
                                            new JsonNode_ValueNumber(1));
            var result = await Helper.HttpPost(url, postdata);

            List <string> list = new List <string>();

            MyJson.JsonNode_Object json = MyJson.Parse(result) as MyJson.JsonNode_Object;
            JsonNode_Array         arrs = json["result"].AsList();

            foreach (JsonNode_Object ob in arrs)
            {
                string to = ob["addr"].AsString();
                Console.WriteLine("to:" + to);
                //获取地址的资产列表
                Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, this.address);

                if (dir.ContainsKey(Config.id_NEO) == false)
                {
                    Console.WriteLine("no neo");
                    return;
                }
                List <Utxo> newlist = dir[Config.id_NEO];

                ThinNeo.Transaction tran = Helper.makeTran(newlist, to, new ThinNeo.Hash256(Config.id_NEO), 100);

                var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), prikey);
                tran.AddWitness(signdata, pubkey, address);

                var trandata    = tran.GetRawData();
                var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

                url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));

                string poststr = System.Text.Encoding.UTF8.GetString(postdata);

                result = await Helper.HttpPost(url, postdata);

                Console.WriteLine("得到的结果是:" + result);
                Thread.Sleep(40000);
            }
            DateTime end = DateTime.Now;

            Console.WriteLine("End time:" + end);
            //等待时间
        }
예제 #4
0
        //查询所有地址
        async Task test_queryAllTransfer()
        {
            DateTime dt = DateTime.Now;

            Console.WriteLine("Start time:" + dt);
            byte[] postdata;
            //查询交易,总数可能很多
            var url = Helper.MakeRpcUrlPost(Config.api, "getnep5transfersbyasset", out postdata,
                                            new JsonNode_ValueString(Config.sc_sds),
                                            new JsonNode_ValueNumber(10000),
                                            new JsonNode_ValueNumber(1));
            var result = await Helper.HttpPost(url, postdata);

            //System.IO.File.WriteAllText(@"D:\address\addssssss0907.json", result, Encoding.UTF8);

            List <string> list = new List <string>();

            MyJson.JsonNode_Object json = MyJson.Parse(result) as MyJson.JsonNode_Object;
            JsonNode_Array         arrs = json["result"].AsList();

            foreach (JsonNode_Object ob in arrs)
            {
                string from  = ob["from"].AsString();
                string to    = ob["to"].AsString();
                string value = ob["value"].AsString();
                string txid  = ob["txid"].AsString();
                int    index = ob["blockindex"].AsInt();

                url = Helper.MakeRpcUrlPost(Config.api, "getblocktime", out postdata,
                                            new JsonNode_ValueNumber(index));
                result = await Helper.HttpPost(url, postdata);

                json = MyJson.Parse(result) as MyJson.JsonNode_Object;

                arrs = json["result"].AsList();
                string time = arrs[0].AsDict()["time"].AsString();

                //long unixTimeStamp = 1478162177;
                System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区
                DateTime        dt2       = startTime.AddSeconds(double.Parse(time));
                string          dt2str    = dt2.ToString("yyyy/MM/dd HH:mm:ss:ffff");
                System.Console.WriteLine();
                //json["result"].AsDict()["time"];
                //JsonNode_Array arrs = json["result"].AsList();


                string str     = txid + "," + from + "," + to + "," + value + "," + dt2str + "\r\n";
                string newPath = @"D:\address\transfers0907.csv";
                File.AppendAllText(newPath, str);
            }
            DateTime end = DateTime.Now;

            Console.WriteLine("End time:" + end);
        }
예제 #5
0
 /// <summary>
 /// Decode array in message.
 /// </summary>
 private void decodeArray(JsonNode_Array list, string type, JsonNode_Object proto)
 {
     if (this.util.isSimpleType(type))
     {
         int length = (int)decodeUInt32();
         for (int i = 0; i < length; i++)
         {
             list.Add(this.decodeProp(type, null));
         }
     }
     else
     {
         list.Add(this.decodeProp(type, proto));
     }
 }
예제 #6
0
        //批量转账
        async Task test_batchTransfer2()
        {
            DateTime dt = DateTime.Now;

            Console.WriteLine("Start time:" + dt);
            byte[] postdata;

            string api = "http://api.alchemint.io/api/privatenet";
            //查询交易,总数可能很多
            var url = Helper.MakeRpcUrlPost(api, "getaddrs", out postdata,
                                            new JsonNode_ValueNumber(1000),
                                            new JsonNode_ValueNumber(1));
            var result = await Helper.HttpPost(url, postdata);

            List <string> list = new List <string>();

            MyJson.JsonNode_Object json = MyJson.Parse(result) as MyJson.JsonNode_Object;
            JsonNode_Array         arrs = json["result"].AsList();

            foreach (JsonNode_Object ob in arrs)
            {
                string to = ob["addr"].AsString();
                Console.WriteLine("to:" + to);
                result = await sds_common.api_SendbatchTransfer(prikey, Config.sds, "transfer",
                                                                "(addr)" + this.address,
                                                                "(addr)" + to,
                                                                "(int)" + 10000000000
                                                                );

                subPrintLine(result);
            }
            DateTime end = DateTime.Now;

            Console.WriteLine("End time:" + end);
            //等待时间
        }
예제 #7
0
        //查询所有地址
        async Task test_queryAllAddress()
        {
            DateTime dt = DateTime.Now;

            Console.WriteLine("Start time:" + dt);
            byte[] postdata;
            //查询交易,总数可能很多
            var url = Helper.MakeRpcUrlPost(Config.api, "getnep5transfersbyasset", out postdata,
                                            new JsonNode_ValueString(sds_common.sc),
                                            new JsonNode_ValueNumber(10000),
                                            new JsonNode_ValueNumber(1));
            var result = await Helper.HttpPost(url, postdata);

            //System.IO.File.WriteAllText(@"D:\address\addssssss.json", result, Encoding.UTF8);

            List <string> list = new List <string>();

            MyJson.JsonNode_Object json = MyJson.Parse(result) as MyJson.JsonNode_Object;
            JsonNode_Array         arrs = json["result"].AsList();

            foreach (JsonNode_Object ob in arrs)
            {
                string from = ob["from"].AsString();
                string to   = ob["to"].AsString();
                if (!string.IsNullOrEmpty(from))
                {
                    list.Add(from);
                    if (from == to)
                    {
                        Console.WriteLine("from:" + from + "/to:" + to);
                    }
                }
                if (!string.IsNullOrEmpty(to))
                {
                    list.Add(to);
                }
            }
            BigInteger    sum  = 0;
            List <string> adds = list.Distinct().ToList();

            Console.WriteLine("total address:" + adds.Count);
            string[] balances = new string[] { };
            foreach (string s in adds)
            {
                //int index = adds.IndexOf(s);
                //Console.WriteLine("address:" + s);
                //调用RPC
                //var re = await sds_common.api_InvokeScriptByRPC(sds_common.sc_sds, "balanceOf",
                //"(addr)" + s);
                //调用API
                var re = await sds_common.api_InvokeScript(sds_common.sc_sds, "balanceOf",
                                                           "(addr)" + s);

                sds_common.ResultItem item = re.value;

                BigInteger mount = item.subItem[0].AsInteger();
                sum = sum + mount;
                if (mount > 0)
                {
                    //排除掉所有switcheo地址
                    //if (s != "AKJQMHma9MA8KK5M8iQg8ASeg3KZLsjwvB")
                    //{
                    string str     = s + "," + mount + "\r\n";
                    string newPath = @"D:\address\balances0809.txt";
                    File.AppendAllText(newPath, str);
                    //}
                }
            }

            Console.WriteLine("sum:" + sum);
            DateTime end = DateTime.Now;

            Console.WriteLine("End time:" + end);
        }