Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
        }
Exemple #9
0
        public override void Save(JToken jToken, string path)
        {
            JToken result = null;

            try
            {
                var getUrl = Helper.url + "?jsonrpc=2.0&id=1&method=getapplicationlog&params=[" + 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);
                        }
                    }
                }
            }
        }