Skip to main content

比特币协议的瑞士军刀。

项目描述

python-比特币库

这个 Python3 库为比特币数据结构和协议提供了一个简单的接口。该方法是低级和“基础”的,重点是提供工具来操纵比特币内部的运作方式。

“比特币协议的瑞士军刀。” ——弗拉基米尔·J·范德兰

要求

sudo apt-get install libssl-dev

RPC 接口bitcoin.rpc被设计为与 Bitcoin Core v0.16.0 一起使用。旧版本可能有效,但确实存在一些不兼容性。

结构

在 bitcoin.core 下的模块中可以找到所有关键的共识。这条规则非常严格,例如链参数分为共识关键和非共识关键。

bitcoin.core            - Basic core definitions, datastructures, and
                          (context-independent) validation
bitcoin.core.key        - ECC pubkeys
bitcoin.core.script     - Scripts and opcodes
bitcoin.core.scripteval - Script evaluation/verification
bitcoin.core.serialize  - Serialization

未来 bitcoin.core 可能会直接使用 Satoshi 源代码作为库。非共识关键模块包括以下内容:

bitcoin          - Chain selection
bitcoin.base58   - Base58 encoding
bitcoin.bloom    - Bloom filters (incomplete)
bitcoin.net      - Network communication (in flux)
bitcoin.messages - Network messages (in flux)
bitcoin.rpc      - Bitcoin Core RPC interface support
bitcoin.wallet   - Wallet-related code, currently Bitcoin address and
                   private key support

已努力相对密切地遵循 Satoshi 源代码,例如复制相应 Satoshi C++ 代码功能的 Python 代码和类使用相同的命名约定:CTransaction、CBlockHeader、nValue 等。否则遵循 Python 命名约定。

可变对象与不可变对象

就像比特币核心代码库一样,CTransaction 是不可变的,而 CMutableTransaction 是可变的;与比特币核心代码库不同,这种区别也适用于 COutPoint、CTxIn、CTxOut 和 CBlock。

字节顺序问题

相当令人困惑的是,比特币核心将交易和区块哈希显示为小端十六进制,而不是世界其他地方用于 SHA256 的大端。python-bitcoinlib 在 bitcoin.core 中提供了方便的函数 x() 和 lx() 从 big-endian 和 little-endian 十六进制转换为原始字节以适应这种情况。此外,请参阅 b2x() 和 b2lx() 以了解从字节到大/小端十六进制的转换。

模块导入风格

虽然并不总是好的风格,但如果 import *可以使用,它通常对快速脚本很方便。支持所有模块都已__all__适当定义。

示例代码

examples/目录。例如,这个例子创建了一个交易,花费了一个付费脚本哈希交易输出:

$ PYTHONPATH=. examples/spend-p2sh-txout.py
<hex-encoded transaction>

选择要使用的链

请执行下列操作:

import bitcoin
bitcoin.SelectParams(NAME)

其中 NAME 是“testnet”、“mainnet”、“signet”或“regtest”之一。当前选择的链是一个全局变量,可以在任何地方改变行为,就像在 Satoshi 代码库中一样。

单元测试

在使用来自 Bitcoin Core 的测试数据的比特币/测试下。要运行它们:

python3 -m unittest discover

或者,如果 Tox(请参阅https://tox.readthedocs.org/)在您的系统上可用,您可以为多个 Python 版本运行单元测试:

./runtests.sh

然后可以在 htmlcov/ 子目录中找到 HTML 覆盖率报告。

文档

Sphinx 文档位于“doc”子目录中。从那里运行“make help”以查看如何构建。您将需要安装 Python“sphinx”包。

目前这只是从代码和文档字符串生成的 API 文档。更高级别的书面文档会很有用,也许从这个 README 的大部分内容开始。页面用 reStructuredText 编写并从 index.rst 链接。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

python-bitcoinlib-0.11.2.tar.gz (153.1 kB 查看哈希

已上传 source

内置分布

python_bitcoinlib-0.11.2-py3-none-any.whl (104.2 kB 查看哈希

已上传 py3