Example #1
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {

        UITexture t = com as UITexture;
        var json = new MyJson.JsonNode_Object();


        if(t.mainTexture!=null)
        {
            string needtex = AtlasMgr.SaveTexture(t.mainTexture, System.IO.Path.Combine(Application.streamingAssetsPath, "nguitex"));
            json["mainTexture"] = new MyJson.JsonNode_ValueString(needtex);
            list.AddDependTexture(needtex);
            if(t.shader!=null)
            {
                string shader = t.shader.name;
                json["shader"] = new MyJson.JsonNode_ValueString(shader);
            }
        }
        else
        {
            Debug.LogWarning("不支持 导出使用材质的UITexture");
        }

        json["uvRect"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.RectToString(t.uvRect));
        ComponentParser.ParserWidget(json, t);

        return json;

    }
Example #2
0
    public MyJson.IJsonNode Parser(Component com, NeedList list)
    {
        MeshRenderer t = com as MeshRenderer;
        var json = new MyJson.JsonNode_Object();
        json["castShadows"] = new MyJson.JsonNode_ValueNumber(t.castShadows);
        json["receiveShadows"] = new MyJson.JsonNode_ValueNumber(t.receiveShadows);
        json["useLightProbes"] = new MyJson.JsonNode_ValueNumber(t.useLightProbes);
        int meshcount = t.sharedMaterials.Length;

        json["materials"] = new MyJson.JsonNode_Array();
        foreach (var m in t.sharedMaterials)
        {
            MyJson.JsonNode_Object matobj = new MyJson.JsonNode_Object();
            json["materials"].AddArrayValue(matobj);

            matobj.SetDictValue("name", m.name);
            matobj.SetDictValue("shader", m.shader.name);
            matobj.SetDictValue("shaderkeyword", new MyJson.JsonNode_Array());
            foreach (var shaderkey in m.shaderKeywords)
            {
                matobj["shaderkeyword"].AddArrayValue(shaderkey);
            }
            if (m.mainTexture != null)
            {
                string name = AssetMgr.SaveTexture(m.mainTexture, System.IO.Path.Combine(Application.streamingAssetsPath, "texture"));
                matobj.SetDictValue("maintex", name);
                list.AddDependTexture(name);
            }
        }
        return json;
    }
Example #3
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UISlider t = com as UISlider;
        var json = new MyJson.JsonNode_Object();

        json["value"] = new MyJson.JsonNode_ValueNumber(t.value);
        json["alpha"] = new MyJson.JsonNode_ValueNumber(t.alpha);
        json["numberOfSteps"] = new MyJson.JsonNode_ValueNumber(t.numberOfSteps);
        if (t.foregroundWidget != null)
        {
            json["foregroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.foregroundWidget.gameObject));
        }
        if (t.backgroundWidget != null)
        {
            json["backgroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.backgroundWidget.gameObject));
        }
        if (t.thumb != null)
        {
            json["thumb"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.thumb.gameObject));
        }
        json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString());

        return json;

    }
Example #4
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        var json = new MyJson.JsonNode_Object();

        return json;

    }
Example #5
0
 public MyJson.IJsonNode Parser(Component com, NeedList list)
 {
     MeshFilter t = com as MeshFilter;
     var json = new MyJson.JsonNode_Object();
     var name = AssetMgr.SaveMesh(t.sharedMesh, System.IO.Path.Combine(Application.streamingAssetsPath, "mesh"));
     list.AddDependMesh(name);
     json["mesh"] = new MyJson.JsonNode_ValueString(name);
     return json;
 }
Example #6
0
 public MyJson.IJsonNode Parser(Component com,NeedList list)
 {
     Transform t = com as Transform;
     var json = new MyJson.JsonNode_Object();
     json["P"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localPosition));
     json["R"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localEulerAngles));
     json["S"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.localScale));
     return json;
 }
Example #7
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        LGButton btn = com as LGButton;
        var json = new MyJson.JsonNode_Object();

        json["Tag"] = new MyJson.JsonNode_ValueString(btn.Tag.ToString());
        json["Team"] = new MyJson.JsonNode_ValueString(btn.Team.ToString());
        return json;
    }
Example #8
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        BoxCollider t = com as BoxCollider;
        var json = new MyJson.JsonNode_Object();

        json["isTrigger"] = new MyJson.JsonNode_ValueNumber(t.isTrigger);
        json["center"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.center));
        json["size"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector3ToString(t.size));
        return json;
    }
Example #9
0
    public MyJson.IJsonNode Parser(Component com,NeedList needlist)
    {

        UISprite t = com as UISprite;
        var json = new MyJson.JsonNode_Object();

        //t.atlas atlas 有特殊的打包逻辑
        string atlas = AtlasMgr.SaveAtlas(t.atlas, System.IO.Path.Combine(Application.streamingAssetsPath, "nguiatlas"), System.IO.Path.Combine(Application.streamingAssetsPath, "nguitex"));
        json["atlas"] =new MyJson.JsonNode_ValueString( atlas);
        if(needlist!=null)
        {
            needlist.AddDependAtlas(atlas); 
        }

        json["spriteName"] = new MyJson.JsonNode_ValueString(t.spriteName);
        json["spriteType"] = new MyJson.JsonNode_ValueString(t.type.ToString());

        if (t.type == UISprite.Type.Simple)
        {
            json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString());
        }
        else if (t.type == UISprite.Type.Sliced)
        {
            json["centerType"] = new MyJson.JsonNode_ValueString(t.centerType.ToString());
            json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString());
        }
        else if (t.type == UISprite.Type.Tiled)
        {

        }
        else if (t.type == UISprite.Type.Filled)
        {
            json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString());
            json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString());
            json["fillAmount"] = new MyJson.JsonNode_ValueNumber(t.fillAmount);
            json["invert"] = new MyJson.JsonNode_ValueNumber(t.invert);
        }
        else if(t.type== UISprite.Type.Advanced)
        {
            json["leftType"] = new MyJson.JsonNode_ValueString(t.leftType.ToString());
            json["rightType"] = new MyJson.JsonNode_ValueString(t.rightType.ToString());
            json["topType"] = new MyJson.JsonNode_ValueString(t.topType.ToString());
            json["bottomType"] = new MyJson.JsonNode_ValueString(t.bottomType.ToString());
            json["centerType"] = new MyJson.JsonNode_ValueString(t.centerType.ToString());
            json["flip"] = new MyJson.JsonNode_ValueString(t.flip.ToString());
        }

        ComponentParser.ParserWidget(json, t);

        return json;


    }
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        MeshCollider t = com as MeshCollider;
        var json = new MyJson.JsonNode_Object();

        json["isTrigger"] = new MyJson.JsonNode_ValueNumber(t.isTrigger);
        var name = AssetMgr.SaveMesh(t.sharedMesh, System.IO.Path.Combine(Application.streamingAssetsPath, "mesh"));
        list.AddDependMesh(name);
        json.SetDictValue("mesh", name);
        json.SetDictValue("convex", t.convex);
        json.SetDictValue("smoothSphereCollisions", t.smoothSphereCollisions);
        return json;
    }
Example #11
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        UIAnchor t = com as UIAnchor;
        var json = new MyJson.JsonNode_Object();
        json["uiCamera"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ComponentToID(t.uiCamera));
        json["container"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.container));
        json["side"] = new MyJson.JsonNode_ValueString(t.side.ToString());
        json["runOnlyOnce"] = new MyJson.JsonNode_ValueNumber(t.runOnlyOnce);
        json["relativeOffset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.relativeOffset));
        json["pixelOffset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.pixelOffset));

        return json;
    }
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UIDragScrollView t = com as UIDragScrollView;
        var json = new MyJson.JsonNode_Object();

        if (t.scrollView != null)
        {
            json["scrollView"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.scrollView.gameObject));
        }
        
        return json;

    }
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UIDragDropContainer t = com as UIDragDropContainer;
        var json = new MyJson.JsonNode_Object();

        if (t.reparentTarget != null)
        {
            json["reparentTarget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.reparentTarget.gameObject));
        }
        
        return json;

    }
Example #14
0
    public MyJson.IJsonNode Parser(Component com, NeedList list)
    {
        Light t = com as Light;
        var json = new MyJson.JsonNode_Object();
        json.SetDictValue("type", (int)t.type);
        if (t.type == LightType.Spot)
        {
            json.SetDictValue("range", t.range);
            json.SetDictValue("spotangle", t.spotAngle);


        }
        if (t.type == LightType.Point)
        {
            json.SetDictValue("range", t.range);

        }

        if (t.type != LightType.Area)
        {
            json.SetDictValue("color", ComponentTypeConvert.ColorToString(t.color));
            json.SetDictValue("intensity", t.intensity);
            //t.cookie
            //t.cookiesize
            json.SetDictValue("shadowtype", (int)t.shadows);
            if (t.shadows != LightShadows.None)
            {
                json.SetDictValue("shadowStrength", t.shadowStrength);
                json.SetDictValue("shadowBias", t.shadowBias);
                //shadow质量找不到怎么操作
            }

            if (t.shadows == LightShadows.Soft)
            {
                json.SetDictValue("shadowSoftness", t.shadowSoftness);
                json.SetDictValue("shadowSoftnessFade", t.shadowSoftnessFade);
            }
            //Drawhalo not found
            //flare
            json.SetDictValue("renderMode", (int)t.renderMode);

            json.SetDictValue("cullingMask", t.cullingMask);

            //lightmapping not found


        }
        return json;
    }
Example #15
0
	public MyJson.IJsonNode Parser(Component com,NeedList list)
	{
		UIToggle t = com as UIToggle;
		var json = new MyJson.JsonNode_Object();

		if (t.activeSprite != null) {
			json["activeSprite"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.activeSprite.gameObject));
			Debug.Log(t.gameObject + "&&&&&&&&&&&&&&&&&&&&&"+t.activeSprite.gameObject);
		}	 
		//json["activeSprite"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t));
		//json["group"] = new MyJson.JsonNode_ValueNumber(t.group);
		//json["value"] = new MyJson.JsonNode_ValueNumber(t.value);
	//	json ["sprite"] = new MyJson.JsonNode_ValueString (t.activeSprite);
	//	json ["onChange"] = new MyJson.JsonNode_ValueString (t.onChange);
		return json;
	}
Example #16
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UIScrollView sv = com as UIScrollView;
        var json = new MyJson.JsonNode_Object();

        json["movement"] = new MyJson.JsonNode_ValueString(sv.movement.ToString());
        json["dragEffect"] = new MyJson.JsonNode_ValueString(sv.dragEffect.ToString());
        json["scrollWheelFactor"] = new MyJson.JsonNode_ValueNumber(sv.scrollWheelFactor);
        json["momentumAmount"] = new MyJson.JsonNode_ValueNumber(sv.momentumAmount);
        json["restrictWithinPanel"] = new MyJson.JsonNode_ValueNumber(sv.restrictWithinPanel);
        json["disableDragIfFits"] = new MyJson.JsonNode_ValueNumber(sv.disableDragIfFits);
        json["smoothDragStart"] = new MyJson.JsonNode_ValueNumber(sv.smoothDragStart);
        json["iOSDragEmulation"] = new MyJson.JsonNode_ValueNumber(sv.iOSDragEmulation);
        return json;
    }
Example #17
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        UILabel t = com as UILabel;
        var json = new MyJson.JsonNode_Object();

        //font 有特殊的打包逻辑
        if (t.bitmapFont != null)
        {
            json["bfont"] = new MyJson.JsonNode_ValueString(t.bitmapFont.name);
        }
        else if (t.trueTypeFont != null)
        {
            json["tfont"] = new MyJson.JsonNode_ValueString(t.trueTypeFont.name);
            if(list!=null)
            {
                list.AddDependTFont(t.trueTypeFont.name);

            }
        }
        else
        {
            Debug.LogError("UILabel" + com.name + " 未指定Font");
        }

        json["fontsize"] = new MyJson.JsonNode_ValueNumber(t.fontSize);

        //材质有特殊的打包逻辑
        //json["mate"] = t.material;

        json["text"] = new MyJson.JsonNode_ValueString(t.text);
        json["overflowMethod"] = new MyJson.JsonNode_ValueString(t.overflowMethod.ToString());
        json["alignment"] = new MyJson.JsonNode_ValueString(t.alignment.ToString());
        json["keepCrispWhenShrunk"] = new MyJson.JsonNode_ValueString(t.keepCrispWhenShrunk.ToString());
        json["applyGradient"] = new MyJson.JsonNode_ValueNumber(t.applyGradient);
        json["gradientTop"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.gradientTop));
        json["gradientBottom"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.gradientBottom));
        json["effectStyle"] = new MyJson.JsonNode_ValueString(t.effectStyle.ToString());
        json["effectColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.effectColor));
        json["effectDistance"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.effectDistance));
        json["spacing"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(new Vector2(t.spacingX, t.spacingY)));
        json["maxLineCount"] = new MyJson.JsonNode_ValueNumber(t.maxLineCount);


        ComponentParser.ParserWidget(json, t);

        return json;
    }
Example #18
0
    public static string SaveAtlas(UIAtlas atlas, string path,string pathtex)
    {
        if (System.IO.Directory.Exists(path) == false)
        {
            System.IO.Directory.CreateDirectory(path);
        }
        string tname = SaveTexture(atlas.texture, pathtex);

        MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();

        obj["pixelSize"] = new MyJson.JsonNode_ValueNumber(atlas.pixelSize);
        var jsonmat = new MyJson.JsonNode_Object();
        obj["mat"] = jsonmat;
        jsonmat["shader"] = new MyJson.JsonNode_ValueString(atlas.spriteMaterial.shader.name);
        MyJson.JsonNode_Array shaderparams = new MyJson.JsonNode_Array();
        jsonmat["shaderparam"] = shaderparams;
        foreach (var p in atlas.spriteMaterial.shaderKeywords)
        {
            shaderparams.Add(new MyJson.JsonNode_ValueString(p));
        }

        jsonmat["img"] = new MyJson.JsonNode_ValueString(tname);
        var jsonsparray = new MyJson.JsonNode_Object();
        obj["sprites"] = jsonsparray;
        foreach (var s in atlas.spriteList)
        {
            MyJson.JsonNode_Array sarray = new MyJson.JsonNode_Array();
            jsonsparray[s.name] = sarray;
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.x));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.y));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.width));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.height));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.borderBottom));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingLeft));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingRight));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingTop));
            sarray.Add(new MyJson.JsonNode_ValueNumber(s.paddingBottom));
        }
        string atalsName = atlas.name.ToLower();
        System.IO.File.WriteAllText(System.IO.Path.Combine(path, atalsName + ".atlas.txt"), obj.ToString());

        return atalsName;
    }
Example #19
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UIGrid t = com as UIGrid;
        var json = new MyJson.JsonNode_Object();

        json["arrangement"] = new MyJson.JsonNode_ValueString(t.arrangement.ToString());
        json["sorting"] = new MyJson.JsonNode_ValueString(t.sorting.ToString());
        json["pivot"] = new MyJson.JsonNode_ValueString(t.pivot.ToString());
        json["maxPerLine"] = new MyJson.JsonNode_ValueNumber(t.maxPerLine);
        json["cellWidth"] = new MyJson.JsonNode_ValueNumber(t.cellWidth);
        json["cellHeight"] = new MyJson.JsonNode_ValueNumber(t.cellHeight);
        json["animateSmoothly"] = new MyJson.JsonNode_ValueNumber(t.animateSmoothly);
        json["hideInactive"] = new MyJson.JsonNode_ValueNumber(t.hideInactive);
        json["keepWithinPanel"] = new MyJson.JsonNode_ValueNumber(t.keepWithinPanel);

        return json;

    }
Example #20
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        UIPanel t = com as UIPanel;
        var json = new MyJson.JsonNode_Object();

        json["alpha"] = new MyJson.JsonNode_ValueNumber(t.alpha);
        json["depth"] = new MyJson.JsonNode_ValueNumber(t.depth);
        json["clipping"] = new MyJson.JsonNode_ValueString(t.clipping.ToString());
        if(t.clipping!= UIDrawCall.Clipping.None)
        {
            json["offset"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.clipOffset));
            json["region"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector4ToString(t.baseClipRegion));
            if(t.clipping== UIDrawCall.Clipping.SoftClip)
            {

                json["softness"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(t.clipSoftness));
            }
        }
       
        return json;
    }
Example #21
0
        public static MyJson.JsonNode_Object GetMatConfig(Material mat)
        {
            MaterialProperty[] mps = MaterialEditor.GetMaterialProperties(new UnityEngine.Object[] { mat });

            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
            json["name"] = new MyJson.JsonNode_ValueString(mat.shader.name);
            if (mps != null && mps.Length > 0)
            {
                MyJson.JsonNode_Object _params = new MyJson.JsonNode_Object();
                json["params"] = _params;
                foreach (var mp in mps)
                {
                    if (mp.flags == MaterialProperty.PropFlags.HideInInspector) continue;

                    MyJson.JsonNode_Object p = new MyJson.JsonNode_Object();

                    _params[mp.name] = p;

                    p["name"] = new MyJson.JsonNode_ValueString(mp.name);
                    p["type"] = new MyJson.JsonNode_ValueString(mp.type.ToString());
                    p["flags"] = new MyJson.JsonNode_ValueString(mp.flags.ToString());
                    if (mp.type == MaterialProperty.PropType.Texture)
                    {
                        p["texdim"] = new MyJson.JsonNode_ValueString(mp.textureDimension.ToString());
                    }
                    if (mp.type == MaterialProperty.PropType.Range)
                    {
                        p["rangex"] = new MyJson.JsonNode_ValueNumber(mp.rangeLimits.x);
                        p["rangey"] = new MyJson.JsonNode_ValueNumber(mp.rangeLimits.y);
                    }
                }
            }
            else
            {
                json["error"] = new MyJson.JsonNode_ValueString("this mat do not have property.");
            }
            return json;
        }
Example #22
0
    public MyJson.IJsonNode Parser(Component com,NeedList list)
    {
        UIButton t = com as UIButton;
        var json = new MyJson.JsonNode_Object();


        json["tweenTarget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.tweenTarget));
        json["dragHighlight"] = new MyJson.JsonNode_ValueNumber(t.dragHighlight);
        json["duration"] = new MyJson.JsonNode_ValueNumber(t.duration);
        json["colorN"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.defaultColor));
        json["colorH"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.hover));
        json["colorP"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.pressed));
        json["colorD"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(t.disabledColor));

            

        json["spriteN"] = new MyJson.JsonNode_ValueString(t.normalSprite);
        json["springH"] = new MyJson.JsonNode_ValueString(t.hoverSprite);
        json["springP"] = new MyJson.JsonNode_ValueString(t.pressedSprite);
        json["springD"] = new MyJson.JsonNode_ValueString(t.disabledSprite);
        json["pixelSnap"] = new MyJson.JsonNode_ValueNumber(t.pixelSnap);
        return json;
    }
        async public Task Start()
        {
            string  wif           = "KwwJMvfFPcRx2HSgQRPviLv4wPrxRaLk7kfQntkH8kCXzTgAts8t";
            string  targetAddress = "ALjSnMZidJqd18iQaoCgFun6iqWRm2cVtj";
            decimal sendCount     = new decimal(1);

            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);


            //获取自己的utxo
            Dictionary <string, List <UTXO> > dic_UTXO = await GetUTXOByAddress("https://api.nel.group/api/testnet", address);

            //拼装交易体
            Transaction tran = makeTran(dic_UTXO, address, targetAddress, new ThinNeo.Hash256("0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b"), sendCount);

            tran.version    = 0;
            tran.attributes = new ThinNeo.Attribute[0];
            tran.type       = ThinNeo.TransactionType.ContractTransaction;
            byte[] msg    = tran.GetMessage();
            string msgstr = ThinNeo.Helper.Bytes2HexString(msg);

            byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
            tran.AddWitness(signdata, pubkey, address);
            string txid = tran.GetHash().ToString();

            byte[] data    = tran.GetRawData();
            string rawdata = ThinNeo.Helper.Bytes2HexString(data);

            byte[] postdata;
            var    url    = HttpHelper.MakeRpcUrlPost("https://api.nel.group/api/testnet", "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
            var    result = await HttpHelper.HttpPost(url, postdata);

            MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
            Console.WriteLine(resJO.ToString());
        }
Example #24
0
        public async Task CreateNep5Async(string ChainHash, string WIF, string ContractPath)
        {
            KeyPair keypair = ZoroHelper.GetKeyPairFromWIF(WIF);

            byte[] script = System.IO.File.ReadAllBytes(ContractPath);
            Console.WriteLine("NEP5 Contract Hash:" + script.ToScriptHash());
            byte[] parameter__list = ZoroHelper.HexString2Bytes("0710");
            byte[] return_type     = ZoroHelper.HexString2Bytes("05");
            int    need_storage    = 1;
            int    need_nep4       = 0;
            int    need_canCharge  = 4;
            string name            = "mygas";
            string version         = "1.0";
            string auther          = "LZ";
            string email           = "0";
            string description     = "0";

            using (ScriptBuilder sb = new ScriptBuilder())
            {
                var ss = need_storage | need_nep4 | need_canCharge;
                sb.EmitPush(description);
                sb.EmitPush(email);
                sb.EmitPush(auther);
                sb.EmitPush(version);
                sb.EmitPush(name);
                sb.EmitPush(ss);
                sb.EmitPush(return_type);
                sb.EmitPush(parameter__list);
                sb.EmitPush(script);
                sb.EmitSysCall("Zoro.Contract.Create");

                var result = await ZoroHelper.SendInvocationTransaction(sb.ToArray(), keypair, ChainHash, Config.GasPrice);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }
        }
Example #25
0
        void LoadState()
        {
            processedBlock = 0;
            //var highblock = System.IO.Path.Combine(statepath, "processedblock.json");
            try
            {
                //if (System.IO.File.Exists(highblock) == false)
                //    throw new Exception(highblock + " not found.");


                //var info = MyJson.Parse(System.IO.File.ReadAllText(highblock)).AsDict();
                //processedBlock = info["blockindex"].AsInt();

                //var hash = Helper.HexToString(info["hash"].AsString());
                //var stateFile = System.IO.Path.Combine(statepath, "block_" + processedBlock.ToString() + ".state.json");

                //if (System.IO.File.Exists(stateFile) == false)
                //    throw new Exception(stateFile + " not found.");
                //var bytes = System.IO.File.ReadAllBytes(stateFile);
                //var hashinjson = sha256.ComputeHash(bytes);
                //if (Helper.BytesEqual(hash, hashinjson) == false)
                //    throw new Exception("hash not match");


                //largeState = MyJson.Parse(System.Text.Encoding.UTF8.GetString(bytes)) as MyJson.JsonNode_Object;
                largeState     = new MyJson.JsonNode_Object();
                processedBlock = 200000;
            }
            catch (Exception err)
            {
                Console.WriteLine("error LoadState:" + err.Message);
                largeState     = new MyJson.JsonNode_Object();
                processedBlock = -1;
            }
            Console.WriteLine("start block=" + processedBlock);
        }
Example #26
0
 static public void friend_getlist()
 {
     try
     {
         String   URL = Config.ROOT_URL + "friend_getlist";
         PostData nvc = new PostData();
         Func.putPassWord(nvc);
         //nvc.Add("order", "addtime");
         //nvc.Add("desc", "DESC");
         nvc.Add("start", "0");
         nvc.Add("count", "0");
         nvc.Add("tag", "qq");
         nvc.Add("tagval", "251197161");
         if (nvc != null)
         {
             string sttuas = Func.HttpPostData(URL, 10000, nvc);
             if (sttuas.Length > 10)
             {
                 MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array;
                 for (int i = 0; i < jsons.GetListCount(); i++)
                 {
                     MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object;
                     QQFriend info = new QQFriend();
                     info.qq      = json["qq"].AsString();
                     info.qqfri   = json["qqfri"].AsString();
                     info.addtime = Func.MyUrlDeCode(json["addtime"].AsString());
                     info.state   = Func.MyUrlDeCode(json["state"].AsString());
                     lsQQFriend.Add(info);
                 }
             }
         }
     }
     catch (Exception)
     {
     }
 }
Example #27
0
        public override void HandleMsg(params object[] _params)
        {
            result.msgCode   = (EnumMsgCode)_params[0];
            result.errorCode = (EnumErrorCode)_params[1];
            byte[] data       = (byte[])_params[2];
            string appVersion = data[0] + "." + data[1];

            MyJson.JsonNode_Object Jo_PackageInfo = new MyJson.JsonNode_Object();

            Jo_PackageInfo["Framework"] = new MyJson.JsonNode_ValueString(appVersion);
            //获取有几种插件
            for (var i = 2; i < data.Length; i = i + 4)
            {
                var version = data[i + 2] + "." + data[i + 3];
                if (version == "0.0")
                {
                    break;
                }
                var type = (NeoDun.AddressType)BitConverter.ToInt16(data, i);
                Jo_PackageInfo[type.ToString()] = new MyJson.JsonNode_ValueString(version);
            }

            result.data = Jo_PackageInfo;
        }
Example #28
0
    //从市场里面提币
    void test_drawToken()
    {
        MyJson.JsonNode_Array paparms = new MyJson.JsonNode_Array();

        MyJson.JsonNode_Object paparms_1 = new MyJson.JsonNode_Object();
        var array = new MyJson.JsonNode_Array();

        array.AddArrayValue("(addr)AYTcTTB8jpWtGgs8ukoUrQPm1zmEFxZHNk");
        array.AddArrayValue("(int)" + 100000000);
        paparms_1["sbParamJson"]  = array;
        paparms_1["sbPushString"] = new MyJson.JsonNode_ValueString("drawToken");
        paparms_1["nnc"]          = new MyJson.JsonNode_ValueString("0x7753e79cfb98e63e2b7aa00a819e0cb86fdb1930");

        MyJson.JsonNode_Object paparms_extString = new MyJson.JsonNode_Object();
        paparms_extString["txType"] = new MyJson.JsonNode_ValueString("transferNepToAuc");
        paparms_extString["kind"]   = new MyJson.JsonNode_ValueString("0");
        paparms_extString["data"]   = new MyJson.JsonNode_ValueString("1");

        paparms_1["extString"] = paparms_extString;

        paparms.AddArrayValue(paparms_1);

        NeoGameSDK_CS.makeRawTransaction((bool timeout, WWW www) => { Debug.Log(www.text); }, paparms);
    }
Example #29
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {

        UIInput inp = com as UIInput;
        var json = new MyJson.JsonNode_Object();

        if (inp.label != null)
        {
            json["label"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ComponentToID(inp.label.GetComponent<UILabel>()));
        }
        json["value"] = new MyJson.JsonNode_ValueString(inp.value);
        json["savedAs"] = new MyJson.JsonNode_ValueString(inp.savedAs);
        json["activeTextColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.activeTextColor));
        json["caretColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.caretColor));
        json["selectionColor"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(inp.selectionColor));
        if (inp.selectOnTab != null)
        {
            json["selectOnTab"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(inp.selectOnTab.gameObject));
        }
        json["inputType"] = new MyJson.JsonNode_ValueString(inp.inputType.ToString());
        json["validation"] = new MyJson.JsonNode_ValueString(inp.validation.ToString());
        json["characterLimit"] = new MyJson.JsonNode_ValueNumber(inp.characterLimit);
        return json;
    }
Example #30
0
        private static async Task <Dictionary <string, List <UTXO> > > GetUTXOByAddress(string address)
        {
            MyJson.JsonNode_Object response = (MyJson.JsonNode_Object)MyJson.Parse(
                await HttpHelper.HttpGet("https://api.nel.group/api/testnet?method=getutxo&id=1&params=['" + address + "']"));
            MyJson.JsonNode_Array             resJA = (MyJson.JsonNode_Array)response["result"];
            Dictionary <string, List <UTXO> > dic   = new Dictionary <string, List <UTXO> >();

            foreach (MyJson.JsonNode_Object j in resJA)
            {
                UTXO utxo = new UTXO(j["addr"].ToString(), new Hash256(j["txid"].ToString()), j["asset"].ToString(),
                                     decimal.Parse(j["value"].ToString()), int.Parse(j["n"].ToString()));
                if (dic.ContainsKey(j["asset"].ToString()))
                {
                    dic[j["asset"].ToString()].Add(utxo);
                }
                else
                {
                    List <UTXO> list = new List <UTXO>();
                    list.Add(utxo);
                    dic[j["asset"].ToString()] = list;
                }
            }
            return(dic);
        }
Example #31
0
        MyJson.IJsonNode _rpc_ver_finish(string token, int ver)
        {
            string user;
            string game   = CheckToken(token, out user);
            var    vgroup = versions[game];

            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            if (commits.ContainsKey(user) == false)
            {
                obj.SetDictValue("status", -2004);
                obj.SetDictValue("msg", "not found commit.");
                return(obj);
            }
            var commit = commits[user];

            if (commit.ver != ver)
            {
                obj.SetDictValue("status", -2005);
                obj.SetDictValue("msg", "not right commit ver.");
                return(obj);
            }
            MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
            bool b = commit.Run(vgroup.path, array);

            obj.SetDictValue("info", array);
            if (!b)
            {
                obj.SetDictValue("status", -2006);
                obj.SetDictValue("msg", "commit fall.");
            }
            else
            {
                obj.SetDictValue("status", 0);
            }
            return(null);
        }
Example #32
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {
        UISlider t    = com as UISlider;
        var      json = new MyJson.JsonNode_Object();

        json["value"]         = new MyJson.JsonNode_ValueNumber(t.value);
        json["alpha"]         = new MyJson.JsonNode_ValueNumber(t.alpha);
        json["numberOfSteps"] = new MyJson.JsonNode_ValueNumber(t.numberOfSteps);
        if (t.foregroundWidget != null)
        {
            json["foregroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.foregroundWidget.gameObject));
        }
        if (t.backgroundWidget != null)
        {
            json["backgroundWidget"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.backgroundWidget.gameObject));
        }
        if (t.thumb != null)
        {
            json["thumb"] = new MyJson.JsonNode_ValueNumber(GameObjParser.ObjToID(t.thumb.gameObject));
        }
        json["fillDirection"] = new MyJson.JsonNode_ValueString(t.fillDirection.ToString());

        return(json);
    }
Example #33
0
        private static void SendTransWithoutUtxo(byte[] prikey, byte[] pubkey, string address, byte[] script)
        {
            ThinNeo.Transaction tran = new Transaction();
            tran.inputs              = new ThinNeo.TransactionInput[0];
            tran.outputs             = new TransactionOutput[0];
            tran.attributes          = new ThinNeo.Attribute[1];
            tran.attributes[0]       = new ThinNeo.Attribute();
            tran.attributes[0].usage = TransactionAttributeUsage.Script;
            tran.attributes[0].data  = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);
            tran.version             = 1;
            tran.type = ThinNeo.TransactionType.InvocationTransaction;

            var idata = new ThinNeo.InvokeTransData();

            tran.extdata = idata;
            idata.script = script;
            idata.gas    = 0;

            byte[] msg    = tran.GetMessage();
            string msgstr = ThinNeo.Helper.Bytes2HexString(msg);

            byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
            tran.AddWitness(signdata, pubkey, address);
            string txid = tran.GetHash().ToString();

            byte[] data    = tran.GetRawData();
            string rawdata = ThinNeo.Helper.Bytes2HexString(data);

            byte[] postdata;
            var    url    = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
            var    result = Helper.HttpPost(url, postdata);

            Console.WriteLine(txid);
            MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
            Console.WriteLine(resJO.ToString());
        }
Example #34
0
        public static async Task <Result> api_InvokeScript(Hash160 scripthash, string methodname, params string[] subparam)
        {
            byte[] data = null;
            using (ScriptBuilder sb = new ScriptBuilder())
            {
                MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
                if (subparam != null && subparam.Length > 0)
                {
                    for (var i = 0; i < subparam.Length; i++)
                    {
                        array.AddArrayValue(subparam[i]);
                    }
                }
                sb.EmitParamJson(array);
                sb.EmitPushString(methodname);
                sb.EmitAppCall(scripthash);
                data = sb.ToArray();
            }
            string script = ThinNeo.Helper.Bytes2HexString(data);

            byte[] postdata;
            var    url  = Helper.MakeRpcUrlPost(Config.api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(script));
            var    text = await Helper.HttpPost(url, postdata);

            MyJson.JsonNode_Object json = MyJson.Parse(text) as MyJson.JsonNode_Object;

            Result rest = new Result();

            rest.textInfo = text;
            if (json.ContainsKey("result"))
            {
                var result = json["result"].AsList()[0].AsDict()["stack"].AsList();
                rest.value = ResultItem.FromJson("Array", result);
            }
            return(rest);// subPrintLine("得到的结果是:" + result);
        }
Example #35
0
        public MyJson.JsonNode_Object ToJson()
        {
            MyJson.JsonNode_Object _op = new MyJson.JsonNode_Object();
            _op.SetDictValue("addr", addr);
            _op.SetDictValue("op", op.ToString());
            if (this.stack != null)
            {
                MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
                _op.SetDictValue("stack", array);
                foreach (var r in stack)
                {
                    if (r.ind > 0)
                    {
                        array.AddArrayValue(r.type.ToString() + "|" + r.ind);
                    }
                    else
                    {
                        array.AddArrayValue(r.type.ToString());
                    }
                }
            }
            if (opresult != null)
            {
                _op.SetDictValue("result", StatkItemToJson(opresult));
            }
            if (opparam != null)
            {
                _op.SetDictValue("param", opparam.ToHexString());
            }
            if (subScript != null)
            {
                _op.SetDictValue("subscript", subScript.ToJson());
            }

            return(_op);
        }
Example #36
0
        public static void handle(MyJson.JsonNode_Object blockData)
        {
            int blockindex = blockData["index"].AsInt();
            var blockTx    = blockData["tx"].AsList();

            decimal totalSysFee = 0;

            foreach (MyJson.JsonNode_Object item in blockTx)
            {
                var fee = decimal.Parse(item["sys_fee"].AsString());
                totalSysFee += fee;
            }
            //var blockSysfeeFindBson = BsonDocument.Parse("{index:" + (blockindex - 1) + "}");
            //var blockSysfeeQuery = Collection.Find(blockSysfeeFindBson).ToList();
            var blockSysfeeQuery = Mongo.Find(Collection, "index", (blockindex - 1).ToString());

            if (blockSysfeeQuery.Count > 0)
            {
                totalSysFee += blockSysfeeQuery[0].totalSysfee;
            }
            BlockSysfee bsf = new BlockSysfee(blockindex, totalSysFee);

            Collection.InsertOne(bsf);
        }
Example #37
0
        public string SaveMat(Material mat)
        {
            int id = mat.GetInstanceID();
            string name = null;
            if (savecache.TryGetValue(id, out name))
            {
                return name;
            }
            MyJson.JsonNode_Object _json = new MyJson.JsonNode_Object();
            //parser.matParser.WriteToJson(this, mat, _json);
#if UNITY_EDITOR
            if (parser.GetMatParser(mat.shader.name) == null)
            {
                var json = nodeParser.GetMatConfig(mat);
                parser.InitMatParser(mat.shader.name, json);

                #region 自动保存shaderparser配置,这一段可以关闭
                string path = Application.dataPath + "/resources/shaderparser";
                if (System.IO.Directory.Exists(path) == false)
                    System.IO.Directory.CreateDirectory(path);

                string shadername = mat.shader.name;
                shadername = shadername.Replace("/", "%2f");
                string file = path + "/" + shadername + ".shaderparser.txt";
                if (System.IO.File.Exists(file))
                    System.IO.File.Delete(file);

                System.IO.File.WriteAllText(file, json.ToString());
                #endregion
            }
#endif
            parser.GetMatParser(mat.shader.name).WriteToJson(this, mat, _json);

            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            _json.ConvertToStringWithFormat(sb, 4);
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
            string sha1 = ResLibTool.ComputeHashString(bs);
            name = sha1 + ".jsonmat.txt";
            bufs[name] = bs;

            savecache[id] = name;
            return name;
        }
Example #38
0
        void Obj2Json(GameObject _obj, MyJson.JsonNode_Object _json)
        {
            _json["name"] = new MyJson.JsonNode_ValueString(_obj.name);
            _json["id"] = new MyJson.JsonNode_ValueNumber(_obj.GetInstanceID());
            //遍历填充组件
            MyJson.JsonNode_Array comps = new MyJson.JsonNode_Array();
            _json["components"] = comps;
            foreach (var c in _obj.GetComponents<Component>())
            {
                if (c == null)
                {
                    Debug.LogWarning("got a commponet null.");
                    continue;
                }
                string type = c.GetType().Name.ToLower();
                var _cjson = new MyJson.JsonNode_Object();
                _cjson["type"] = new MyJson.JsonNode_ValueString(type);
                if (componentParsers.ContainsKey(type) == false)
                {
                    Debug.LogWarning("can't find comparser:" + type);
                    continue;
                }

                componentParsers[type].WriteToJson(resmgr, _obj, c, _cjson);
                comps.Add(_cjson);
            }

            //遍历填充树
            if (_obj.transform.childCount > 0)
            {
                MyJson.JsonNode_Array children = new MyJson.JsonNode_Array();
                _json["children"] = children;

                for (int i = 0; i < _obj.transform.childCount; i++)
                {
                    var subobj = _obj.transform.GetChild(i).gameObject;
                    MyJson.JsonNode_Object _subjson = new MyJson.JsonNode_Object();
                    Obj2Json(subobj, _subjson);
                    children.Add(_subjson);
                }
            }

        }
Example #39
0
        public void SaveNode(GameObject _object)
        {
            bufs = new Dictionary<string, byte[]>();
            resmgr = new ResMgr(this);



            if (debug)
                Debug.Log("SaveNode:" + _object);

            MyJson.JsonNode_Object _json = new MyJson.JsonNode_Object();
            Obj2Json(_object, _json);//扫描转换


            //将树也加入bufs
            StringBuilder sb = new StringBuilder();
            _json.ConvertToStringWithFormat(sb, 4);
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(sb.ToString());

            string sha1 = ResLibTool.ComputeHashString(bs);
            bufs[sha1 + ".jsontree.txt"] = bs;


        }
Example #40
0
        public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script)
        {
            var sha256 = System.Security.Cryptography.SHA256.Create();

            byte[] hash256   = sha256.ComputeHash(script);
            var    ripemd160 = new Neo.Cryptography.RIPEMD160Managed();
            var    hash      = ripemd160.ComputeHash(hash256);

            var outjson = new MyJson.JsonNode_Object();

            //hash
            StringBuilder sb = new StringBuilder();

            sb.Append("0x");
            foreach (var b in hash.Reverse().ToArray())
            {
                sb.Append(b.ToString("x02"));
            }
            outjson.SetDictValue("hash", sb.ToString());

            //entrypoint
            outjson.SetDictValue("entrypoint", "Main");
            var mainmethod = module.mapMethods[module.mainMethod];

            if (mainmethod != null)
            {
                var name = mainmethod.displayName;
                outjson.SetDictValue("entrypoint", name);
            }
            //functions
            var funcsigns = new MyJson.JsonNode_Array();

            outjson["functions"] = funcsigns;

            foreach (var function in module.mapMethods)
            {
                var mm = function.Value;
                if (mm.isPublic == false)
                {
                    continue;
                }
                var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                var funcsign = new MyJson.JsonNode_Object();

                funcsigns.Add(funcsign);
                var funcname = ps[1];
                if (funcname.IndexOf("::") > 0)
                {
                    var sps = funcname.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
                    funcname = sps.Last();
                }
                funcsign.SetDictValue("name", function.Value.displayName);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }

                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returntype", rtype);
            }

            //events
            var eventsigns = new MyJson.JsonNode_Array();

            outjson["events"] = eventsigns;
            foreach (var events in module.mapEvents)
            {
                var mm = events.Value;

                var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                var funcsign = new MyJson.JsonNode_Object();

                eventsigns.Add(funcsign);

                funcsign.SetDictValue("name", events.Value.displayName);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }
                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returntype", rtype);
            }

            return(outjson);
        }
        public async Task Start()
        {
            /**私钥*/
            string privateKey = "7c5a23ddb24c5eacb200874a32a64585bea7f1dd8efa23745e2b2a7753004c81";
            /**gas资产编号*/
            string gasAsset = "0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b";
            /**合约脚本散列*/
            string scriptHash = "0x98f56b5dc40650da5c1ead5894979e0c2fe4bcd6";
            /**合约代码*/
            string scriptCode = "00c56b616168164e656f2e53746f726167652e476574436f6e746578740548656c6c6f05576f726c64615272680f4e656f2e53746f726167652e50757461616c7566";
            /**名称*/
            string name = "helloworld";
            /**版本*/
            string version = "1.0";
            /**作者*/
            string author = "zhan.li";
            /**邮箱*/
            string email = "*****@*****.**";
            /**说明*/
            string description = "test Create Contract";
            /**参数列表*/
            string paramList = "hello";
            /**返回值*/
            string returnValue = "world";

            byte[] priKey  = Encoding.Default.GetBytes(privateKey);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

            byte[] script = null;
            using (ScriptBuilder sb = new ScriptBuilder())
            {
                sb.EmitSysCall(HexToBytes(scriptCode), HexToBytes(paramList), returnValue, "0", name, version, author, email, description);
                sb.EmitSysCall("Neo.Contract.Create");
                script = sb.ToArray();
            }

            Dictionary <string, List <UTXO> > dic_UTXO = await GetUTXOByAddress("http://localhost:20332/", address);

            Transaction tran = makeTran(dic_UTXO, address, targetAddress, new Hash256("0xc56f33fc6ecfcd0c225c4ab356fee59390af8560be0e930faebe74a6daff7c9b"), new decimal(90));

            tran.type       = ThinNeo.TransactionType.InvocationTransaction;
            tran.version    = 0;
            tran.attributes = new ThinNeo.Attribute[0];
            var idata = new ThinNeo.InvokeTransData();

            tran.extdata = idata;
            idata.script = script;
            idata.gas    = 0;

            byte[] msg    = tran.GetMessage();
            string msgstr = ThinNeo.Helper.Bytes2HexString(msg);

            byte[] signdata = ThinNeo.Helper.Sign(msg, priKey);
            tran.AddWitness(signdata, pubkey, address);
            string txid = tran.GetHash().ToString();

            byte[] data    = tran.GetRawData();
            string rawdata = ThinNeo.Helper.Bytes2HexString(data);

            byte[] postdata;
            var    url    = HttpHelper.MakeRpcUrlPost("https://api.nel.group/api/testnet", "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
            var    result = await HttpHelper.HttpPost(url, postdata);

            MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
        }
Example #42
0
 public override string ToString()
 {
     MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
     foreach(var list in needList)
     {
         MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();
         obj[list.Key] = array;
         foreach(var item in list.Value)
         {
             array.Add(new MyJson.JsonNode_ValueString(item));
         }
     }
     return obj.ToString();
 }
Example #43
0
        private static async Task parseJAVA(IOwinContext context, FormData formdata)
        {
            try
            {
                string dictname  = null;
                string classname = null;
                var    file      = formdata.mapFiles["file"];
                var    code      = System.Text.Encoding.UTF8.GetString(file);

                //准备临时目录
                {
                    Random i   = new Random();
                    var    num = i.Next();

                    while (System.IO.Directory.Exists("tmp\\tmp_" + num.ToString("X08")))
                    {
                        num++;
                    }
                    dictname = "tmp\\tmp_" + num.ToString("X08");

                    var fc     = code.IndexOf("class");
                    int ibegin = -1;

                    for (int ib = fc + 6; ib < fc + 100; ib++)
                    {
                        if (ibegin < 0)
                        {
                            if (code[ib] == ' ')
                            {
                                continue;
                            }
                            else
                            {
                                ibegin = ib;
                            }
                        }
                        else
                        {
                            if (code[ib] == ' ' || code[ib] == '}')
                            {
                                classname = code.Substring(ibegin, ib - ibegin);
                                break;
                            }
                        }
                    }
                }
                System.IO.Directory.CreateDirectory(dictname);
                string filename = System.IO.Path.Combine(dictname, classname + ".java");
                System.IO.File.WriteAllText(filename, code);
                string jarfile = "AntShares.SmartContract.Framework.jar";
                System.IO.File.Copy(jarfile, System.IO.Path.Combine(dictname, jarfile));

                //编译
                try
                {
                    System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo();
                    info.FileName               = "cmd.exe";
                    info.UseShellExecute        = false;
                    info.RedirectStandardOutput = true;
                    info.RedirectStandardInput  = true;
                    info.RedirectStandardError  = true;
                    info.WorkingDirectory       = dictname;
                    var proc = System.Diagnostics.Process.Start(info);
                    proc.StandardInput.WriteLine("javac -cp " + jarfile + " " + classname + ".java");
                    proc.StandardInput.WriteLine("exit");


                    string        back      = proc.StandardError.ReadToEnd();
                    string        inerror   = "";
                    int           line      = -1;
                    string        tag       = "";
                    List <string> outline   = new List <string>();
                    List <int>    errorline = new List <int>();
                    List <string> errorTag  = new List <string>();
                    string[]      lines     = back.Split(new string[] { "\r\n" }, StringSplitOptions.None);
                    for (var i = 0; i < lines.Length; i++)
                    {
                        if (inerror == "")
                        {
                            var mm = lines[i].Split(':');
                            if (mm.Length > 3)
                            {
                                line     = int.Parse(mm[1]);
                                inerror += mm[3];
                                tag      = mm[2];
                            }
                        }
                        else
                        {
                            if (lines[i].IndexOf("^") >= 0)
                            {
                                outline.Add(inerror);
                                errorline.Add(line);
                                errorTag.Add(tag);
                                inerror = "";
                            }
                            else
                            {
                                inerror += "\n" + lines[i];
                            }
                        }
                    }

                    if (outline.Count == 0)
                    {
                        //succ
                    }
                    else
                    {
                        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                        json["tag"] = new MyJson.JsonNode_ValueNumber(-3);
                        json["msg"] = new MyJson.JsonNode_ValueString("compile fail.");

                        MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array();
                        json["errors"] = errs;
                        for (var i = 0; i < outline.Count; i++)
                        {
                            MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object();
                            errs.Add(errtag);
                            errtag.SetDictValue("msg", outline[i]);
                            errtag.SetDictValue("line", errorline[i]);
                            errtag.SetDictValue("tag", errorTag[i]);
                            //errtag.SetDictValue("col", r.Errors[i].Column);
                        }
                        await context.Response.WriteAsync(json.ToString());

                        return;
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }

                //conv
                try
                {
                    JavaModule module = new JavaModule();
                    module.LoadJar(jarfile);
                    module.LoadClass(System.IO.Path.Combine(dictname, classname + ".class"));
                    var logjson = new Log2Json();
                    var conv    = new Neo.Compiler.JVM.ModuleConverter(logjson);
                    var neomd   = conv.Convert(module);
                    var mm      = neomd.mapMethods[neomd.mainMethod];

                    var bs = neomd.Build();
                    if (bs != null)
                    {
                        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                        json["tag"] = new MyJson.JsonNode_ValueNumber(0);
                        StringBuilder sb     = new StringBuilder();
                        StringBuilder sb2    = new StringBuilder();
                        var           hash   = System.Security.Cryptography.SHA256.Create();
                        var           hashbs = hash.ComputeHash(bs);
                        foreach (var b in bs)
                        {
                            sb.Append(b.ToString("X02"));
                        }
                        foreach (var b in hashbs)
                        {
                            sb2.Append(b.ToString("X02"));
                        }
                        json["hex"]  = new MyJson.JsonNode_ValueString(sb.ToString());
                        json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString());

                        json["returntype"] = new MyJson.JsonNode_ValueString(mm.returntype);
                        MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                        json["params"] = funcparams;
                        if (mm.paramtypes != null)
                        {
                            foreach (var v in mm.paramtypes)
                            {
                                funcparams.Add(new MyJson.JsonNode_ValueString(v.type));
                            }
                        }

                        await context.Response.WriteAsync(json.ToString());

                        return;
                    }


                    else
                    {
                        {
                            MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                            json["tag"]  = new MyJson.JsonNode_ValueNumber(-4);
                            json["msg"]  = new MyJson.JsonNode_ValueString("compile fail.");
                            json["info"] = logjson.array;
                            await context.Response.WriteAsync(json.ToString());

                            return;
                        }
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
            catch
            {
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("parse fail.");
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
        }
Example #44
0
        private static async Task parseCSharp(IOwinContext context, FormData formdata)
        {
            try
            {
                var file = formdata.mapFiles["file"];
                var code = System.Text.Encoding.UTF8.GetString(file);

                //编译
                List <string> codes = new List <string>();
                codes.Add(code);
                CompilerResults r = null;

                try
                {
                    r = gencode.GenCode(codes, true);
                    if (r.Errors.Count > 0)
                    {
                        MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                        json["tag"] = new MyJson.JsonNode_ValueNumber(-3);
                        json["msg"] = new MyJson.JsonNode_ValueString("compile fail.");
                        MyJson.JsonNode_Array errs = new MyJson.JsonNode_Array();
                        json["errors"] = errs;
                        for (var i = 0; i < r.Errors.Count; i++)
                        {
                            MyJson.JsonNode_Object errtag = new MyJson.JsonNode_Object();
                            errs.Add(errtag);
                            errtag.SetDictValue("msg", r.Errors[i].ErrorText);
                            errtag.SetDictValue("line", r.Errors[i].Line);
                            errtag.SetDictValue("col", r.Errors[i].Column);
                            errtag.SetDictValue("tag", r.Errors[i].IsWarning ? "警告" : "错误");
                        }
                        await context.Response.WriteAsync(json.ToString());

                        return;
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on comp.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
                //conv
                try
                {
                    var st = System.IO.File.OpenRead(r.PathToAssembly);
                    using (st)
                    {
                        var logjson = new Log2Json();

                        var module = new ILModule();
                        module.LoadModule(st, null);

                        var conv  = new Neo.Compiler.MSIL.ModuleConverter(logjson);
                        var neomd = conv.Convert(module);
                        //var mm = neomd.mapMethods[neomd.mainMethod];


                        var bs = neomd.Build();
                        if (bs != null)
                        {
                            {
                                MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                                json["tag"] = new MyJson.JsonNode_ValueNumber(0);
                                StringBuilder sb     = new StringBuilder();
                                StringBuilder sb2    = new StringBuilder();
                                var           hash   = System.Security.Cryptography.SHA256.Create();
                                var           hashbs = hash.ComputeHash(bs);
                                foreach (var b in bs)
                                {
                                    sb.Append(b.ToString("X02"));
                                }
                                foreach (var b in hashbs)
                                {
                                    sb2.Append(b.ToString("X02"));
                                }
                                json["hex"]  = new MyJson.JsonNode_ValueString(sb.ToString());
                                json["hash"] = new MyJson.JsonNode_ValueString(sb2.ToString());

                                var funcsigns = new MyJson.JsonNode_Object();
                                json["funcsigns"] = funcsigns;
                                foreach (var function in neomd.mapMethods)
                                {
                                    var mm       = function.Value;
                                    var ps       = mm.name.Split(new char[] { ' ', '(' }, StringSplitOptions.RemoveEmptyEntries);
                                    var funcsign = new MyJson.JsonNode_Object();
                                    funcsigns[ps[1]] = funcsign;
                                    funcsign.SetDictValue("name", ps[1]);
                                    var rtype = ConvCSharpType(mm.returntype);
                                    funcsign.SetDictValue("returntype", rtype);
                                    MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                                    funcsign["params"] = funcparams;
                                    if (mm.paramtypes != null)
                                    {
                                        foreach (var v in mm.paramtypes)
                                        {
                                            var ptype = ConvCSharpType(v.type);
                                            var item  = new MyJson.JsonNode_Object();
                                            funcparams.Add(item);
                                            item.SetDictValue("name", v.name);
                                            item.SetDictValue("type", ptype);
                                        }
                                    }
                                }
                                await context.Response.WriteAsync(json.ToString());

                                return;
                            }
                        }
                        else
                        {
                            {
                                MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                                json["tag"]  = new MyJson.JsonNode_ValueNumber(-4);
                                json["msg"]  = new MyJson.JsonNode_ValueString("compile fail.");
                                json["info"] = logjson.array;
                                await context.Response.WriteAsync(json.ToString());

                                return;
                            }
                        }
                    }
                }
                catch (Exception err)
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("unknown fail on conv.");
                    json["err"] = new MyJson.JsonNode_ValueString(err.ToString());
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
            catch
            {
                {
                    MyJson.JsonNode_Object json = new MyJson.JsonNode_Object();
                    json["tag"] = new MyJson.JsonNode_ValueNumber(-2);
                    json["msg"] = new MyJson.JsonNode_ValueString("parse fail.");
                    await context.Response.WriteAsync(json.ToString());

                    return;
                }
            }
        }
Example #45
0
        public static MyJson.JsonNode_Object Export(NeoModule module, byte[] script, Dictionary <int, int> addrConvTable)
        {
            var sha256 = System.Security.Cryptography.SHA256.Create();

            byte[] hash256   = sha256.ComputeHash(script);
            var    ripemd160 = new Neo.Cryptography.RIPEMD160Managed();
            var    hash      = ripemd160.ComputeHash(hash256);

            var outjson = new MyJson.JsonNode_Object();

            //hash
            StringBuilder sb = new StringBuilder();

            sb.Append("0x");
            foreach (var b in hash.Reverse().ToArray())
            {
                sb.Append(b.ToString("x02"));
            }
            outjson.SetDictValue("hash", sb.ToString());

            //functions
            var methods = new MyJson.JsonNode_Array();

            outjson["methods"] = methods;

            List <string> names = new List <string>();

            foreach (var function in module.mapMethods)
            {
                var mm = function.Value;
                if (mm.inSmartContract == false)
                {
                    continue;
                }
                if (mm.isPublic == false)
                {
                    continue;
                }

                var funcsign = new MyJson.JsonNode_Object();
                methods.Add(funcsign);
                funcsign.SetDictValue("name", function.Value.displayName);
                if (names.Contains(function.Value.displayName))
                {
                    throw new Exception("abi not allow same name functions");
                }
                names.Add(function.Value.displayName);
                var offset = addrConvTable?[function.Value.funcaddr] ?? function.Value.funcaddr;
                funcsign.SetDictValue("offset", offset.ToString());
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }

                var rtype = ConvType(mm.returntype);
                funcsign.SetDictValue("returnType", rtype);
            }

            //events
            var eventsigns = new MyJson.JsonNode_Array();

            outjson["events"] = eventsigns;
            foreach (var events in module.mapEvents)
            {
                var mm       = events.Value;
                var funcsign = new MyJson.JsonNode_Object();
                eventsigns.Add(funcsign);

                funcsign.SetDictValue("name", events.Value.displayName);
                MyJson.JsonNode_Array funcparams = new MyJson.JsonNode_Array();
                funcsign["parameters"] = funcparams;
                if (mm.paramtypes != null)
                {
                    foreach (var v in mm.paramtypes)
                    {
                        var ptype = ConvType(v.type);
                        var item  = new MyJson.JsonNode_Object();
                        funcparams.Add(item);

                        item.SetDictValue("name", v.name);
                        item.SetDictValue("type", ptype);
                    }
                }
                //event do not have returntype in nep3
                //var rtype = ConvType(mm.returntype);
                //funcsign.SetDictValue("returntype", rtype);
            }

            return(outjson);
        }
    void OnGUI()
    {
        bool bbox = GUI.Toggle(new Rect(-100 + Screen.width / 2, 0, 200, 30), bShowBox, "显示碰撞盒子");

        if (bbox != bShowBox)
        {
            bShowBox = bbox;
            foreach (var c in battleField.createChars)
            {
                c.Value.aniplayer.IsShowBoxLine = bbox;
            }
        }
        var oc = GUI.color;
        int y  = 0;

        foreach (var p in battleField.portals)
        {
            if (p.Key == activePortal)
            {
                GUI.color = new Color(0.6f, 0.6f, 1.0f);
            }
            else
            {
                GUI.color = Color.white;
            }
            if (GUI.Button(new Rect(0, y * 30, 100, 30), "入口:" + p.Key))
            {
                activePortal = p.Key;
            }
            y++;
        }
        GUI.color = oc;

        if (string.IsNullOrEmpty(activePortal) == false)
        {
            y = 0;
            foreach (var c in battleField.canUsedCharactors)
            {
                if (GUI.Button(new Rect(Screen.width - 200, y * 30, 200, 30), "创建角色:" + c))
                {
                    if (activePortal == "playerin")
                    {//替换玩家控制角色
                        //杀死之前的
                        var list = battleField.GetCCNotDeathBySide(1);
                        if (list.Count > 0)
                        {
                            battleField.Cmd_Char_Death(list[0].idCare);
                        }
                        //创建与定位
                        var p = new MyJson.JsonNode_Object();
                        p["pushbox"] = new MyJson.JsonNode_ValueNumber(true);
                        int cc = battleField.Cmd_CreateChar("char/" + c.Key, 1, p);
                        battleField.Cmd_Char_Pos(cc, battleField.portals[activePortal]);
                        //注册控制器
                        battleField.RegCharactorController(new CharController_Direct(cc, 1, FBJoy2.g_joy));
                        //摄像机跟随
                        cameraFollow.FollowObj = battleField.GetRealChar(cc).transform;
                        //其他
                        battleField.GetRealChar(cc).transform.GetComponent <FB.FFSM.com_FightFSM>().debugMode = false;
                        battleField.GetRealChar(cc).aniplayer.IsShowBoxLine = bShowBox;
                    }
                    else
                    {//创建一个渣
                        //创建与定位
                        var p = new MyJson.JsonNode_Object();
                        p["pushbox"] = new MyJson.JsonNode_ValueNumber(false);
                        int cc = battleField.Cmd_CreateChar("char/" + c.Key, 2, p);
                        battleField.Cmd_Char_Pos(cc, battleField.portals[activePortal]);
                        //注册控制器
                        var ai = new Input_AI();
                        battleField.RegCharactorController(new CharController_Direct(cc, 2, null));
                        //其他
                        battleField.GetRealChar(cc).transform.GetComponent <FB.FFSM.com_FightFSM>().debugMode = false;
                        battleField.GetRealChar(cc).aniplayer.IsShowBoxLine = bShowBox;
                    }
                }
                y++;
            }
        }
    }
Example #47
0
        public static MyJson.JsonNode_Object ExportDebugInfo(string avmName, NeoModule module)
        {
            var outjson = new MyJson.JsonNode_Object();

            var           debugMap          = new List <DebugMapEntry>();
            DebugMapEntry currentDebugEntry = null;

            var fileMap = new Dictionary <string, int>();

            List <byte> bytes = new List <byte>();

            foreach (var c in module.total_Codes.Values)
            {
                if (c.debugcode != null && c.debugline > 0 && c.debugline < 2000)
                {
                    currentDebugEntry          = new DebugMapEntry();
                    currentDebugEntry.startOfs = debugMap.Count > 0 ? bytes.Count : 0;
                    currentDebugEntry.endOfs   = currentDebugEntry.startOfs;
                    currentDebugEntry.url      = c.debugcode;
                    currentDebugEntry.line     = c.debugline;

                    if (!fileMap.ContainsKey(c.debugcode))
                    {
                        fileMap[c.debugcode] = fileMap.Count + 1;
                    }

                    debugMap.Add(currentDebugEntry);
                }
                else
                if (currentDebugEntry != null)
                {
                    currentDebugEntry.endOfs = bytes.Count;
                }
                bytes.Add((byte)c.code);
                if (c.bytes != null)
                {
                    for (var i = 0; i < c.bytes.Length; i++)
                    {
                        bytes.Add(c.bytes[i]);
                    }
                }
            }

            var hash = CalculateMD5(bytes.ToArray());

            string compilerName = System.AppDomain.CurrentDomain.FriendlyName.ToLowerInvariant();
            var    version      = Assembly.GetEntryAssembly().GetName().Version.ToString();

            var avmInfo = new MyJson.JsonNode_Object();

            avmInfo.Add("name", new MyJson.JsonNode_ValueString(avmName));
            avmInfo.Add("hash", new MyJson.JsonNode_ValueString(hash));

            var compilerInfo = new MyJson.JsonNode_Object();

            compilerInfo.Add("name", new MyJson.JsonNode_ValueString(compilerName));
            compilerInfo.Add("version", new MyJson.JsonNode_ValueString(version));

            var fileInfo = new MyJson.JsonNode_Array();

            foreach (var entry in fileMap)
            {
                var fileEntry = new MyJson.JsonNode_Object();
                fileEntry.Add("id", new MyJson.JsonNode_ValueNumber(entry.Value));
                fileEntry.Add("url", new MyJson.JsonNode_ValueString(entry.Key));
                fileInfo.AddArrayValue(fileEntry);
            }

            var mapInfo = new MyJson.JsonNode_Array();

            foreach (var entry in debugMap)
            {
                if (!fileMap.ContainsKey(entry.url))
                {
                    continue;
                }

                var fileID = fileMap[entry.url];

                var mapEntry = new MyJson.JsonNode_Object();
                mapEntry.Add("start", new MyJson.JsonNode_ValueNumber(entry.startOfs));
                mapEntry.Add("end", new MyJson.JsonNode_ValueNumber(entry.endOfs));
                mapEntry.Add("file", new MyJson.JsonNode_ValueNumber(fileID));
                mapEntry.Add("line", new MyJson.JsonNode_ValueNumber(entry.line));
                mapInfo.AddArrayValue(mapEntry);
            }

            outjson["avm"]      = avmInfo;
            outjson["compiler"] = compilerInfo;
            outjson["files"]    = fileInfo;
            outjson["map"]      = mapInfo;

            return(outjson);
        }
Example #48
0
    void SaveItem()
    {
        //GameObject setobj = null;//选中的对象
        //bool bUseHashName = true;//是否使用hash作为资源文件名
        //string exportResult = null;//导出结果
        //string exportPath = null;//导出路径
        //bool bUseHashTreeName = false;//是否使用hash作为导出节点名
        //string exportNodeName = "";//导出节点名称

        nodeParser.nodeParser np = new nodeParser.nodeParser();
        np.SaveNode(this.setobj);//先强制使用HashName

        if (System.IO.Directory.Exists(exportPath) == false)
            System.IO.Directory.CreateDirectory(exportPath);
        string respath = System.IO.Path.Combine(exportPath, "resources");
        if (System.IO.Directory.Exists(respath) == false)
            System.IO.Directory.CreateDirectory(respath);

        MyJson.JsonNode_Array indexfile = new MyJson.JsonNode_Array();
        foreach (var f in np.bufs)
        {
            //写入文件
            {
                var file = System.IO.Path.Combine(respath, f.Key);
                System.IO.File.WriteAllBytes(file, f.Value);
            }
            //记录索引
            MyJson.JsonNode_Object indexitem = new MyJson.JsonNode_Object();
            indexitem["Name"] = new MyJson.JsonNode_ValueString("resources/" + f.Key);
            indexitem["Length"] = new MyJson.JsonNode_ValueNumber(f.Value.Length);
            indexfile.Add(indexitem);
        }
        indexfile.Sort((a, b) =>
        {
            return string.Compare(a.asDict()["Name"].AsString(), b.asDict()["Name"].AsString());
        });
        {//保存索引文件
            byte[] indexcode = System.Text.Encoding.UTF8.GetBytes(indexfile.ToString());

            exportResult = exportNodeName;
            if (bUseHashTreeName)
            {
                exportResult = ResLibTool.ComputeHashString(indexcode);
            }
            string outfile = System.IO.Path.Combine(exportPath, exportResult + ".indexlist.txt");

            System.IO.File.WriteAllBytes(outfile, indexcode);
        }

    }
Example #49
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CSLE.SInstance sobj = ScriptObject as CSLE.SInstance;
            if (sobj == null) return null;
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            CSLE.SType stype=sobj.type;
            foreach (var m in stype.members)
            {
                if ((Type)m.Value.type.type == typeof(int))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((int)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(float))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((float)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(double))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueNumber((double)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(string))
                {
                    obj[m.Key] = new MyJson.JsonNode_ValueString((string)sobj.member[m.Key].value);
                }
                else if ((Type)m.Value.type.type == typeof(List<object>))
                {
                    //处理List
                    List<object> slist = sobj.member[m.Key].value as List<object>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;
                    foreach(var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<string>))
                {
                    var list =new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<string> slist = sobj.member[m.Key].value as List<string>;
                  
                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<int> slist = sobj.member[m.Key].value as List<int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<float> slist = sobj.member[m.Key].value as List<float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)m.Value.type.type == typeof(List<double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m.Key] = list;

                    List<double> slist = sobj.member[m.Key].value as List<double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m.Key] = ToJson(sobj.member[m.Key].value);
                }
                else
                {
                    Debug.Log("发现不能处理的类型:" + stype.Name + ":" + m.Key + ":" + m.Value.type.ToString());
                }
            }
            return obj;
        }
Example #50
0
        async Task test_setUpgrade()
        {
            byte[] pubkey_admin = ThinNeo.Helper.GetPublicKeyFromPrivateKey(adminPrikey);
            string address      = ThinNeo.Helper.GetAddressFromPublicKey(pubkey_admin);

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

            //从文件中读取合约脚本
            //byte[] script = System.IO.File.ReadAllBytes("C:\\Neo\\SmartContracts\\0x89151760dba47464bbed6600b651e210996a318b.avm"); //这里填你的合约所在地址
            byte[] script = System.IO.File.ReadAllBytes("C:\\Users\\wqq19\\Documents\\workspace\\solution\\OracleContract\\bin\\Debug\\0x2eaef11fa90014ccf4ae8bfabc0f58e7fc8bd591.avm");

            string str_script = ThinNeo.Helper.Bytes2HexString(script);

            byte[] aa = ThinNeo.Helper.HexString2Bytes(str_script);
            var    ss = 1 | 2 | 4;

            using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder())
            {
                //倒叙插入数据
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(bytes)" + str_script);
                array.AddArrayValue("(bytes)0710");
                array.AddArrayValue("(bytes)05");
                array.AddArrayValue("(int)" + 5);
                array.AddArrayValue("(str)合约升级测试");                                //name
                array.AddArrayValue("(str)1");                                     //version
                array.AddArrayValue("(str)ss");                                    //author
                array.AddArrayValue("(str)1");                                     //email
                array.AddArrayValue("(str)sssss");                                 //desc
                sb.EmitParamJson(array);                                           //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)upgrade")); //参数倒序入
                //var shash = Config.oracleAssetID;
                sb.EmitAppCall(shash);

                string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());
                byte[] postdata;
                var    url    = Helper.MakeRpcUrlPost(Config.api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
                var    result = await Helper.HttpPost(url, postdata);

                //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8);
                //var consume = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString();
                //decimal gas_consumed = decimal.Parse(consume);
                ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
                extdata.gas    = 1010;// Math.Ceiling(gas_consumed - 10);
                extdata.script = sb.ToArray();

                //拼装交易体
                ThinNeo.Transaction tran = Helper.makeTran(dir[Config.id_GAS], null, new ThinNeo.Hash256(Config.id_GAS), extdata.gas);
                tran.version = 1;
                tran.extdata = extdata;
                tran.type    = ThinNeo.TransactionType.InvocationTransaction;
                byte[] msg      = tran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, adminPrikey);
                tran.AddWitness(signdata, pubkey_admin, address);
                string txid    = tran.GetHash().ToString();
                byte[] data    = tran.GetRawData();
                string rawdata = ThinNeo.Helper.Bytes2HexString(data);
                url    = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
                result = await Helper.HttpPost(url, postdata);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }
        }
Example #51
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance;
            if (sobj == null) return null;
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            var stype = sobj.type;
            //    CSLE.SType stype=sobj.type;
            var ms = stype.GetFieldNames();
            foreach (var m in ms)
            {
                var field = stype.GetField(m);
                if (field.isStatic) continue;
                if ((Type)field.FieldType.TypeForSystem == typeof(int))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(float))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(double))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(string))
                {
                    obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]);
                }

        //        else if ((Type)m.Value.type.type == typeof(List<object>))
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<CLRSharp.CLRSharp_Instance>))
                {
                    //处理List
                    List<CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List<CLRSharp.CLRSharp_Instance>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;
                    foreach (var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<string>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<string> slist = sobj.Fields[m] as List<string>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<int> slist = sobj.Fields[m] as List<int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<float> slist = sobj.Fields[m] as List<float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List<double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List<double> slist = sobj.Fields[m] as List<double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if (field.FieldType is CLRSharp.ICLRType_Sharp)
                //        else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m] = ToJson(sobj.Fields[m]);
                }
                else
                {
                    Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString());
                }
            }
            return obj;
        }
Example #52
0
        public static object FromJson(object ScriptType, MyJson.JsonNode_Object data)
        {
            CLRSharp.ICLRType_Sharp    type = ScriptType as CLRSharp.ICLRType_Sharp;
            CLRSharp.CLRSharp_Instance s    = new CLRSharp.CLRSharp_Instance(type);
            type.GetMethod(".ctor", CLRSharp.MethodParamList.constEmpty()).Invoke(null, s, new object[] { });


            foreach (var m in type.GetFieldNames())
            {
                var field = type.GetField(m);
                if (field.isStatic)
                {
                    continue;
                }
                //s.Fields[m] = field.DefValue;

                //        s.member[m.Key] = new CSLE.CLS_Content.Value();
                //        s.member[m.Key].type = m.Value.type.type;
                //        s.member[m.Key].value = m.Value.type.DefValue;//先填默认值

                if (data.ContainsKey(m) == false)//json中没有的部分填默认值
                {
                    continue;
                }
                if (data[m].IsNull())//json中没有的部分填默认值
                {
                    continue;
                }

                {
                    if ((Type)field.FieldType.TypeForSystem == typeof(int))
                    {
                        s.Fields[m] = data[m].AsInt();
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(float))
                    {
                        s.Fields[m] = (float)data[m].AsDouble();
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(double))
                    {
                        s.Fields[m] = data[m].AsDouble();
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(string))
                    {
                        s.Fields[m] = data[m].AsString();
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>))
                    {
                        //处理List
                        List <CLRSharp.CLRSharp_Instance> list = new List <CLRSharp.CLRSharp_Instance>();
                        s.Fields[m] = list;
                        var subtype = field.FieldType.SubTypes[0];
                        foreach (MyJson.JsonNode_Object item in data[m].AsList())
                        {
                            list.Add(FromJson(subtype, item) as CLRSharp.CLRSharp_Instance);
                        }
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>))
                    {
                        List <string> list = new List <string>();
                        s.Fields[m] = list;
                        foreach (MyJson.JsonNode_ValueString item in data[m].AsList())
                        {
                            list.Add(item);
                        }
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>))
                    {
                        List <int> list = new List <int>();
                        s.Fields[m] = list;
                        foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList())
                        {
                            list.Add(item);
                        }
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>))
                    {
                        List <float> list = new List <float>();
                        s.Fields[m] = list;
                        foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList())
                        {
                            list.Add(item);
                        }
                    }
                    else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>))
                    {
                        List <double> list = new List <double>();
                        s.Fields[m] = list;
                        foreach (MyJson.JsonNode_ValueNumber item in data[m].AsList())
                        {
                            list.Add(item);
                        }
                    }
                    else if (field.FieldType.TypeForSystem == typeof(CLRSharp.CLRSharp_Instance))//其他嵌套脚本类型
                    {
                        s.Fields[m] = FromJson(field.FieldType, data[m] as MyJson.JsonNode_Object);
                    }
                    else
                    {
                        Logger.Log("发现不能处理的类型:" + type + ":" + m + ":" + type.GetField(m).FieldType);
                    }
                }
            }


            return(s);
        }
Example #53
0
        public object getRes(JsonRPCrequest req, string reqAddr)
        {
            JArray result     = new JArray();
            string resultStr  = string.Empty;
            string findFliter = string.Empty;
            string sortStr    = string.Empty;

            try
            {
                switch (req.method)
                {
                case "signup":
                {
                    string password = (string)req.@params[0];
                    ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet();
                    nep6wallet.CreateAccount(password);
                    result = new JArray()
                    {
                        JObject.Parse(nep6wallet.GetWallet().ToString())
                    };
                }
                break;

                case "signin":
                {
                    string wif        = (string)req.@params[0];
                    string str_wallet = (string)req.@params[1];
                    if (!string.IsNullOrEmpty(wif))
                    {
                        byte[]  bytes_prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
                        string  prikey       = ThinNeo.Helper.Bytes2HexString(bytes_prikey);
                        byte[]  bytes_pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(bytes_prikey);
                        string  pubkey       = ThinNeo.Helper.Bytes2HexString(bytes_pubkey);
                        string  address      = ThinNeo.Helper.GetAddressFromPublicKey(bytes_pubkey);
                        JObject Jo           = new JObject();
                        Jo[address] = prikey;
                        result      = new JArray()
                        {
                            Jo
                        };
                    }
                    else if (!string.IsNullOrEmpty(str_wallet))
                    {
                        MyJson.JsonNode_Object  wallet     = MyJson.Parse(str_wallet.Replace("\r\n", "")).AsDict();
                        ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(wallet);
                        JArray Ja = new JArray();
                        foreach (var account in nep6wallet.accounts)
                        {
                            JObject jObject = new JObject();
                            jObject[ThinNeo.Helper.GetAddressFromPublicKey(account.Value.ScriptHash)] = account.Value.nep2key;
                            Ja.Add(jObject);
                        }
                        result = Ja;
                    }
                }
                break;

                case "getassets":    //获取资产余额
                {
                    string  prikey  = (string)req.@params[0];
                    JArray  jArray  = new JArray();
                    JObject jObject = new JObject();
                    jObject["id"]    = "neo";
                    jObject["name"]  = "小蚁股";
                    jObject["value"] = 123;
                    jArray.Add(jObject);
                    jObject          = new JObject();
                    jObject["id"]    = "gas";
                    jObject["name"]  = "小蚁币";
                    jObject["value"] = 321;
                    jArray.Add(jObject);

                    result = jArray;
                }
                break;

                case "chargemoney":    //充钱
                {
                    string prikey = (string)req.@params[0];
                    Int64  value  = (Int64)req.@params[1];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "getbackmoney":    //退钱
                {
                    string prikey = (string)req.@params[0];
                    Int64  value  = (Int64)req.@params[1];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "bet":    //下注
                {
                    string prikey   = (string)req.@params[0];
                    string seasonid = (string)req.@params[1];
                    string gameid   = (string)req.@params[2];
                    Int64  value    = (Int64)req.@params[3];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "take":    //领奖
                {
                    string prikey   = (string)req.@params[0];
                    string seasonid = (string)req.@params[1];
                    string gameid   = (string)req.@params[2];
                    result = getJAbyKV("result", "success");
                }
                break;

                case "getseasoninfo":     //获得赛季信息
                {
                    string seasonid = (string)req.@params[0];
                    if (string.IsNullOrEmpty(seasonid))
                    {
                    }
                    else
                    {
                    }
                    JObject jObject = new JObject();
                    jObject["seasonid"] = "1";
                    JArray jArray = new JArray();
                    for (var i = 1; i < 16; i++)
                    {
                        JObject jObject2 = new JObject();
                        jObject2["gameid"] = i.ToString();
                        jObject2["team1"]  = i;
                        jObject2["team2"]  = i + 1;
                        jObject2["winner"] = i;
                        jArray.Add(jObject2);
                    }
                    jObject["info"] = jArray;
                    result          = new JArray()
                    {
                        jObject
                    };
                }
                break;

                case "getgamestate":    //获取比赛状态
                {
                    Random rd = new Random();
                    var    i  = rd.Next(0, 17);
                    result = getJAbyKV("result", i);
                }
                break;
                }
                if (result.Count == 0)
                {
                    JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist");

                    return(resE);
                }
            }
            catch (Exception e)
            {
                JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message);

                return(resE);
            }

            JsonPRCresponse res = new JsonPRCresponse();

            res.jsonrpc = req.jsonrpc;
            res.id      = req.id;
            res.result  = result;

            return(res);
        }
Example #54
0
        async public Task Demo()
        {
            Console.WriteLine("请输入你的wif");
            string wif = Console.ReadLine();

            if (string.IsNullOrEmpty(wif))
            {
                wif = "";  //这里填你用于支付发布合约消耗的私钥
            }
            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

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

            //从文件中读取合约脚本
            byte[] script = System.IO.File.ReadAllBytes("Nep5.5gas_Contract.avm"); //这里填你的合约所在地址
            Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script));
            Console.WriteLine("合约脚本hash:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script).data.ToArray().Reverse().ToArray()));
            byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710"); //这里填合约入参  例:0610代表(string,[])
            byte[] return_type     = ThinNeo.Helper.HexString2Bytes("05");   //这里填合约的出参
            int    need_storage    = 1;
            int    need_nep4       = 0;
            int    need_canCharge  = 4;
            string name            = "sgas";
            string version         = "1.0";
            string auther          = "NEL";
            string email           = "0";
            string description     = "0";

            using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder())
            {
                var ss = need_storage | need_nep4 | need_canCharge;
                //倒叙插入数据
                sb.EmitPushString(description);
                sb.EmitPushString(email);
                sb.EmitPushString(auther);
                sb.EmitPushString(version);
                sb.EmitPushString(name);
                sb.EmitPushNumber(need_storage | need_nep4 | need_canCharge);
                sb.EmitPushBytes(return_type);
                sb.EmitPushBytes(parameter__list);
                sb.EmitPushBytes(script);
                sb.EmitSysCall("Neo.Contract.Create");

                string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());
                //用ivokescript试运行并得到消耗

                byte[] postdata;
                var    url    = Helper.MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
                var    result = await Helper.HttpPost(url, postdata);

                //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8);
                var     consume                 = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString();
                decimal gas_consumed            = decimal.Parse(consume);
                ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
                extdata.script = sb.ToArray();

                //Console.WriteLine(ThinNeo.Helper.Bytes2HexString(extdata.script));
                extdata.gas = Math.Ceiling(gas_consumed - 10);

                //拼装交易体
                ThinNeo.Transaction tran = makeTran(dir, null, new ThinNeo.Hash256(id_GAS), extdata.gas);
                tran.version = 1;
                tran.extdata = extdata;
                tran.type    = ThinNeo.TransactionType.InvocationTransaction;
                byte[] msg      = tran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
                tran.AddWitness(signdata, pubkey, address);
                string txid    = tran.GetHash().ToString();
                byte[] data    = tran.GetRawData();
                string rawdata = ThinNeo.Helper.Bytes2HexString(data);

                //Console.WriteLine("scripthash:"+scripthash);

                url    = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
                result = await Helper.HttpPost(url, postdata);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }
        }
Example #55
0
        //獲取下位機的固件和插件的版本信息
        private async void GetPackageInfo()
        {
            ForbidAllBtnClick();

            byte[] postdata;
            //从服务器获取固件和插件的版本信息
            var url = HttpHelper.MakeRpcUrlPost("https://apiaggr.nel.group/api/testnet", "getneodunversion", out postdata);
            var res = await HttpHelper.HttpPost(url, postdata);

            var json = MyJson.Parse(res).AsDict()["result"].AsList();

            servicePackageInfo = new MyJson.JsonNode_Object();
            for (var i = 0; i < json.Count; i++)
            {
                servicePackageInfo[json[i].AsDict()["Name"].AsString()] = new MyJson.JsonNode_ValueString(json[i].AsDict()["Version"].AsString());
            }

            //获取固件插件版本号
            //MyJson.JsonNode_Object JA_PackageInfo = await driverControl.GetPackageInfo();
            Result result = await ManagerControl.Ins.ToDo(EnumControl.GetPackage);

            MyJson.JsonNode_Object JA_PackageInfo = (MyJson.JsonNode_Object)result.data;

            if (JA_PackageInfo != null && JA_PackageInfo.Count > 0)
            {
                this.label_FrameworkVersion.Content = "Framework " + JA_PackageInfo["Framework"].ToString();
                double nowgjversion = double.Parse(JA_PackageInfo["Framework"].ToString());
                //如果下位机固件版本低于服务器版本就显示升级按钮
                if (nowgjversion < double.Parse(servicePackageInfo["Framework"].ToString()))
                {
                    this.Btn_Framework_update.Visibility = Visibility.Visible;
                }
                else
                {
                    this.Btn_Framework_update.Visibility = Visibility.Hidden;
                }


                this.listbox.Items.Clear();

                //现在只有neo 先这么搞
                //初始化 neo的boxlist
                var         demoItem      = this.listboxDemo.Items[0] as ListBoxItem;
                string      xaml          = System.Windows.Markup.XamlWriter.Save(demoItem);
                ListBoxItem item          = System.Windows.Markup.XamlReader.Parse(xaml) as ListBoxItem;
                var         img_icon      = item.FindName("img_icon") as Image;
                var         label_version = item.FindName("label_version") as Label;
                label_version.Content = "Neo 0.00";

                var btn_install = item.FindName("btn_install") as Button;
                btn_install.Click += new RoutedEventHandler(Click_Install);
                if (this.FindName("Neo_" + btn_install.Name) != null)
                {
                    this.UnregisterName("Neo_" + btn_install.Name);
                }
                this.RegisterName("Neo_" + btn_install.Name, btn_install);
                btn_install.Visibility = Visibility.Visible;
                this.list_btns.Add(btn_install);

                var btn_uninstall = item.FindName("btn_uninstall") as Button;
                btn_uninstall.Click += new RoutedEventHandler(Click_Uninstall);
                if (this.FindName("Neo_" + btn_uninstall.Name) != null)
                {
                    this.UnregisterName("Neo_" + btn_uninstall.Name);
                }
                this.RegisterName("Neo_" + btn_uninstall.Name, btn_uninstall);
                btn_uninstall.Visibility = Visibility.Collapsed;
                this.list_btns.Add(btn_uninstall);

                var btn_update = item.FindName("btn_update") as Button;
                btn_update.Click += new RoutedEventHandler(Click_Install);
                if (this.FindName("Neo_" + btn_update.Name) != null)
                {
                    this.UnregisterName("Neo_" + btn_update.Name);
                }
                this.RegisterName("Neo_" + btn_update.Name, btn_update);
                btn_update.Visibility = Visibility.Collapsed;
                this.list_btns.Add(btn_update);

                var git_loading = item.FindName("gif_loading") as Image;
                if (this.FindName("Neo_" + git_loading.Name) != null)
                {
                    this.UnregisterName("Neo_" + git_loading.Name);
                }
                this.RegisterName("Neo_" + git_loading.Name, git_loading);
                git_loading.Visibility = Visibility.Collapsed;

                if (JA_PackageInfo.ContainsKey("Neo"))
                {
                    var verson = float.Parse(JA_PackageInfo["Neo"].ToString());
                    label_version.Content = "Neo " + verson.ToString("0.00");
                    if (verson < double.Parse(servicePackageInfo["Neo"].ToString()))
                    {
                        btn_update.Visibility    = Visibility.Visible;
                        btn_update.Margin        = new Thickness(-160, 10, 0, 0);
                        btn_uninstall.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        btn_uninstall.Visibility = Visibility.Visible;
                        btn_update.Visibility    = Visibility.Hidden;
                    }
                    btn_install.Visibility = Visibility.Hidden;
                }
                else
                {
                    label_version.Content  = "Neo 未安装";
                    btn_install.Visibility = Visibility.Visible;
                }
                this.listbox.Items.Add(item);
            }
            else
            {
                this.Btn_Framework_update.Visibility = Visibility.Hidden;
            }
            Result addressList = await ManagerControl.Ins.ToDo(EnumControl.GetAddress);

            AllowAllBtnClick();
        }
Example #56
0
 static public void invokescrept(Action <bool, WWW> func_cmd, MyJson.JsonNode_Object paparms)
 {
     sdk_http._instance.invokescrept(func_cmd, paparms);
 }
Example #57
0
        public static MyJson.JsonNode_Object ToJson(object ScriptObject)
        {
            CLRSharp.CLRSharp_Instance sobj = ScriptObject as CLRSharp.CLRSharp_Instance;
            if (sobj == null)
            {
                return(null);
            }
            MyJson.JsonNode_Object obj = new MyJson.JsonNode_Object();
            var stype = sobj.type;
            //    CSLE.SType stype=sobj.type;
            var ms = stype.GetFieldNames();

            foreach (var m in ms)
            {
                var field = stype.GetField(m);
                if (field.isStatic)
                {
                    continue;
                }
                if ((Type)field.FieldType.TypeForSystem == typeof(int))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((int)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(float))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((float)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(double))
                {
                    obj[m] = new MyJson.JsonNode_ValueNumber((double)sobj.Fields[m]);
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(string))
                {
                    obj[m] = new MyJson.JsonNode_ValueString((string)sobj.Fields[m]);
                }

                //        else if ((Type)m.Value.type.type == typeof(List<object>))
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <CLRSharp.CLRSharp_Instance>))
                {
                    //处理List
                    List <CLRSharp.CLRSharp_Instance> slist = sobj.Fields[m] as List <CLRSharp.CLRSharp_Instance>;
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;
                    foreach (var item in slist)
                    {
                        list.Add(ToJson(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <string>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <string> slist = sobj.Fields[m] as List <string>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueString(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <int>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <int> slist = sobj.Fields[m] as List <int>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <float>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <float> slist = sobj.Fields[m] as List <float>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if ((Type)field.FieldType.TypeForSystem == typeof(List <double>))
                {
                    var list = new MyJson.JsonNode_Array();
                    obj[m] = list;

                    List <double> slist = sobj.Fields[m] as List <double>;

                    foreach (var item in slist)
                    {
                        list.Add(new MyJson.JsonNode_ValueNumber(item));
                    }
                }
                else if (field.FieldType is CLRSharp.ICLRType_Sharp)
                //        else if ((CSLE.SType)m.Value.type.type != null)//其他嵌套脚本类型
                {
                    obj[m] = ToJson(sobj.Fields[m]);
                }
                else
                {
                    Logger.Log("发现不能处理的类型:" + stype.Name + ":" + m + ":" + field.FieldType.ToString());
                }
            }
            return(obj);
        }
Example #58
0
        private void downloadUserInfo()
        {
            try
            {
#if DEBUG
                String[] qqs =
                {
                    //"1532931245",
                    //"657565846",
                    "2517172830",
                    //"305723370",
                    //"947087352",
                };
                for (int i = 0; i < qqs.Length; i++)
                {
                    UserInfoDB info = new UserInfoDB();
                    info.qq = qqs[i];
                    dblist.Add(info);
                }
#else
                PostData nvc = new PostData();
                Func.putPassWord(nvc);
                nvc.Add("order", "time");
                nvc.Add("desc", "DESC");
                nvc.Add("start", "0");
                nvc.Add("count", "0");
                if (nvc != null)
                {
                    string sttuas = Func.HttpPostData(Config.GETLIST_ZONE_URL, 10000, nvc);
                    if (sttuas.Length > 10)
                    {
                        MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array;
                        for (int i = 0; i < jsons.GetListCount(); i++)
                        {
                            MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object;
                            UserInfoDB             info = new UserInfoDB();
                            info.qq               = json["qq"].AsString();
                            info.pqq              = json["pqq"].AsString();
                            info.nickname         = Func.MyUrlDeCode(json["nickname"].AsString());
                            info.age              = json["age"].AsInt();
                            info.sex              = Func.MyUrlDeCode(json["sex"].AsString());
                            info.birthday         = Func.MyUrlDeCode(json["birthday"].AsString());
                            info.mood             = json["mood"].AsInt();
                            info.photo            = json["photo"].AsInt();
                            info.blog             = json["blog"].AsInt();
                            info.heat             = json["heat"].AsInt();
                            info.zone_authority   = json["zone_authority"].AsInt();
                            info.friend_authority = json["friend_authority"].AsInt();
                            info.logintime        = Func.MyUrlDeCode(json["logintime"].AsString());
                            info.label            = Func.MyUrlDeCode(json["label"].AsString());
                            info.addfriend        = json["addfriend"].AsInt();
                            info.used             = json["used"].AsInt();
                            dblist.Add(info);
                        }
                    }
                }
#endif
            }
            catch (Exception e)
            {
                LogFile.add(e.ToString(), "Stopping.cs:updateUserInfo", 1);
            }
        }
Example #59
0
    public MyJson.IJsonNode Parser(Component com, NeedList needlist)
    {
        var json = new MyJson.JsonNode_Object();

        return(json);
    }
Example #60
0
        public async Task publishContract()
        {
            string wif = "L1PSC3LRShi51xHAX2KN9oCFqETrZQhnzhKVu5zbrzdDpxF1LQz3";

            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

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

            byte[] script = System.IO.File.ReadAllBytes("0xccd651a5e7d9f4dc698353970df7b7180139cbbe.avm");
            Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script));
            Console.WriteLine("合约脚本Hash:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script).data.ToArray().Reverse().ToArray()));
            byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710");
            byte[] return_type     = ThinNeo.Helper.HexString2Bytes("05");
            int    need_storage    = 1;
            int    need_nep4       = 0;
            int    need_canCharge  = 4;
            string name            = "mygas";
            string version         = "1.0";
            string auther          = "LZ";
            string email           = "0";
            string description     = "0";

            using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder()) {
                var ss = need_storage | need_nep4 | need_canCharge;
                sb.EmitPushString(description);
                sb.EmitPushString(email);
                sb.EmitPushString(auther);
                sb.EmitPushString(version);
                sb.EmitPushString(name);
                sb.EmitPushNumber(ss);
                sb.EmitPushBytes(return_type);
                sb.EmitPushBytes(parameter__list);
                sb.EmitPushBytes(script);
                sb.EmitSysCall("Neo.Contract.Create");

                string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());

                byte[] postdata;
                var    url    = Helper.MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
                var    result = await Helper.HttpPost(url, postdata);

                //return;

                var     consume                 = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString();
                decimal gas_consumed            = decimal.Parse(consume);
                ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
                extdata.script = sb.ToArray();

                extdata.gas = Math.Ceiling(gas_consumed - 10);

                ThinNeo.Transaction tran = makeTran(dir, null, new ThinNeo.Hash256(id_GAS), extdata.gas);
                tran.version = 1;
                tran.extdata = extdata;
                tran.type    = ThinNeo.TransactionType.InvocationTransaction;
                byte[] msg      = tran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
                tran.AddWitness(signdata, pubkey, address);
                string txid    = tran.GetHash().ToString();
                byte[] data    = tran.GetRawData();
                string rawdata = ThinNeo.Helper.Bytes2HexString(data);

                url    = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
                result = await Helper.HttpPost(url, postdata);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }
        }