比特币协议的瑞士军刀。

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. 在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题