Query LOCAL Bitcoin blockchain with C# .NET

Query LOCAL Bitcoin blockchain with C# .NET

I am trying to check the balance of a given Bitcoin address by using ONLY the locally stored blockchain (downloaded via Bitcoin Core). Something similar to this (by using NBitCoin and/or QBitNinja), but without needing access to the network:

private static readonly QBitNinjaClient client = new QBitNinjaClient(Network.Main);

public decimal CheckBalance(BitcoinPubKeyAddress address) { var balanceModel = client.GetBalance(address, true).Result; decimal balance = 0;

if (balanceModel.Operations.Count > 0)
{
    var unspentCoins = new List<Coin>();
    foreach (var operation in balanceModel.Operations)
        unspentCoins.AddRange(operation.ReceivedCoins.Select(coin => coin as Coin));
    balance = unspentCoins.Sum(x => x.Amount.ToDecimal(MoneyUnit.BTC));
}
return balance;

}

The example above needs access to the network. I need to do the same thing offline. I came up with something like this, but obviously it doesn't work:

public decimal CheckBalanceLocal(BitcoinPubKeyAddress address)
{
    var node = Node.ConnectToLocal(Network.Main);
    node.VersionHandshake();
    var chain = node.GetChain();

var store = new BlockStore(@"F:\Program Files\Bitcoin\Cache\blocks", Network.Main);

var index = new IndexedBlockStore(new InMemoryNoSqlRepository(), store);
index.ReIndex();

var headers = chain.ToEnumerable(false).ToArray();

var balance = (
    from header in headers
    select index.Get(header.HashBlock) 
    into block
    from tx in block.Transactions
    from txout in tx.Outputs
    where txout.ScriptPubKey.GetDestinationAddress(Network.Main) == address
    select txout.Value.ToDecimal(MoneyUnit.BTC)).Sum();

return balance;

}

  1. It hangs during the query
  2. I want something instead of InMemoryNoSqlRepository to be stored in a file in order to prevent using ReIndex() which slows everything down

My requirement is to Check Balance the same way as in the first method but by querying blocks stored on my disk.

Angular 9 Tutorial: Learn to Build a CRUD Angular App Quickly

What's new in Bootstrap 5 and when Bootstrap 5 release date?

Brave, Chrome, Firefox, Opera or Edge: Which is Better and Faster?

How to Build Progressive Web Apps (PWA) using Angular 9

What is new features in Javascript ES2020 ECMAScript 2020

C/C++ vs. Rust: A developer’s perspective

In this post, you'll see the difference between Rust and C/C++ in a developer’s perspective

Variable Introduction in C#[Bangla]

LIKE | COMMENT | SHARE | SUBSCRIBE A variable is nothing but a name given to a storage area that our programs can manipulate. Each variable in C# has a speci...