比特币现金协议的瑞士军刀。
项目描述
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_TESTS
env 变量
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d5d55c0f9835259eea0c636a5980448f6a9a08b9d48fac44148910de8947d03d |
|
MD5 | 66ec3b5922f4a4e8c3c9c5f49058d9a1 |
|
布莱克2-256 | c618db1de40b55834c0e3ab661a9be1260beacf48643790d9a9010b2329533c3 |
bitcoincash -0.1.5-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8aaccfa2b087812abf8dadcacd461e97ef5b05cfec8e84f3a5515e56dd1a6b2 |
|
MD5 | b711995c7c52cc9deceb3ff5c62471a3 |
|
布莱克2-256 | dc33feafd7c910edb33ad0d612f56fcd964c3309b8e7dd11361a9c1218794a82 |