public IJsonNode Clone() { var num = new JsonNode_Array(); foreach (var item in this) { num.Add(item.Clone()); } return(num); }
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); }
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); //等待时间 }
//查询所有地址 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); }
/// <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)); } }
//批量转账 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); //等待时间 }
//查询所有地址 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); }