public static async Task <Dictionary <string, List <UTXO> > > GetByAddress(string dumpPath, string address) { Dictionary <string, List <UTXO> > dir = new Dictionary <string, List <UTXO> >(); foreach (string filePath in Directory.GetFiles(dumpPath + "/utxo")) { if (filePath.Contains(address)) { using (var reader = File.OpenText(filePath)) { JObject jObject = JObject.Parse(await reader.ReadToEndAsync()); UTXO utxo = new UTXO(jObject["addr"].ToString(), new ThinNeo.Hash256(jObject["txid"].ToString()), jObject["asset"].ToString(), decimal.Parse(jObject["value"].ToString()), int.Parse(jObject["n"].ToString())); if (dir.ContainsKey(jObject["asset"].ToString())) { if (jObject["used"].ToString() == "0") { dir[jObject["asset"].ToString()].Add(utxo); } } else { List <UTXO> l = new List <UTXO>(); l.Add(utxo); dir[jObject["asset"].ToString()] = l; } } } } return(dir); }
async public override Task Run(Dictionary <String, Object> args) { _logger.LogInformation("{0} Thread ID: {1}", this.GetType().ToString(), Thread.CurrentThread.ManagedThreadId); string wif = args["wif"].ToString(); string targetAddress = args["targetAddress"].ToString(); decimal sendCount = Decimal.Parse(args["sendCount"].ToString()); 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 UTXO.GetByAddress( _config.GetSection("Data").GetValue <string>("DumpPath"), 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("http://182.254.221.14:10332", "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()); _logger.LogInformation("Transaxtion response: {0}", resJO.ToString()); }