比特币实用功能
bitcoin-utils的Python项目详细描述
这是一个比特币库,提供与比特币网络交互的工具/实用程序。图书馆的主要目标之一是解释比特币的低级细节。该代码易于阅读,并有适当的文档记录,详细解释了实现的所有棘手方面。它是一个低级的库,假定对比特币的工作原理有一些高级的理解。将来这种情况可能会改变。
这是库的早期版本(v0.4.0),目前,它支持私钥/公钥、所有类型的地址以及创建所有sigash类型的任何事务(包括segwit)。包括所有脚本操作代码。支持TimeLock和非标准事务。目前,存在一个简单的节点代理,可以轻松调用比特币核心节点。额外的功能将不断增加,文件将随着工作的进展而改进。
api文档可以用sphinx构建,但也可以作为pdf提供,以方便使用。人们现在可以使用这个库来试验和学习比特币的内部工作原理。它还不适合生产,部分api可能会更新为新版本。
安装
python版本3是必需的。然后使用以下命令安装:
$pip安装比特币实用程序
示例
- 键和地址
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/keys_addresses.py-创建一个私钥,我们用它派生一个公钥,然后再派生一个地址。我们还使用私钥对消息进行签名,然后使用公钥进行验证。
- segwit地址
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/keys_segwit_addresses.py-创建p2wpkh、p2sh-p2wpkh、p2wsh和p2sh-p2wsh地址。
- 创建p2pkh事务
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/p2pkh_transaction.py-创建一个具有一个输入和两个输出的简单事务。
- 创建具有不同sigash的p2pkh事务
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/multi_input_sighash_transaction.py-创建具有不同签名类型的2输入2输出事务。
- 创建一个p2sh地址
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/send_to_p2sh_transaction.py-创建一个p2sh地址,该地址对应于p2pk兑换脚本,并向其发送一些资金。
- 创建(使用)一个p2sh事务
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/spend_p2sh_transaction.py-创建花费p2sh输出的事务。
- 创建非标准tx
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/create_non_std_tx.py-将资金发送到具有非标准tx的地址(脚本:op_add op_5 op_equal)
- 使用非标准tx
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/spend_non_std_tx.py-花费脚本op_add op_5 op_equal中的资金
- 使用相对时间锁创建p2sh地址
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/create_p2sh_csv_p2pkh_address.py-创建一个p2sh地址,该地址使用私钥(p2pkh)锁定资金(发送给它),并且将来的相对锁定时间为200个块。
- 从时间锁定的地址花费
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/spend_p2sh_csv_p2pkh.py-从上面创建的p2sh(csv+p2pkh)地址花费。
- 使用nodeProxy调用比特币节点
- https://github.com/karask/python-bitcoin-utils/blob/master/examples/node_proxy.py-以编程方式进行比特币命令行接口调用(nodeproxy包装jsonrpc请求库)
请浏览代码库或API文档(BitCoinUtilities.pdf)以了解支持的功能和其他选项。