Exemple #1
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);
        }
Exemple #2
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 #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);
        }
Exemple #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);
        }
Exemple #5
0
    IEnumerator HTTP_nel_post_sgas_gas2(MyJson.IJsonNode json_complete)
    {
        string txid = json_complete.AsDict()["txid"].ToString();

        var    nep55_shash   = new ThinNeo.Hash160(global.id_sgas);
        string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash);

        WWWForm www_getuxo_form_2 = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(nep55_address));
        WWW     www_utxo_2        = new WWW(global.api, www_getuxo_form_2);

        yield return(www_utxo_2);

        Dictionary <string, List <Utxo> > _dir_2 = get_utxo(www_utxo_2.text);

        if (_dir_2.ContainsKey(global.id_GAS) == false)
        {
            Debug.Log("no gas");
        }

        List <Utxo> newlist_2 = new List <Utxo>();

        foreach (var utxo in _dir_2[global.id_GAS])
        {
            if (utxo.n == 0 && utxo.txid.ToString().Equals(txid))
            {
                newlist_2.Add(utxo);
            }
        }
        if (newlist_2.Count == 0)
        {
            Debug.Log("找不到要使用的UTXO");
            yield return(null);
        }

        {//检查utxo
            byte[] script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(hex256)" + newlist_2[0].txid.ToString());
                sb.EmitParamJson(array);                                                   //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入
                var shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                                     //nep5脚本
                script = sb.ToArray();
            }

            WWWForm www_getTarget_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script)));
            WWW     www_form           = new WWW(global.api, www_getTarget_form);
            yield return(www_form);

            var jsonCU = MyJson.Parse(www_form.text);
            var stack  = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict();
            var value  = stack["value"].AsString();
            if (value.Length == 0)//未标记的UTXO,不能使用
            {
                Debug.Log("这个utxo没有标记");
                yield return(null);
            }

            var hash = new ThinNeo.Hash160(ThinNeo.Helper.HexString2Bytes(value));
            if (hash.ToString() != ThinNeo.Helper.GetPublicKeyHashFromAddress(roleInfo.getInstance().address).ToString())
            {
                Debug.Log("这个utxo不是标记给你用的");
                Debug.Log(hash.ToString());
                Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().scripthash));
                yield return(null);
            }
        }


        ThinNeo.Transaction tran_2 = Helper.makeTran(newlist_2, roleInfo.getInstance().address, new ThinNeo.Hash256(global.id_GAS), newlist_2[0].value);
        tran_2.type    = ThinNeo.TransactionType.ContractTransaction;
        tran_2.version = 0;

        //sign and broadcast
        {//做智能合约的签名
            byte[] n55contract = null;
            {
                WWWForm www_getState = Helper.GetWWWFormPost("getcontractstate", new MyJson.JsonNode_ValueString(global.id_sgas));
                WWW     www_state    = new WWW(global.api, www_getState);
                yield return(www_state);

                var _json    = MyJson.Parse(www_state.text).AsDict();
                var _resultv = _json["result"].AsList()[0].AsDict();
                n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString());
            }
            byte[] iscript = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                sb.EmitPushNumber(0);
                sb.EmitPushNumber(0);
                iscript = sb.ToArray();
            }
            tran_2.AddWitnessScript(n55contract, iscript);
        }


        var trandata_2    = tran_2.GetRawData();
        var strtrandata_2 = ThinNeo.Helper.Bytes2HexString(trandata_2);

        ThinNeo.Transaction testde_2 = new ThinNeo.Transaction();
        testde_2.Deserialize(new System.IO.MemoryStream(trandata_2));

        WWWForm www_transaction_2 = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata_2));
        WWW     www_tran_2        = new WWW(global.api, www_transaction_2);

        yield return(www_tran_2);

        Debug.Log(www_tran_2.text);

        var json_2 = MyJson.Parse(www_tran_2.text).AsDict();

        if (json_2.ContainsKey("result"))
        {
            var resultv = json_2["result"].AsList()[0].AsDict();
            var ext     = resultv["txid"].AsString();
            if (txid.Length > 0)
            {
                Debug.Log("txid=" + ext);
                testtool.panel_main.do_plat_notify(json_complete, ext);
                api_tool._instance.walletNotifyExt(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid, ext, global.netType, null);
            }
            else
            {
                Debug.Log("交易失败");
            }
        }
        else
        {
            Debug.Log("交易失败");
        }
    }