Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }