Beispiel #1
0
        //增加智能合约见证人
        public void AddWitnessScript(byte[] vscript, byte[] iscript, Hash160 scriptHash = null)
        {
            var            scripthash = ThinNeo.Helper_NEO.CalcHash160(vscript);
            List <Witness> wit        = null;

            if (witnesses == null)
            {
                wit = new List <Witness>();
            }
            else
            {
                wit = new List <Witness>(witnesses);
            }
            Witness newwit = new Witness(iscript, vscript, scriptHash);

            foreach (var w in wit)
            {
                if (w.Address == newwit.Address)
                {
                    throw new Exception("alread have this witness");
                }
            }

            wit.Add(newwit);
            wit.Sort((a, b) =>
            {
                return(a.Hash.CompareTo(b.Hash));
            });
            witnesses = wit.ToArray();
        }
Beispiel #2
0
        async Task test_gettargetname()
        {
            var target = new ThinNeo.Hash160(Config.domaincenterhash);
            var result = await nns_common.api_InvokeScript(target, "name");

            subPrintLine("result=" + System.Text.Encoding.UTF8.GetString(result.value.subItem[0].data));
        }
Beispiel #3
0
        //设置SD合约参数
        async Task test_settargetSDT()
        {
            var target = new ThinNeo.Hash160(sds_common.sc);
            var result = await call_common.api_SendTransaction(this.prikey, call_common.main, "setTargetSDT", "(hex160)" + target.ToString());

            subPrintLine("result=" + result);
        }
Beispiel #4
0
        async Task test_setjumptarget()
        {
            var target = new ThinNeo.Hash160(Config.domaincenterhash);
            var result = await nns_common.api_SendTransaction(this.superadminprikey, Config.sc_nns, "_setTarget", "(hex160)" + target.ToString());

            subPrintLine("result=" + result);
        }
Beispiel #5
0
        private static async void TransGasForNep5(string address, byte[] prikey, byte[] pubkey, string targetAddr,
                                                  decimal sendCount)
        {
            var    assetnep5 = "0xa0b53d2efa8b1c4a62fcc1fcb54b7641510810c7";
            var    assetgas  = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7";
            string api       = "https://api.nel.group/api/testnet";

            Dictionary <string, List <Utxo> > dir = await GetBalanceByAddress(api, address);

            ThinNeo.Transaction tran = null;
            {
                byte[] script = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    var array = new MyJson.JsonNode_Array();
                    sb.EmitParamJson(array);                                              //参数倒序入
                    sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)mintTokens")); //参数倒序入
                    ThinNeo.Hash160 shash = new ThinNeo.Hash160(assetnep5);
                    sb.EmitAppCall(shash);                                                //nep5脚本
                    script = sb.ToArray();
                }

                var nep5scripthash = new ThinNeo.Hash160(assetnep5);
                var targetaddr     = ThinNeo.Helper.GetAddressFromScriptHash(nep5scripthash);
                Console.WriteLine("contract address=" + targetaddr); //往合约地址转账

                //生成交易
                tran      = makeTran(dir[assetgas], targetaddr, new ThinNeo.Hash256(assetgas), 5);
                tran.type = ThinNeo.TransactionType.InvocationTransaction;
                var idata = new ThinNeo.InvokeTransData();
                tran.extdata = idata;
                idata.script = script;
            }

            //sign and broadcast
            var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), prikey);

            tran.AddWitness(signdata, pubkey, address);
            var trandata    = tran.GetRawData();
            var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

            byte[] postdata;
            var    url    = HttpHelper.MakeRpcUrlPost("http://127.0.0.1:20332", "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));
            var    result = await HttpHelper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result);
            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                var resultv = json["result"].AsList()[0].AsDict();
                var txid    = resultv["txid"].AsString();
                if (txid.Length > 0)
                {
                    Hash256 test = tran.GetHash();
                }

                Console.WriteLine("txid=" + txid);
            }
        }
Beispiel #6
0
        //获取配置
        async Task test_getTestData()
        {
            Console.WriteLine("Input index:");
            string index = Console.ReadLine();

            Console.WriteLine("Input key:");
            string key = Console.ReadLine();

            //Console.WriteLine("Input keyIndex:");
            //string keyIndex = Console.ReadLine();

            Console.WriteLine("Input addr:");
            string addr = Console.ReadLine();

            //Console.WriteLine("Input value:");
            //string price = Console.ReadLine();
            ThinNeo.Hash160 shash = new ThinNeo.Hash160(Config.sc_oracle);

            var result = await oracleSw_Com.api_InvokeScript(shash, "test", "(int)" + index, "(str)" + key, "(addr)" + addr);

            oracleSw_Com.ResultItem item = result.value;

            if (item != null)
            {
                byte[] data = item.data;

                BigInteger value = new BigInteger(data);

                Console.WriteLine(key + ":" + value);
            }
            else
            {
                Console.WriteLine("item is null");
            }
        }
Beispiel #7
0
        async Task test_getTypeB()
        {
            Console.WriteLine("Input key:");
            string key = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_InvokeScript(shash, "getTypeB", "(str)" + key);

            Console.WriteLine("result = " + result);

            oracleSw_Com.ResultItem item = result.value;

            if (item != null)
            {
                byte[] data = item.data;

                BigInteger value = new BigInteger(data);

                Console.WriteLine(key + ":" + value);
            }
            else
            {
                Console.WriteLine("item is null");
            }
        }
Beispiel #8
0
        public async Task Demo()
        {
            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(Config.test_wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

            byte[] scripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);

            subPrintLine("Get Total Supply for " + this.ID + ":");

            var result = await nns_tools.api_InvokeScript(sc, "totalSupply");

            subPrintLine("Total Supply : " + result.value.subItem[0].AsInteger());

            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Nep55_1.api, address);

            if (dir.ContainsKey(Nep55_1.id_GAS) == false)
            {
                Console.WriteLine("no gas");
                return;
            }
            //MakeTran
            ThinNeo.Transaction tran = null;
            {
                byte[] script = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    var array = new MyJson.JsonNode_Array();
                    array.AddArrayValue("(addr)" + address);                            //from
                    array.AddArrayValue("(str)" + "totalSupply");                       //to
                    array.AddArrayValue("(int)22");                                     //value
                    sb.EmitParamJson(array);                                            //参数倒序入
                    sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)transfer")); //参数倒序入
                    ThinNeo.Hash160 shash = new ThinNeo.Hash160(sc);
                    sb.EmitAppCall(shash);                                              //nep5脚本
                    script = sb.ToArray();
                }

                tran      = Helper.makeTran(dir[Nep55_1.id_GAS], address, new ThinNeo.Hash256(Nep55_1.id_GAS), 0);
                tran.type = ThinNeo.TransactionType.InvocationTransaction;
                var idata = new ThinNeo.InvokeTransData();
                tran.extdata = idata;
                idata.script = script;
            }

            //sign and broadcast
            var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), prikey);

            tran.AddWitness(signdata, pubkey, address);
            var trandata    = tran.GetRawData();
            var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

            byte[] postdata;//Nep55_1.api
            var    url     = Helper.MakeRpcUrlPost(nnc_1.api_local, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));
            var    result2 = await Helper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result2);
        }
Beispiel #9
0
        async Task test_getdomain()
        {
            var target = new ThinNeo.Hash160(Config.domaincenterhash);
            var result = await nns_common.api_SendTransaction(this.superadminprikey, target, "getDomain", "(hex256)0x011d21139589a79a4f20aa72fe91d2399e963e08f638956bc066b0486b89cc75");

            //subPrintLine("result=" + System.Text.Encoding.UTF8.GetString(result.value.subItem[8].data));
            //subPrintLine("result=" + System.Text.Encoding.UTF8.GetString(result.value.subItem[9].data));
        }
Beispiel #10
0
        async Task test_recharge()
        {
            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(newsar_common.sc_sar);
            var             result = await newsar_common.api_SendbatchTransaction(prikey, newsar_common.sc_sar, "recharge",
                                                                                  "(addr)" + this.address,
                                                                                  "(int)" + double.Parse(amount) *ten_pow);

            subPrintLine(result);
        }
Beispiel #11
0
        //释放
        async Task test_free()
        {
            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(sdusd_common2.sc_sdusd);
            var             result = await sdusd_common2.api_SendTransaction(prikey, shash, "free",
                                                                             "(addr)" + this.address,
                                                                             "(int)" + amount);

            subPrintLine(result);
        }
Beispiel #12
0
        async Task test_withdrawT()
        {
            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sar4c);
            var             result = await sar_common.api_SendbatchTransaction(prikey, shash, "withdrawT",
                                                                               "(addr)" + this.address,
                                                                               "(int)" + double.Parse(amount) *ten_pow);

            subPrintLine(result);
        }
Beispiel #13
0
        //锁仓
        async Task test_lock()
        {
            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sdusd);
            var             result = await sdusd_common.api_SendTransaction(prikey, Config.sdusd, "lock",
                                                                            "(addr)" + this.address,
                                                                            "(int)" + amount);

            subPrintLine(result);
        }
Beispiel #14
0
        //释放
        async Task test_free()
        {
            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(sar_common.sc_sar);
            var             result = await sar_common.api_SendbatchTransaction(prikey, shash, "withdraw",
                                                                               "(addr)" + this.address,
                                                                               "(int)" + amount);

            subPrintLine(result);
        }
Beispiel #15
0
        public static string GetAddressFromScriptHash(Hash160 scripthash)
        {
            byte[] data = new byte[20 + 1];
            data[0] = 0x17;
            Array.Copy(scripthash, 0, data, 1, 20);
            var hash = sha256.ComputeHash(data);

            hash = sha256.ComputeHash(hash);

            var alldata = data.Concat(hash.Take(4)).ToArray();

            return(Base58.Encode(alldata));
        }
Beispiel #16
0
 public Witness(byte[] _invocationScript, byte[] _verificationScript, Hash160 _hash = null)
 {
     InvocationScript   = _invocationScript;
     VerificationScript = _verificationScript;
     if (_hash == null)
     {
         Hash = Helper_NEO.CalcHash160(VerificationScript);
     }
     else
     {
         Hash = _hash;
     }
 }
Beispiel #17
0
        public delegate void Method(ThinNeo.ScriptBuilder sb);//第一步:定义委托类型

        public async Task Demo()
        {
            //得到合约代码
            //var urlgetscript = Helper.MakeRpcUrl(oracleSw_Com.api, "getcontractstate", new MyJson.JsonNode_ValueString(oracleSw_Com.sc));
            //var resultgetscript = await Helper.HttpGet(urlgetscript);
            //var _json = MyJson.Parse(resultgetscript).AsDict();
            //var _resultv = _json["result"].AsList()[0].AsDict();

            //Console.WriteLine("reg=" + _resultv["script"].AsString());

            showMenu();

            prikey     = ThinNeo.Helper.GetPrivateKeyFromWIF(Config.testwif);
            pubkey     = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            address    = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);
            scripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);
            shash      = new ThinNeo.Hash160(Config.sc_oracle);

            while (true)
            {
                var line = Console.ReadLine().Replace(" ", "").ToLower();
                if (line == "?" || line == "?")
                {
                    showMenu();
                }
                else if (line == "")
                {
                    continue;
                }
                else if (line == "0")
                {
                    return;
                }
                else//get .test's info
                {
                    var id  = int.Parse(line) - 1;
                    var key = submenu[id];
                    subPrintLine("[begin]" + key);
                    try
                    {
                        await infos[key]();
                    }
                    catch (Exception err)
                    {
                        subPrintLine(err.Message);
                    }
                    subPrintLine("[end]" + key);
                }
            }
        }
Beispiel #18
0
        async Task test_setAccount()
        {
            Console.WriteLine("Input Para:");
            string para = Console.ReadLine();

            Console.WriteLine("Input address:");
            string address = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_SendTransaction(adminPrikey, shash, "setAccount",
                                                                            "(str)" + para,
                                                                            "(addr)" + address);

            subPrintLine(result);
        }
Beispiel #19
0
        //设置配置
        async Task test_setTypeA()
        {
            Console.WriteLine("Input key:");
            string key = Console.ReadLine();

            Console.WriteLine("Input value:");
            string value = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_SendTransaction(adminPrikey, shash, "setTypeA",
                                                                            "(str)" + key,
                                                                            "(int)" + value);

            subPrintLine(result);
        }
Beispiel #20
0
    public void invokescrept(Action <bool, WWW> api_cb_cmd, MyJson.JsonNode_Object paparms)
    {
        byte[] script = null;
        using (var sb = new ThinNeo.ScriptBuilder())
        {
            sb.EmitParamJson(paparms["sbParamJson"]);              //参数倒序入
            sb.EmitPushString(paparms["sbPushString"].ToString()); //参数倒序入
            ThinNeo.Hash160 shash = new ThinNeo.Hash160(paparms["nnc"].ToString());
            sb.EmitAppCall(shash);                                 //nep5脚本
            script = sb.ToArray();
        }

        WWWForm www_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script)));

        StartCoroutine(HTTP_nel_post(www_form, api_cb_cmd));
    }
Beispiel #21
0
        async Task test_initroot_xxx()
        {
            subPrintLine("input root domain:");
            var root = Console.ReadLine();

            subPrintLine("input register hash:");
            var reg = Console.ReadLine();

            reg = reg.Replace(" ", "");
            var sellregistor = new ThinNeo.Hash160(reg);
            var result       = await nns_common.api_SendTransaction(this.superadminprikey, Config.sc_nns,
                                                                    "initRoot",
                                                                    "(str)" + root,//根域名的名字
                                                                    "(hex160)" + sellregistor.ToString());

            subPrintLine("result=" + result);
        }
Beispiel #22
0
        async Task test_transferSDT()
        {
            Console.WriteLine("Input target:");
            string to = Console.ReadLine();

            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash = new ThinNeo.Hash160(sdusd_common2.sc_sdusd);

            var result = await sdusd_common2.api_SendTransaction(prikey, shash, "transfer_sdt",
                                                                 "(addr)" + to,
                                                                 "(int)" + amount
                                                                 );

            subPrintLine(result);
        }
Beispiel #23
0
        //转账
        async Task test_Transfer()
        {
            Console.WriteLine("Input target address:");
            string addressto = Console.ReadLine();

            Console.WriteLine("Input amount:");
            string amount = Console.ReadLine();

            ThinNeo.Hash160 shash = new ThinNeo.Hash160(Config.sdusd);

            var result = await sdusd_common.api_SendTransaction(prikey, shash, "transfer",
                                                                "(addr)" + address,
                                                                "(addr)" + addressto,
                                                                "(int)" + amount
                                                                );

            subPrintLine(result);
        }
Beispiel #24
0
        async Task test_getApprovedAddr()
        {
            Console.WriteLine("Input key:");
            string key = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_InvokeScript(shash, "getApprovedAddrs", "(str)" + key);

            oracleSw_Com.ResultItem item = result.value;

            if (item != null)
            {
                byte[] data = item.data;
            }
            else
            {
                Console.WriteLine("item is null");
            }
        }
Beispiel #25
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);
        }
Beispiel #26
0
        async Task test_addParaAddrWhit()
        {
            Console.WriteLine("Input Para:");
            string para = Console.ReadLine();

            Console.WriteLine("Input address:");
            string address = Console.ReadLine();

            Console.WriteLine("Input state(1:授权,0:取消授权):");
            string state = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_SendTransaction(adminPrikey, shash, "addParaAddrWhit",
                                                                            "(str)" + para,
                                                                            "(addr)" + address,
                                                                            "(int)" + state);

            subPrintLine(result);
        }
Beispiel #27
0
        protected byte[] GetScript(ThinNeo.Hash160 contractHash, JArray JA)
        {
            ThinNeo.ScriptBuilder tmpSb = new ThinNeo.ScriptBuilder();
            byte[] randombytes          = new byte[32];
            using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
            {
                rng.GetBytes(randombytes);
            }
            BigInteger randomNum = new BigInteger(randombytes);

            tmpSb.EmitPushNumber(randomNum);
            tmpSb.Emit(ThinNeo.VM.OpCode.DROP);
            for (int i = JA.Count - 1; i >= 0; i--)
            {
                tmpSb.EmitParamJson(JA[i]);
            }
            tmpSb.EmitAppCall(contractHash);
            return(tmpSb.ToArray());
        }
    public void get_sgas_balance()
    {
        {//查sgas balance
            string script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(bytes)" + ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().scripthash));
                sb.EmitParamJson(array);                                             //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)balanceOf")); //参数倒序入
                ThinNeo.Hash160 shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                               //nep5脚本
                var data = sb.ToArray();
                script = ThinNeo.Helper.Bytes2HexString(data);
            }

            WWWForm www_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(script));
            StartCoroutine(HTTP_nel_post(www_form, on_get_sgas_balance));
        }
    }
Beispiel #29
0
    public void makeRawTransaction(Action <bool, WWW> api_cb_cmd, MyJson.JsonNode_Array pararms)
    {
        if (pararms.Count > 2)
        {
            Debug.Log("不支持大于两部的操作");
            return;
        }

        byte[] script = null;
        using (var sb = new ThinNeo.ScriptBuilder())
        {
            Debug.Log(pararms.AsList()[0].ToString());
            sb.EmitParamJson(pararms.AsList()[0].AsDict()["sbParamJson"]);              //参数倒序入
            sb.EmitPushString(pararms.AsList()[0].AsDict()["sbPushString"].ToString()); //参数倒序入
            ThinNeo.Hash160 shash = new ThinNeo.Hash160(pararms.AsList()[0].AsDict()["nnc"].ToString());
            sb.EmitAppCall(shash);                                                      //nep5脚本

            if (pararms.Count > 1)
            {
                //这个方法是为了在同一笔交易中转账并充值
                //当然你也可以分为两笔交易
                //插入下述两条语句,能得到txid
                sb.EmitSysCall("System.ExecutionEngine.GetScriptContainer");
                sb.EmitSysCall("Neo.Transaction.GetHash");

                sb.EmitPushBytes(roleInfo.getInstance().scripthash);
                sb.EmitPushNumber(2);
                sb.Emit(ThinNeo.VM.OpCode.PACK);

                sb.EmitPushString(pararms.AsList()[1].AsDict()["sbPushString"].ToString()); //参数倒序入
                ThinNeo.Hash160 shash_2 = new ThinNeo.Hash160(pararms.AsList()[1].AsDict()["nnc"].ToString());
                sb.EmitAppCall(shash_2);                                                    //nep5脚本
            }

            script = sb.ToArray();
        }

        StartCoroutine(HTTP_nel_post_tan(script, pararms, api_cb_cmd));
    }
Beispiel #30
0
        async Task test_getAccount()
        {
            Console.WriteLine("Input key:");
            string key = Console.ReadLine();

            ThinNeo.Hash160 shash  = new ThinNeo.Hash160(Config.sc_oracle);
            var             result = await oracleSw_Com.api_InvokeScript(shash, "getAccount", "(str)" + key);

            oracleSw_Com.ResultItem item = result.value;

            if (item != null)
            {
                byte[] data = item.data;

                string value = ThinNeo.Helper.Bytes2HexString(data);

                Console.WriteLine(key + ":" + value);
            }
            else
            {
                Console.WriteLine("item is null");
            }
        }