比特币协议的瑞士军刀。
python-omnicorelib的Python项目详细描述
python omnicorelib
这个python库提供了一个到bitcoind fork omnicore的接口。在
这个库为比特币数据提供了一个简单的接口 结构和协议。该方法是低层次的,并且是“基础”的,它使用 专注于提供工具来操纵比特币的内部运作。在
“比特币协议的瑞士军刀。”
要求
sudo apt-get install libssl-dev
RPC接口omnicore.rpc
,设计用于比特币核心v0.16.0。
旧版本可能可以工作,但确实存在一些不兼容的地方。在
结构
所有关键共识都可以在下面的模块中找到比特币.core. 这个 规则是非常严格地遵循的,例如链参数被分成 共识关键和非共识关键。在
^{pr2}$将来比特币.core可以直接使用Satoshi源代码作为 图书馆。非共识关键模块包括:
omnicore - Chain selection
omnicore.base58 - Base58 encoding
omnicore.bloom - Bloom filters (incomplete)
omnicore.net - Network communication (in flux)
omnicore.messages - Network messages (in flux)
omnicore.rpc - Bitcoin Core RPC interface support
omnicore.wallet - Wallet-related code, currently Bitcoin address and
private key support
我们已经努力相对密切地跟踪Satoshi的来源,因为 实例Python代码和类,它们复制 对应的Satoshi C++代码使用相同的命名约定: CBlockHeader、nValue等,否则将遵循Python命名约定。在
可变对象与不可变对象
就像比特币的核心代码库一样,CTransaction是不可变的 CMutableTransaction是可变的;与比特币核心代码库不同的是 区分也适用于COutPoint、CTxIn、CTxOut和CBlock。在
Endianness Gotchas公司
相当令人困惑的是,比特币核心将交易和块散列显示为 小端十六进制而不是世界其他地方使用的大端 SHA256。python bitcoinlib在中提供了方便的函数x()和lx() 比特币.core将big-endian和little-endian十六进制转换为原始字节 容纳这个。此外,有关从字节到 大/小端十六进制。在
模块导入样式
虽然并不总是好的风格,但如果
import *
可以使用。支持所有模块都定义了__all__
适当的。在
示例代码
请参阅examples/
目录。例如,这个例子创建了一个事务
花费付费脚本哈希事务输出:
$ PYTHONPATH=. examples/spend-pay-to-script-hash-txout.py
<hex-encoded transaction>
选择要使用的链
执行以下操作:
import omnicore
omnicore.SelectParams(NAME)
其中NAME是“testnet”、“mainnet”或“regtest”之一。目前的链条 selected是一个全局变量,它可以在任何地方改变行为,就像 Satoshi代码库。在
单元测试
使用比特币核心的测试数据进行比特币测试。运行它们:
python3 -m unittest discover
或者,如果您的 系统中,可以对多个Python版本运行单元测试:
./runtests.sh
然后可以在htmlcov/子目录中找到HTML覆盖率报告。在
文件
Sphinx文档位于“doc”子目录中。从那里运行“make help” 看看如何建造。您需要安装Python“sphinx”包。在
目前这只是由代码生成的API文档 文档字符串。更高级别的书面文档会很有用,也许从 大部分自述。页面是用RestructedText编写并从 索引.rst. 在
- 项目
标签: