public void Save(MySqlConnection conn, JObject jObject) { Dictionary <string, string> selectWhere = new Dictionary <string, string>(); selectWhere.Add("addr", SpiderHelper.getString(jObject["address"].ToString())); DataTable dt = MysqlConn.ExecuteDataSet(DataTableName, selectWhere).Tables[0]; if (dt.Rows.Count != 0) { Dictionary <string, string> dirs = new Dictionary <string, string>(); dirs.Add("lasttxid", jObject["txid"].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(conn, DataTableName, dirs, where); } else { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jObject["address"].ToString())); slist.Add(jObject["txid"].ToString()); slist.Add(jObject["txid"].ToString()); slist.Add("1"); MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); } }
public void Save(MySqlConnection conn, JObject jObject, uint height) { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jObject["hash"].ToString())); slist.Add(SpiderHelper.getString(jObject["size"].ToString())); slist.Add(SpiderHelper.getString(jObject["version"].ToString())); slist.Add(SpiderHelper.getString(jObject["time"].ToString())); slist.Add(SpiderHelper.getString(jObject["index"].ToString())); slist.Add(SpiderHelper.getString(jObject["script"].ToString())); slist.Add((jObject["tx"] as JArray).Count.ToString()); if (ChainSpider.checkHeight == int.Parse(SpiderHelper.getString(jObject["index"].ToString()))) { Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("indexx", SpiderHelper.getString(jObject["index"].ToString())); MysqlConn.Delete(conn, DataTableName, where); } MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); uint blockTime = uint.Parse(SpiderHelper.getString(jObject["time"].ToString())); int numTx = 0; foreach (var tx in (jObject["tx"] as JArray)) { trans.Save(conn, tx, height, blockTime); numTx++; } LogConfig.Log($"BlockSaved {ChainHash} height:{height} tx:{numTx}", LogConfig.LogLevel.Warning, ChainHash.ToString()); }
public void Save(MySqlConnection conn, JObject jToken) { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jToken["blockindex"].ToString())); slist.Add(SpiderHelper.getString(jToken["txid"].ToString())); slist.Add(SpiderHelper.getString(jToken["n"].ToString())); slist.Add(SpiderHelper.getString(jToken["asset"].ToString())); slist.Add(SpiderHelper.getString(jToken["from"].ToString())); slist.Add(SpiderHelper.getString(jToken["to"].ToString())); slist.Add(SpiderHelper.getString(jToken["value"].ToString())); if (ChainSpider.checkHeight == int.Parse(jToken["blockindex"].ToString())) { Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("txid", SpiderHelper.getString(jToken["txid"].ToString())); where.Add("blockindex", SpiderHelper.getString(jToken["blockindex"].ToString())); MysqlConn.Delete(conn, DataTableName, where); } { MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); } LogConfig.Log($"SaveNEP5Transfer {ChainHash} {jToken["blockindex"]} {jToken["txid"]}", LogConfig.LogLevel.Info, ChainHash.ToString()); }
public void Save(MySqlConnection conn, JObject jObject, uint blockHeight) { if (null == jObject["vout"]) { return; } foreach (JObject vout in jObject["vout"] as JArray) { 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"] = blockHeight; result["used"] = 0; result["useHeight"] = 0; result["claimed"] = ""; List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(result["addr"].ToString())); slist.Add(SpiderHelper.getString(result["txid"].ToString())); slist.Add(SpiderHelper.getString(result["n"].ToString())); slist.Add(SpiderHelper.getString(result["asset"].ToString())); slist.Add(SpiderHelper.getString(result["value"].ToString())); slist.Add(SpiderHelper.getString(result["createHeight"].ToString())); slist.Add(SpiderHelper.getString(result["used"].ToString())); slist.Add(SpiderHelper.getString(result["useHeight"].ToString())); slist.Add(SpiderHelper.getString(result["claimed"].ToString())); //Dictionary<string, string> dictionary = new Dictionary<string, string>(); //dictionary.Add("txid", result["txid"].ToString()); //dictionary.Add("createHeight", blockHeight.ToString()); //bool exist = MysqlConn.CheckExist(DataTableName, dictionary); //if (!exist) if (ChainSpider.checkHeight == int.Parse(SpiderHelper.getString(result["createHeight"].ToString()))) { Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("addr", SpiderHelper.getString(result["addr"].ToString())); where.Add("createHeight", SpiderHelper.getString(result["createHeight"].ToString())); MysqlConn.Delete(conn, DataTableName, where); } { MysqlConn.ExecuteDataInsert(conn, DataTableName, 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"] as JArray) { ChangeUTXO(conn, SpiderHelper.getString(vin["txid"].ToString()), SpiderHelper.getString(vin["vout"].ToString()), blockHeight); } }
public void Save(MySqlConnection conn, JObject jToken) { string contract = SpiderHelper.getString(jToken["assetid"].ToString()); Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("assetid", contract); bool exist = MysqlConn.CheckExist(DataTableName, where); if (!exist) { Start(conn, contract); } }
public void Save(MySqlConnection conn, JObject jObject) { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jObject["address"].ToString())); slist.Add(SpiderHelper.getString(jObject["txid"].ToString())); Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("addr", SpiderHelper.getString(jObject["address"].ToString())); where.Add("txid", SpiderHelper.getString(jObject["txid"].ToString())); MysqlConn.Delete(conn, DataTableName, where); MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); }
public void Save(MySqlConnection conn, JObject jObject) { //JObject hashstateresult = new JObject(); //hashstateresult["result"] = jObject["result"]; List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jObject["version"].ToString())); slist.Add(SpiderHelper.getString(jObject["hash"].ToString())); slist.Add(SpiderHelper.getString(jObject["name"].ToString())); slist.Add(SpiderHelper.getString(jObject["owner"].ToString())); slist.Add(SpiderHelper.getString(jObject["timestamp"].ToString())); slist.Add(SpiderHelper.getString(jObject["seedlist"].ToString())); slist.Add(SpiderHelper.getString(jObject["validators"].ToString())); MysqlConn.SaveAndUpdataAppChainState(conn, DataTableName, slist); LogConfig.Log($"SaveAppChain {jObject["hash"]} {jObject["name"]}", LogConfig.LogLevel.Info); }
public void Save(MySqlConnection conn, JObject jObject, uint blockHeight, uint blockTime) { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jObject["txid"].ToString())); slist.Add(SpiderHelper.getString(jObject["size"].ToString())); slist.Add(SpiderHelper.getString(jObject["type"].ToString())); slist.Add(SpiderHelper.getString(jObject["version"].ToString())); slist.Add(SpiderHelper.getString(jObject["attributes"].ToString())); slist.Add(SpiderHelper.getString(jObject["sys_fee"].ToString())); slist.Add(SpiderHelper.getString(jObject["blockindex"].ToString())); slist.Add(SpiderHelper.getString(jObject["gas_limit"] == null?"": jObject["gas_limit"].ToString())); slist.Add(SpiderHelper.getString(jObject["gas_price"] == null ? "" : jObject["gas_price"].ToString())); slist.Add(UInt160.Parse(StringRemoveZoro(SpiderHelper.getString(jObject["account"].ToString())).HexToBytes().Reverse().ToHexString()).ToAddress()); if (jObject["script"] != null) { txScriptMethod.Save(conn, SpiderHelper.getString(jObject["script"].ToString()), blockHeight, SpiderHelper.getString(jObject["txid"].ToString())); } if (ChainSpider.checkHeight == int.Parse(blockHeight.ToString())) { Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("txid", SpiderHelper.getString(jObject["txid"].ToString())); where.Add("blockindex", blockHeight.ToString()); MysqlConn.Delete(conn, DataTableName, where); } { MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); } LogConfig.Log($"SaveTransaction {ChainHash} {blockHeight}", LogConfig.LogLevel.Info, ChainHash.ToString()); utxo.Save(conn, jObject, blockHeight); //if (SpiderHelper.getString(jObject["type"].ToString()) == "InvocationTransaction") //{ // notify.Save(conn, jObject, blockHeight, blockTime, SpiderHelper.getString(jObject["script"].ToString())); //} }
public void Save(MySqlConnection conn, JObject 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(SpiderHelper.getString(result["version"].ToString())); slist.Add(SpiderHelper.getString(result["id"].ToString())); slist.Add(SpiderHelper.getString(result["type"].ToString())); slist.Add(SpiderHelper.getString(result["name"].ToString())); slist.Add(SpiderHelper.getString(result["amount"].ToString())); slist.Add(SpiderHelper.getString(result["available"].ToString())); slist.Add(SpiderHelper.getString(result["precision"].ToString())); slist.Add(SpiderHelper.getString(result["owner"].ToString())); slist.Add(SpiderHelper.getString(result["admin"].ToString())); slist.Add(SpiderHelper.getString(result["issuer"].ToString())); slist.Add(SpiderHelper.getString(result["expiration"].ToString())); slist.Add(SpiderHelper.getString(result["frozen"].ToString())); { MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); } LogConfig.Log($"SaveAsset {ChainHash} {result["name"]}", LogConfig.LogLevel.Info, ChainHash.ToString()); }
public void Save(MySqlConnection conn, JObject jToken) { JObject executions = null; try { if (jToken != null) { executions = jToken["executions"]; } } catch (Exception e) { } //try //{ // if (!TryGetDB(ChainHash, out DB db)) return; // if (db.IsDisposed) return; // UInt256 hash = UInt256.Parse(SpiderHelper.getString(jToken["txid"].ToString())); // if (!db.TryGet(ReadOptions.Default, hash.ToArray(), out Slice value)) // throw new RpcException(-100, "Unknown transaction"); // result = JObject.Parse(value.ToString()); // if (result != null) // executions = result["executions"]; //} //catch (Exception e) //{ // LogConfig.Log($"error occured when call getapplicationlog, chain:{ChainHash} height:{blockHeight}, reason:{e.Message}", LogConfig.LogLevel.Error); // //throw e; //} if (jToken != null && executions != null) { foreach (var execution in executions as JArray) { List <string> slist = new List <string>(); slist.Add(SpiderHelper.getString(jToken["txid"].ToString())); slist.Add(SpiderHelper.getString(execution["vmstate"].ToString())); slist.Add(SpiderHelper.getString(execution["gas_consumed"].ToString())); slist.Add(SpiderHelper.getString(execution["stack"].ToString())); slist.Add(SpiderHelper.getString(execution["notifications"].ToString().Replace(@"[/n/r]", ""))); Dictionary <string, string> where = new Dictionary <string, string>(); where.Add("txid", SpiderHelper.getString(jToken["txid"].ToString())); MysqlConn.Delete(conn, DataTableName, where); MysqlConn.ExecuteDataInsert(conn, DataTableName, slist); LogConfig.Log($"SaveNotify {ChainHash} {jToken["txid"]}", LogConfig.LogLevel.Info, ChainHash.ToString()); if (execution["vmstate"].ToString().Contains("FAULT")) { return; } JObject notifications = execution["notifications"]; foreach (JObject notify in notifications as JArray) { JArray values = notify["state"]["value"] as JArray; if (values[0]["type"].ToString() == "ByteArray") { string transfer = Encoding.UTF8.GetString(SpiderHelper.HexString2Bytes(SpiderHelper.getString(values[0]["value"].ToString()))); string contract = SpiderHelper.getString(notify["contract"].ToString()); if (transfer == "transfer") { JObject nep5 = new JObject(); nep5["assetid"] = contract; nep5Asset.Save(conn, nep5); //存储Nep5Transfer内容 JObject tx = new JObject(); tx["txid"] = SpiderHelper.getString(jToken["txid"].ToString()); tx["n"] = 0; tx["asset"] = contract; if (SpiderHelper.getString(values[1]["value"].ToString()) == "") { tx["from"] = ""; } else { tx["from"] = UInt160.Parse(SpiderHelper.getString(values[1]["value"].ToString())).ToAddress(); } tx["to"] = UInt160.Parse(SpiderHelper.getString(values[2]["value"].ToString())).ToAddress(); if (SpiderHelper.getString(values[3]["type"].ToString()) == "ByteArray") { tx["value"] = new BigInteger(SpiderHelper.HexString2Bytes(SpiderHelper.getString(values[3]["value"].ToString()))).ToString(); } else { tx["value"] = BigInteger.Parse(SpiderHelper.getString(values[3]["value"].ToString()), NumberStyles.AllowHexSpecifier).ToString(); } JObject j = new JObject(); j["address"] = SpiderHelper.getString(tx["to"].ToString()); j["txid"] = SpiderHelper.getString(tx["txid"].ToString()); address.Save(conn, j); addressAsset.Save(conn, SpiderHelper.getString(tx["to"].ToString()), contract, ""); address_tx.Save(conn, j); nep5Transfer.Save(conn, tx); } } } } } }
public void Save(MySqlConnection conn, JObject jObject) { MysqlConn.SaveAndUpdataHashList(conn, DataTableName, SpiderHelper.getString(jObject["hashlist"].ToString())); }