比特币协议的瑞士军刀。

asimov-lib的Python项目详细描述


asimov库

python3库为比特币数据提供了一个简单的接口 结构。这是基于https://github.com/Simplexum/python-bitcointx, 但是只专注于修复错误和调整阿西莫夫链。

要求

rpc接口bitcointx.rpc设计用于比特币核心v0.16.0。 旧版本可以工作,但确实存在一些不兼容。

结构

所有重要的共识都可以在bitcointx.core下的模块中找到。这个 规则是严格遵循的,例如链参数被分成 共识批判和非共识批判。

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

请注意,此代码可能与当前版本不完全一致 比特币核心代码库。与创建有效比特币无关的角盒 不太可能考虑交易。另请参见下面关于verifyscript用法的说明。

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

bitcointx          - Chain selection
bitcointx.base58   - Base58 encoding
bitcointx.rpc      - Bitcoin Core RPC interface support
bitcointx.wallet   - Wallet-related code, currently Bitcoin address and
                     private key support

已经做出努力,以相对密切地跟踪Satoshi来源,因为 实例python代码和类,它们复制了 相应的Satoshi C++代码使用相同的命名约定, cpubkey、nvalue等,否则遵循python命名约定。

可变对象与不可变对象

就像比特币的核心代码库cTransaction是不可变的 cmutabletransaction是可变的;与比特币核心代码库不同的是 区别也适用于coutpoint、ctxin、ctxout。

端部缺陷

令人困惑的是,比特币核心将事务和块散列显示为 小endian hex而不是大endian 夏256。python bitcointx在 将bitcointx.core从big endian和little endian hex转换为原始字节 接受这个。此外,有关从字节到 大/小endian hex。

关于verifyscript()用法的说明

最好使用verifyscript预先筛选 在将事务传递给bitcoind之前,或者出于调试目的,创建事务。

但是!比特币核心应该始终是比特币的权威来源 事务输入有效性。

verifyscript()的脚本计算代码与比特币核心代码不同步, 缺少一些特征。尽管我们努力让它表现得更接近 对于比特币核心的代码来说,完全兼容是很遥远的,而且很可能 永远不会实现。

警告:不要依赖verifyscript()来决定是否有某些签名 事务输入有效。在某些情况下(非标准签名编码, 未处理的脚本求值标志等)它可能认为bitcoid 将接受为有效。更重要的是,它可以接受一些有效的东西 比特币将被视为无效。

模块导入样式

虽然并不总是好的风格,但如果 import *可以使用。支持所有模块都定义了__all__ 恰如其分。

示例代码

请参阅examples/目录。例如,此示例创建一个事务 使用付费脚本哈希事务输出:

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

选择要使用的链

执行以下操作:

import bitcointx
bitcointx.SelectParams(NAME)

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

使用替代链参数:

import bitcointx
bitcointx.SelectAlternativeParams(AltCoreParams, AltParams)`

有关用法示例,请参见examples/litecoin-alt-p2sh-prefix.py

单元测试

使用比特币核心的测试数据进行测试。运行它们:

python -m unittest discover && python3 -m unittest discover

或者,如果您的 系统,您可以为多个python版本运行单元测试:

./runtests.sh

目前,以下实现已尝试操作系统(任何未安装的操作系统 跳过):

* CPython 3.4
* CPython 3.5
* PyPy
* PyPy3

HTML覆盖率报告可以在htmlcov/子目录中找到。

文档

sphinx文档位于“doc”子目录中。从那里运行“make help” 看看如何建造。您需要安装python“sphinx”包。

目前这只是从代码和 文档字符串。更高层次的书面文档可能会有用,首先 大部分的自述文件。页面是用structuredtext编写并从 索引.rst.

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

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]