public void Load(string _pathlog, string _pathscript, string transid) { this.pathScript = _pathscript; if (transid.ToLower().IndexOf("0x") == 0) { transid = transid.Substring(2); } byte[] info = HexString2Bytes(transid); var filename = "0x" + ToHexString(info); var tranfile = System.IO.Path.Combine(_pathlog, filename + ".llvmhex.txt"); if (System.IO.File.Exists(tranfile) == false) { throw new Exception("load file error"); } var str = System.IO.File.ReadAllText(tranfile); var bts = ThinNeo.Helper.HexString2Bytes(str); using (var ms = new System.IO.MemoryStream(bts)) { var outms = llvm.QuickFile.FromFile(ms); var text = System.Text.Encoding.UTF8.GetString(outms.ToArray()); var json = MyJson.Parse(text) as MyJson.JsonNode_Object; fullLog = SmartContract.Debug.FullLog.FromJson(json); } //循环所有的 simvm.Execute(fullLog); }
public void Load(string _pathlog, string _pathscript, string transid) { this.pathScript = _pathscript; if (transid.ToLower().IndexOf("0x") == 0) { transid = transid.Substring(2); } byte[] info = HexString2Bytes(transid); var filename = "0x" + ToHexString(info); var tranfile = System.IO.Path.Combine(_pathlog, filename + ".fulllog.7z"); if (System.IO.File.Exists(tranfile) == false) { throw new Exception("你的数据源里没有log信息,他可能还没有同步,或者这不是一个智能合约交易"); } using (var ms = new System.IO.MemoryStream(System.IO.File.ReadAllBytes(tranfile))) { SevenZip.SevenZipExtractor e7z = new SevenZip.SevenZipExtractor(ms); var outms = new System.IO.MemoryStream(); e7z.ExtractFile(0, outms); var text = System.Text.Encoding.UTF8.GetString(outms.ToArray()); var json = MyJson.Parse(text) as MyJson.JsonNode_Object; fullLog = SmartContract.Debug.FullLog.FromJson(json); } //循环所有的 simvm.Execute(fullLog); }
public void Execute(SmartContract.Debug.FullLog FullLog) { State runstate = new State(); runstate.SetId(0); stateClone = new Dictionary <int, State>(); mapState = new Dictionary <SmartContract.Debug.LogOp, int>(); careinfo = new List <CareItem>(); ExecuteScript(runstate, FullLog.script); }