Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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());
        }
Esempio n. 3
0
        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());
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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()));
            //}
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 11
0
 public void Save(MySqlConnection conn, JObject jObject)
 {
     MysqlConn.SaveAndUpdataHashList(conn, DataTableName, SpiderHelper.getString(jObject["hashlist"].ToString()));
 }