Esempio n. 1
0
        /// <summary>
        /// 取的該錢包有多少餘額
        /// </summary>
        /// <param name="ssAddress">錢包地址</param>
        /// <param name="confirmBalance">已確認的</param>
        /// <param name="unConfirmBalance">未確認的</param>
        public static void GetWalletBalance(string ssAddress, out decimal confirmBalance, out decimal unConfirmBalance)
        {
            //幾個確認判斷為已經確認完成
            //預設你可以設定為 5
            //但是因為測試所以>0 , 我就判斷已經當作確認過了
            var confirmThres = 4;



            QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet);
            var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(ssAddress), false).Result;

            confirmBalance   = 0;
            unConfirmBalance = 0;
            if (balance.Operations.Count > 0)
            {
                var unspentCoins          = new System.Collections.Generic.List <NBitcoin.Coin>();
                var unspentCoinsConfirmed = new System.Collections.Generic.List <NBitcoin.Coin>();
                foreach (var operation in balance.Operations)
                {
                    unspentCoins.AddRange(operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin));
                    if (operation.Confirmations > confirmThres)
                    {
                        unspentCoinsConfirmed.AddRange(operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin));
                    }
                    unConfirmBalance = unspentCoins.Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC));
                    confirmBalance   = unspentCoinsConfirmed.Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC));
                }
            }
        }
Esempio n. 2
0
        private static async Task GetUnspentOnce(Settings settings, int count)
        {
            QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient
                                                          (settings.BaseUrl, settings.Network);

            var balanceOutput = await client.GetBalance(settings.Address, true);

            var serializableBalanceOutput = balanceOutput.GetSerializable();

            var serializedBalance = JsonConvert.SerializeObject(serializableBalanceOutput);
            var filename          = String.Format("{0}\\log{1}.txt", settings.OutputDir, count);

            SaveStringToFile(serializedBalance, filename);
        }
Esempio n. 3
0
        private static void SendRecords(string walletAddress)
        {
            QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet);
            var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(walletAddress), false).Result;

            foreach (var operation in balance.Operations)
            {
                var transSum = operation.SpentCoins.Select(coin => coin as NBitcoin.Coin).Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC));

                if (transSum > 0)
                {
                    Console.WriteLine(operation.TransactionId + ":" + transSum);
                }
            }
        }
Esempio n. 4
0
        public static async Task <IList <SerializableCoin> > GetSpentCoins(Settings settings)
        {
            ConcurrentBag <SerializableCoin> coinCollection = new ConcurrentBag <SerializableCoin>();

            QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient
                                                          (settings.BaseUrl, settings.Network);

            var balanceOutput = await client.GetBalance(settings.Address, false);

            var serializableBalanceOutput = balanceOutput.GetSerializable();

            serializableBalanceOutput.Operations
            .Where(o => o.Confirmations >= settings.RequiredConfirmations)
            .Select(o => o.SpentCoins).ToList().ForEach(u => u.ForEach(uItem => coinCollection.Add(uItem)));

            return(coinCollection.ToList());
        }
Esempio n. 5
0
        private static void CheckWalletAllReceiveCoin(string walletAddress)
        {
            QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(NBitcoin.Network.TestNet);
            var balance = client.GetBalance(new NBitcoin.BitcoinPubKeyAddress(walletAddress), false).Result;

            Console.WriteLine("");
            Console.WriteLine("TransactionId                                                    : BitCoin , Index");
            Console.WriteLine("-------------------------------------------");

            foreach (var operation in balance.Operations)
            {
                Console.Write(operation.TransactionId + " : " + operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin).Sum(x => x.Amount.ToDecimal(NBitcoin.MoneyUnit.BTC)) + ",");


                //To highline INDEX so chnage color .
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine(string.Join(";", operation.ReceivedCoins.Select(coin => coin as NBitcoin.Coin).Select(x => x.Outpoint.N)));
                Console.ForegroundColor = ConsoleColor.White;
            }
        }
        public override async Task <string> GetTransactionHex(string transactionId)
        {
            var settings = SettingsProvider.GetSettings();

            string transactionHex = string.Empty;

            try
            {
                QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(settings.QBitNinjaBaseUrl, settings.Network);
                var qbitNinjaResponse = await client.GetTransaction(new uint256(transactionId));

                transactionHex = qbitNinjaResponse.Transaction.ToHex();
            }
            catch (Exception exp)
            {
                throw exp;
            }

            return(transactionHex);
        }
Esempio n. 7
0
            public List <Coin> GetCoinsByAddress(BitcoinAddress Address, Network net = null, int confirmations = 6)
            {
                QBitNinja.Client.QBitNinjaClient     cl = new QBitNinja.Client.QBitNinjaClient(net);
                QBitNinja.Client.Models.BalanceModel bm = cl.GetBalance(new BitcoinPubKeyAddress(Address.ToString())).Result;

                List <Coin> txs = new List <Coin>();

                foreach (var operation in bm.Operations)
                {
                    foreach (var cn in operation.ReceivedCoins)
                    {
                        if (operation.Confirmations >= confirmations)
                        {
                            Coin C = (Coin)cn;
                            txs.Add(C);
                        }
                    }
                }

                return(txs);
            }
Esempio n. 8
0
        public async Task <GetTransactionHexResult> GetTransactionHex(Settings settings, string transactionId)
        {
            string transactionHex = string.Empty;
            bool   errorOccured   = false;
            string errorMessage   = string.Empty;

            try
            {
                QBitNinja.Client.QBitNinjaClient client = new QBitNinja.Client.QBitNinjaClient(settings.QBitNinjaUrl, settings.Network);
                var qbitNinjaResponse = await client.GetTransaction(new uint256(transactionId));

                transactionHex = qbitNinjaResponse.Transaction.ToHex();
            }
            catch (Exception exp)
            {
                errorOccured = true;
                errorMessage = exp.ToString();
            }

            return(new GetTransactionHexResult {
                HasErrorOccurred = errorOccured,
                TransactionHex = transactionHex, Error = errorMessage
            });
        }