[C#] 手把手來玩比特幣 (Bitcoin) - 查詢餘額有多少,包含尚未確認的

上一篇文章提到,如何建立,還原比特幣錢包 ,這一篇我們來聊聊 怎麼取得某一個錢包的現在的餘額包括未尚未 confirm 完的
老話一句,請注意,該文章範例都是測試鏈上面的,如果你需要在正式鏈上面使用,請記得改參數



這邊首先你得先安裝 一套 QBitNinja.Client 的套件



接下來就是 C# Code ,先看 Code

        /// <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 = 5;



            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));
                }

            }
        }



簡單的解釋一下這 function 就是透過 QBitNinja 去跟網路上其他測試節點要取該錢包的接收到 coin 的資料,然後 我在其中加入了一個 confirmThres 我把它 設成 0 ,平常的狀況 ,像是我參考的網站,通常都是 confirm 要超過5甚至更高,此交易才會被確認。
這是目前只有一筆確認資料的狀況



所以執行結果是長這樣 ( 因為是測試 我就是寫判斷>5 才確定是 confirm )



為何確認數這麼重要了,這就跟算力有關係,有時候有確認數不代表他依定交易成功,通常都會抓一定的門檻值,在來,我這錢包是誰打給我錢的 ,歡迎到這 如何得到 BitCoin 在測試練(Testnet3)上面  之前我有寫過如何簡單拿到測試鏈上面比特幣


此筆交易紀錄,你可以到 https://live.blockcypher.com/btc-testnet/address/mvJh993ZpnVFgX4Bs9jacjFLsKPhXj3nkj/ 這網址查看

接下來,你也可以用這方法去測試其他錢包裡面有多少比特幣,只要你有他公開的錢包位置就可以了。

這一系列文章,不客觀,非教學,真體驗,如果有中間些解釋不清楚的地方,可能要在煩請多看一下關於 比特幣跟區塊的鏈相關文獻,畢竟光是一個區塊鏈真的比九二共識還要複雜,每個人都有一套自己的說法跟解法。

---

 

請你暫時把你的勇氣給我 在夢想快消失的時候 讓我的 Code 用力的穿過天空 為愛我的人做一秒英雄 如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...