比特币协议的瑞士军刀。
项目描述
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-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 78bd4ee717fe805cd760dfdd08765e77b7c7dbef4627f8596285e84953756508 |
|
MD5 | 274b4f66ccab524222760dfd90ccb40a |
|
布莱克2-256 | 7116fcb61183e593ecf293c531eae0d0c9cd7a310fa752890753e3ca3b298aec |