#bitcoin #python #binary #blockchain #parser #bitcoin-core #reading

已删除 bitcoinquery

用于读取比特币核心二进制区块链的软件包

0.1.30 2021年9月22日
0.1.27 2021年9月22日

#30#bitcoin-core

每月32次 下载

自定义许可

135KB
3K SLoC

bitcoinquery

bitcoinquery 是一个用 rust 开发的 python 包,用于将比特币核心二进制文件作为数据库访问。

如何安装?

这个库为 python 和 rust 两者都设计。

对于 python 用户,请运行 pip install bitcoinquery

对于 rust 用户,在 Cargo.toml 中包含 bitcoinquey="0.1"

安装需求

目前,仅提供 macOS py39 轮子。

对于 pip 在其他操作系统或 python 版本上构建软件包,请确保已安装 rust 工具链,并且已安装 cmake

文档

有关 API 文档,请访问 文档

兼容性说明

此软件包处理另一种软件的 Bitcoin Core 二进制文件。它可能与较旧的比特币核心版本不兼容。

目前,它与比特币核心版本 Bitcoin Core 版本 v0.21.1.0-g194b9b8792d9b0798fdb570b79fa51f1d1f5ebaf 版权 (C) 2009-2020 The Bitcoin Core developers 兼容。

用法

它包含一个类 BitcoinDB

import bitcoinquery as bq

# parse the same path as `--datadir` argument for `bitcoind`.
db = bq.BitcoinDB("~/Bitcoin")

# get the length of the longest chain currently on disk.
db.get_max_height()

# get block of a certain height
db.get_block(1000)

# to retrieve the connected outputs of each inputs as well
db.get_block(1000, connected=True)

# get block hash of a certain height.
db.get_hash(1000)

# a fast method for getting just the header.
# in memory query, no disk access
db.get_block_header(1000)

# get block of height 1000.
db.get_height_from_hash("some hash")

# get blocks of heights 100..199.
# (This method uses `rayon` parallel computing to take advantage of multicore)
# this function returns json string instead of object.
db.get_block_batch(list(range(100, 200)))

# get transaction from txid.
# This queries the `levelDB` each time, thus it is relatively slow.
db.get_transaction("some txid")

# get the height of the block which this transaction belongs.
db.get_height_from_txid("some txid")

# get the script type and addresses from a script public key
db.parse_script("some hex script pubic key")

# use iterator
for block in db.get_block_iter_range(start=1000, end=2000):
    do_something_with(block)

# use iterator, iterate over heights
for block in db.get_block_iter_array(heights=[1, 3, 5, 7, 9]):
    do_something_with(block)
    
# use iterator, connect outpoints
for block in db.get_block_iter_range(end=700000, connected=True):
    do_something_with(block)

依赖项

~14MB
~224K SLoC