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); }
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); }
//设置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); }
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); }
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("交易失败"); } }