如何打开本地比特币数据库

问题描述 投票:6回答:3

我试图从本地比特币数据库中提取数据。据我所知,比特币-qt正在使用BerkeleyDB。我从Oracle网站安装了berkley数据库,在这里找到了.NET的dll:libdb_dotnet60.dll。我试图打开任何文件,但我得到DatabaseException。这是我的代码:

using BerkeleyDB;
class Program
{
    static void Main(string[] args)
    {
        var btreeConfig = new BTreeDatabaseConfig();
        var btreeDb = BTreeDatabase.Open(@"c:\Users\<user>\AppData\Roaming\Bitcoin\blocks\blk00000.dat", btreeConfig);
    }
}

有没有人有如何使用比特币数据库(在任何其他语言)?

berkeley-db bitcoin
3个回答
4
投票

你想要提取什么?只有wallet.dat文件是Berkeley数据库。

块在blkxxxxx.dat文件中一个接一个地存储,其中四个字节表示网络标识符,四个字节给出块大小,在每个块之前。

存储为leveldb数据库的未使用输出的索引。

了解您正在寻找的信息类型会有所帮助。


1
投票

库有NBitcoin:https://github.com/MetacoSA/NBitcoin

如何枚举块:

var store = new BlockStore(@"C:\Bitcoin\blocks\", Network.Main);
// this loop will enumerate all blocks ordered by height starting with genesis block
foreach (var block in store.EnumerateFolder())
{
    var item = block.Item;
    string blockID = item.Header.ToString();
    foreach (var tx in item.Transactions)
    {
        string txID = tx.GetHash().ToString();
        string raw = tx.ToHex();
    }
}

0
投票

在.NET中,您可以使用类似BitcoinBlockchain的东西,它可以在https://www.nuget.org/packages/BitcoinBlockchain/作为NuGet包使用。它的用法很简单。如果你想看看它是如何实现的,那么源代码可以在GitHub上找到。

如果您想将区块链存储在SQL数据库中,您可以更快地查询原始区块链,您可以使用类似于https://github.com/ladimolnar/BitcoinDatabaseGenerator提供的BitcoinDatabaseGenerator工具。

© www.soinside.com 2019 - 2024. All rights reserved.