You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生成5个比特币地址并转账后,用QBitNinjaClient查询余额的C#技术问询

查询比特币地址余额的完整C#实现(基于QBitNinjaClient)

首先,你已经生成了以下5个比特币主网地址并转入了资金:

  • 1KmjtM8aibtBqbPiJahYYEwcEAH2Duk9QH
  • 1HV55k5erZrFA3SirFLULf1rTs4sKvvqQg
  • 1B1Tx9wXVVmmySSDSFYekM7cy7xCTybEMg
  • 1Py6rXFPepLa7nacuRhYsJWYcfFLYE6zkw
  • 1GRHuGiHqtuLY3A6roH7fT9bjbbiG1foWM

我帮你补充完整了GetBalance方法的实现,加上了必要的逻辑处理和异常捕获,代码如下:

using NBitcoin;
using QBitNinja.Client;
using QBitNinja.Client.Models;
using System;

public static void GetBalance(string ssAddress, bool ssIsUnspentOnly, bool ssIsTestNet, out decimal ssBalance, out decimal ssConfirmedBalance)
{
    // 初始化对应网络环境(主网/测试网)
    Network net = ssIsTestNet ? Network.TestNet : Network.Main;
    QBitNinjaClient client = new QBitNinjaClient(net);

    // 初始化返回值
    ssBalance = 0;
    ssConfirmedBalance = 0;

    try
    {
        // 解析并验证输入的比特币地址
        BitcoinAddress address = BitcoinAddress.Create(ssAddress, net);
        
        // 调用QBitNinja接口获取余额数据
        var balanceResponse = client.GetBalance(address, unspentOnly: ssIsUnspentOnly).Result;
        
        // 遍历交易记录计算总余额和已确认余额
        foreach (var operation in balanceResponse.Operations)
        {
            decimal amountInBtc = operation.Amount.ToDecimal(MoneyUnit.BTC);
            ssBalance += amountInBtc;
            
            // 确认数≥1视为已确认交易
            if (operation.Confirmations >= 1)
            {
                ssConfirmedBalance += amountInBtc;
            }
        }
    }
    catch (Exception ex)
    {
        // 异常处理:可根据实际需求改为日志记录或抛出异常
        Console.WriteLine($"查询余额失败: {ex.Message}");
        // 异常场景下返回0值,避免未初始化的输出参数报错
        ssBalance = 0;
        ssConfirmedBalance = 0;
    }
}

关键细节说明:

  1. 网络适配:通过ssIsTestNet参数自动切换主网/测试网,确保地址解析和API请求的正确性
  2. 地址验证:使用BitcoinAddress.Create校验输入地址的合法性,避免无效地址导致的错误
  3. 余额统计:区分总余额(包含已花费/未花费)和已确认余额(仅统计确认数≥1的交易)
  4. 异常防护:捕获网络请求、地址解析等可能出现的异常,保证方法的健壮性

快速使用示例:

// 查询第一个地址的全部余额(包含已花费交易)
GetBalance("1KmjtM8aibtBqbPiJahYYEwcEAH2Duk9QH", ssIsUnspentOnly: false, ssIsTestNet: false, out decimal total, out decimal confirmed);
Console.WriteLine($"总余额: {total} BTC");
Console.WriteLine($"已确认余额: {confirmed} BTC");

前置依赖:

确保你的项目已安装必要的NuGet包:

Install-Package NBitcoin
Install-Package QBitNinja.Client

内容的提问来源于stack exchange,提问作者Lolidze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:41:10