private static decimal getTotalBalance(string[] addresses, bool writeToLog = false) { //https://blockchain.info/multiaddr?cors=true&active=1F1xcRt8H8Wa623KqmkEontwAAVqDSAWCV|1Ngv5Zm43xJLSMY9dsHzHu4NkffZFmfJwt string url = string.Format("https://blockchain.info/multiaddr?cors=true&active={0}", string.Join("|", addresses)); WebClient wc = new WebClient(); string html = wc.DownloadString(url); BitRefResponse brResponse = Deserialize <BitRefResponse>(html); if (writeToLog) { string path = @"C:\Users\Bitusi\Documents\bit2c\btc-balance.txt"; using (StreamWriter sw = File.AppendText(path)) { foreach (var item in brResponse.addresses) { sw.WriteLine(string.Format("{0} {1}", item.address, item.final_balance / 100000000m)); } } } if (brResponse == null) { Console.Write("! address?"); } long sum = (from c in brResponse.addresses select c.final_balance).Sum(); decimal balance = sum / 100000000m; return(balance); }
public static List <addressBalance> GetBalanceByDate(List <string> addresses) { //https://blockchain.info/multiaddr?cors=true&active=1F1xcRt8H8Wa623KqmkEontwAAVqDSAWCV|1Ngv5Zm43xJLSMY9dsHzHu4NkffZFmfJwt string url = string.Format("https://blockchain.info/multiaddr?cors=true&active={0}", string.Join("|", addresses)); WebClient wc = new WebClient(); string html = wc.DownloadString(url); BitRefResponse brResponse = Deserialize <BitRefResponse>(html); List <addressBalance> addressesBalance = new List <addressBalance>(); if (brResponse == null) { Console.Write("! address?"); } foreach (Tx tx in brResponse.txs) { string addressFetched = string.Empty; decimal balance = 0; DateTime inDate = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(tx.time); foreach (Input input in tx.inputs) { if (input.prev_out != null && addresses.Contains(input.prev_out.addr)) { addressFetched = input.prev_out.addr; balance = (Convert.ToInt64(tx.balance)) / 100000000m; } } foreach (Out outTx in tx.@out) { if (addresses.Contains(outTx.addr)) { addressFetched = outTx.addr; balance = (Convert.ToInt64(tx.balance)) / 100000000m; } } if (!string.IsNullOrEmpty(addressFetched)) { addressBalance ab = new addressBalance(); ab.address = addressFetched; ab.balance = balance; ab.inDate = inDate; addressesBalance.Add(ab); } } return(addressesBalance); }