public override void Save(JToken jObject, string path) { foreach (JObject j in jObject) { Dictionary <string, string> selectWhere = new Dictionary <string, string>(); selectWhere.Add("addr", j["address"].ToString()); DataTable dt = MysqlConn.ExecuteDataSet("address", selectWhere).Tables[0]; if (dt.Rows.Count != 0) { Dictionary <string, string> dirs = new Dictionary <string, string>(); dirs.Add("lastuse", Helper.blockTime.ToString()); dirs.Add("txcount", (int.Parse(dt.Rows[0]["txcount"].ToString()) + 1) + ""); Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("addr", dt.Rows[0]["addr"].ToString()); MysqlConn.Update("address", dirs, where); } else { JObject result = new JObject(); result["addr"] = j["address"]; result["firstuse"] = Helper.blockTime; result["lastuse"] = Helper.blockTime; result["txcount"] = 1; List <string> slist = new List <string>(); slist.Add(j["address"].ToString()); slist.Add(Helper.blockTime.ToString()); slist.Add(Helper.blockTime.ToString()); slist.Add("1"); MysqlConn.ExecuteDataInsert("address", slist); } } }
public override void Save(JToken jObject, string path) { JObject result = new JObject(); result["txid"] = jObject["txid"]; result["size"] = jObject["size"]; result["type"] = jObject["type"]; result["version"] = jObject["version"]; result["attributes"] = jObject["attributes"]; result["vin"] = jObject["vin"]; result["vout"] = jObject["vout"]; result["sys_fee"] = jObject["sys_fee"]; result["net_fee"] = jObject["net_fee"]; result["scripts"] = jObject["scripts"]; result["nonce"] = jObject["nonce"]; result["blockindex"] = Helper.blockHeight; List <string> slist = new List <string>(); slist.Add(result["txid"].ToString()); slist.Add(result["size"].ToString()); slist.Add(result["type"].ToString()); slist.Add(result["version"].ToString()); slist.Add(result["attributes"].ToString()); slist.Add(result["vin"].ToString()); slist.Add(result["vout"].ToString()); slist.Add(result["sys_fee"].ToString()); slist.Add(result["net_fee"].ToString()); slist.Add(result["scripts"].ToString()); slist.Add(result["nonce"].ToString()); slist.Add(Helper.blockHeight.ToString()); MysqlConn.ExecuteDataInsert("tx", slist); //File.Delete(path); //File.WriteAllText(path, result.ToString(), Encoding.UTF8); SaveAddress.getInstance().Save(result["vout"], null); SaveUTXO.getInstance().Save(result, null); var addressTransactionPath = "addressTransaction" + Path.DirectorySeparatorChar + result["txid"] + ".txt"; SaveAddressTransaction.getInstance().Save(result, addressTransactionPath); if (result["type"].ToString() == "RegisterTransaction") { var assetPath = "asset" + Path.DirectorySeparatorChar + result["txid"] + ".txt"; saveAsset(jObject, assetPath); } else if (result["type"].ToString() == "InvocationTransaction") { SaveNotify.getInstance().Save(result, null); } }
public override void Save(JToken jToken, string path) { List <string> slist = new List <string>(); slist.Add(jToken["blockindex"].ToString()); slist.Add(jToken["txid"].ToString()); slist.Add(jToken["n"].ToString()); slist.Add(jToken["asset"].ToString()); slist.Add(jToken["from"].ToString()); slist.Add(jToken["to"].ToString()); slist.Add(jToken["value"].ToString()); MysqlConn.ExecuteDataInsert("nep5transfer", slist); }
public async Task getNEP5Asset(Hash160 Contract) { ScriptBuilder sb = new ScriptBuilder(); MyJson.JsonNode_Array array = new MyJson.JsonNode_Array(); sb.EmitParamJson(array); sb.EmitPushString("totalSupply"); sb.EmitAppCall(Contract); sb.EmitParamJson(array); sb.EmitPushString("name"); sb.EmitAppCall(Contract); sb.EmitParamJson(array); sb.EmitPushString("symbol"); sb.EmitAppCall(Contract); sb.EmitParamJson(array); sb.EmitPushString("decimals"); sb.EmitAppCall(Contract); string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray()); byte[] postdata; var url = Helper.MakeRpcUrlPost(Helper.url, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish)); var result = await Helper.HttpPost(url, postdata); JObject jObject = JObject.Parse(result); JArray results = jObject["result"]["stack"] as JArray; string totalSupply = Encoding.UTF8.GetString(ThinNeo.Helper.HexString2Bytes(results[0]["value"].ToString())); string name = Encoding.UTF8.GetString(ThinNeo.Helper.HexString2Bytes(results[1]["value"].ToString())); string symbol = Encoding.UTF8.GetString(ThinNeo.Helper.HexString2Bytes(results[2]["value"].ToString())); string decimals = Encoding.UTF8.GetString(ThinNeo.Helper.HexString2Bytes(results[3]["value"].ToString())); List <string> slist = new List <string>(); slist.Add(Contract.ToString()); slist.Add(totalSupply); slist.Add(name); slist.Add(symbol); slist.Add(decimals); MysqlConn.ExecuteDataInsert("nep5asset", slist); }
public override void Save(JToken jObject, string path) { //JObject result = new JObject(); //result["txid"] = jObject["txid"]; //result["blockindex"] = Helper.blockHeight; //result["blocktime"] = Helper.blockTime; foreach (JObject vout in jObject["vout"]) { List <string> slist = new List <string>(); slist.Add(vout["address"].ToString()); slist.Add(jObject["txid"].ToString()); slist.Add(Helper.blockHeight.ToString()); slist.Add(Helper.blockTime.ToString()); MysqlConn.ExecuteDataInsert("address_tx", slist); } //File.Delete(path); //File.WriteAllText(path, result.ToString(), Encoding.UTF8); }
public override void Save(JToken jObject, string path) { JObject result = new JObject(); result["hash"] = jObject["hash"]; result["size"] = jObject["size"]; result["version"] = jObject["version"]; result["previousblockhash"] = jObject["previousblockhash"]; result["merkleroot"] = jObject["merkleroot"]; result["time"] = jObject["time"]; result["index"] = jObject["index"]; result["nonce"] = jObject["nonce"]; result["nextconsensus"] = jObject["nextconsensus"]; result["script"] = jObject["script"]; List <string> slist = new List <string>(); slist.Add(jObject["hash"].ToString()); slist.Add(jObject["size"].ToString()); slist.Add(jObject["version"].ToString()); slist.Add(jObject["previousblockhash"].ToString()); slist.Add(jObject["merkleroot"].ToString()); slist.Add(jObject["time"].ToString()); slist.Add(jObject["index"].ToString()); slist.Add(jObject["nonce"].ToString()); slist.Add(jObject["nextconsensus"].ToString()); slist.Add(jObject["script"].ToString()); slist.Add(jObject["tx"].ToString()); MysqlConn.ExecuteDataInsert("block", slist); Helper.blockTime = int.Parse(result["time"].ToString()); foreach (var tx in jObject["tx"]) { SaveTransaction.getInstance().Save(tx as JObject, null); } }
public override void Save(JToken jObject, string path) { foreach (JObject vout in jObject["vout"]) { JObject result = new JObject(); result["addr"] = vout["address"]; result["txid"] = jObject["txid"]; result["n"] = vout["n"]; result["asset"] = vout["asset"]; result["value"] = vout["value"]; result["createHeight"] = Helper.blockHeight; result["used"] = 0; result["useHeight"] = 0; result["claimed"] = ""; List <string> slist = new List <string>(); slist.Add(result["addr"].ToString()); slist.Add(result["txid"].ToString()); slist.Add(result["n"].ToString()); slist.Add(result["asset"].ToString()); slist.Add(result["value"].ToString()); slist.Add(result["createHeight"].ToString()); slist.Add(result["used"].ToString()); slist.Add(result["useHeight"].ToString()); slist.Add(result["claimed"].ToString()); MysqlConn.ExecuteDataInsert("utxo", slist); //var utxoPath = "utxo" + Path.DirectorySeparatorChar + result["txid"] + "_" + result["n"] + "_" + result["addr"] + ".txt"; //File.Delete(utxoPath); //File.WriteAllText(utxoPath, result.ToString(), Encoding.UTF8); } foreach (JObject vin in jObject["vin"]) { ChangeUTXO(vin["txid"].ToString(), vin["vout"].ToString()); } }
private void saveAsset(JToken jObject, string path) { JObject result = new JObject(); result["version"] = jObject["version"]; result["id"] = jObject["txid"]; result["type"] = jObject["asset"]["type"]; result["name"] = jObject["asset"]["name"]; result["amount"] = jObject["asset"]["amount"]; result["available"] = 1; result["precision"] = jObject["asset"]["precision"]; result["owner"] = jObject["asset"]["owner"]; result["admin"] = jObject["asset"]["admin"]; result["issuer"] = 1; result["expiration"] = 0; result["frozen"] = 0; List <string> slist = new List <string>(); slist.Add(result["version"].ToString()); slist.Add(result["id"].ToString()); slist.Add(result["type"].ToString()); slist.Add(result["name"].ToString()); slist.Add(result["amount"].ToString()); slist.Add(result["available"].ToString()); slist.Add(result["precision"].ToString()); slist.Add(result["owner"].ToString()); slist.Add(result["admin"].ToString()); slist.Add(result["issuer"].ToString()); slist.Add(result["expiration"].ToString()); slist.Add(result["frozen"].ToString()); MysqlConn.ExecuteDataInsert("asset", slist); //File.Delete(path); //File.WriteAllText(path, result.ToString(), Encoding.UTF8); }
public override void Save(JToken jToken, string path) { JToken result = null; try { var getUrl = Helper.url + "?jsonrpc=2.0&id=1&method=getapplicationlog¶ms=[" + jToken["txid"] + "]"; var info = wc.DownloadString(getUrl); var json = JObject.Parse(info); result = json["result"]; } catch (Exception e) { LogHelper.printLog("txid " + jToken["txid"] + " has 500"); } if (result != null) { JObject jObject = new JObject(); jObject["txid"] = jToken["txid"]; jObject["vmstate"] = result["vmstate"]; jObject["gas_consumed"] = result["gas_consumed"]; jObject["stack"] = result["stack"]; jObject["notifications"] = result["notifications"]; jObject["blockindex"] = Helper.blockHeight; List <string> slist = new List <string>(); slist.Add(jToken["txid"].ToString()); slist.Add(result["vmstate"].ToString()); slist.Add(result["gas_consumed"].ToString()); slist.Add(result["stack"].ToString()); slist.Add(result["notifications"].ToString()); slist.Add(Helper.blockHeight.ToString()); MysqlConn.ExecuteDataInsert("notify", slist); var notifyPath = "notify" + Path.DirectorySeparatorChar + result["txid"] + "_" + result["n"] + ".txt"; File.Delete(notifyPath); File.WriteAllText(notifyPath, jObject.ToString(), Encoding.UTF8); foreach (JObject notify in jObject["notifications"]) { if (notify["state"]["value"][0]["type"].ToString() == "ByteArray") { string transfer = Encoding.UTF8.GetString(Helper.HexString2Bytes(notify["state"]["value"][0]["value"].ToString())); string contract = notify["contract"].ToString(); if (transfer == "transfer") { JObject nep5 = new JObject(); nep5["assetid"] = contract; SaveNEP5Asset.getInstance().Save(nep5, null); //存储Nep5Transfer内容 JObject tx = new JObject(); tx["blockindex"] = Helper.blockHeight; tx["txid"] = jToken["txid"].ToString(); tx["n"] = 0; tx["asset"] = contract; tx["from"] = Encoding.UTF8.GetString(Helper.HexString2Bytes(notify["state"]["value"][1]["value"].ToString())); tx["to"] = Encoding.UTF8.GetString(Helper.HexString2Bytes(notify["state"]["value"][2]["value"].ToString())); tx["value"] = Encoding.UTF8.GetString(Helper.HexString2Bytes(notify["state"]["value"][3]["value"].ToString())); SaveNEP5Transfer.getInstance().Save(tx, null); } } } } }