Skip to main content

比特币现金协议的瑞士军刀。

项目描述

python-比特币现金

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

参考文档

要求

sudo apt-get install libssl-dev

RPC 接口bitcoincash.rpc设计用于与 Bitcoin Unlimited v1.7.0 一起使用。旧版本没有达成共识。

结构

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

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

非共识关键模块包括以下内容:

bitcoincash          - Chain selection
bitcoincash.base58   - Base58 encoding
bitcoincash.bloom    - Bloom filters (incomplete)
bitcoincash.cashaddr - Cashaddr encoding
bitcoincash.electrum - Bitcoin Electrum RPC interface support
bitcoincash.net      - Network communication (in flux)
bitcoincash.messages - Network messages (in flux)
bitcoincash.rpc      - Bitcoin Satoshi-client RPC interface support
bitcoincash.wallet   - Wallet-related code, currently Bitcoin address and
                       private key support

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

可变对象与不可变对象

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

字节顺序问题

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

模块导入风格

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

示例代码

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

$ PYTHONPATH=. examples/spend-pay-to-script-hash-txout.py
<hex-encoded transaction>

选择要使用的链

请执行下列操作:

import bitcoincash
bitcoincash.SelectParams(NAME)

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

单元测试

在 bitcoincash/tests 下使用来自 Bitcoin Unlimited 的测试数据。要运行它们:

python3 -m unittest discover

要同时启用电子测试(这些连接到远程服务器),请设置 ELECTRUM_TESTSenv 变量

ELECTRUM_TESTS=1 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 链接。

项目详情


下载文件

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

源分布

bitcoincash-0.1.5.tar.gz (97.1 kB 查看哈希

已上传 source

内置分布

bitcoincash-0.1.5-py3-none-any.whl (117.4 kB 查看哈希

已上传 py3