用python实现比特币spv
pyspv的Python项目详细描述
Pyspv
_警告:这是实验软件。自行承担使用风险
pyspv是一个实现完整比特币的简单易用的python模块。
SPV客户端协议。连接比特币网络非常简单: `python
import pyspv
spv = pyspv.pyspv("my-application-name")
...
` …但是仅仅连接到比特币网络是很无聊的。真正的目标
这个项目的目的是让比特币嵌入到你的项目中变得如此简单
每个人都这么做。pyspv处理诸如区块链同步、
对等网络、支付管理、钱包等,并允许您
开始快速制作比特币应用程序的原型。 我打算使这个spv客户端尽可能地可扩展,目标是
支持使用简单的硬币定义的所有硬币。因为pyspv是模块化的,
现在很容易连接到
同一个应用程序-只需使用不同的硬币初始化两个pyspv类
定义 你可以开发一个漂亮的用户界面钱包,或者只是一个简单的实用程序来发送一个
当一个地址收到付款时给你发电子邮件。可能真的
无止境的。
要求
pyspv只依赖于一小部分依赖项:
- [Python3.3](http://www.python.org/):它可能适用于其他版本,但这是我的测试平台。
- openssl::路径中需要libssl.so(linux/mac)或libeay32.dll(windows)。
- [位数组](https://pypi.python.org/pypi/bitarray/):这是bloom筛选器实现所必需的。
功能
- SPV实现,因此相对轻量级
- python,对服务器和用户应用程序有用
- 多签名支持,可以创建、发送到和使用多签名付款
- 隐形地址支持,可以创建、发送和使用隐形地址支付
- TOR/袜子支持
- testnet支持
- 可扩展的支付监控和交易构建系统
示例
简单钱包.py
这个例子运行一个基本的钱包。不带参数运行它将启动rpc 服务器。使用参数进行rpc调用。程序的行为类似于 比特币,有几个明显的区别。
可用命令:
- 获取新地址[标签]?-返回标准公钥哈希地址
- 获取新闻地址[标签]?-返回新的隐藏地址
- GetNewPubKey[标签]?[压缩=假]?-返回新的公钥(十六进制)
- getbalance-返回钱包中的总余额
- getinfo-返回有关spv节点状态的信息
- listfirs[include_spend=false]-返回描述钱包中花费的字典
- 发送地址[地址][金额][备注]?-将硬币数量发送到地址。地址可以是隐形地址、多sig地址或标准地址。
- sendspendtoaddress[花费哈希][地址][金额][备注]?-强制将特定开销包含到指定地址。如果完成交易需要更多的硬币,可以从钱包中选择。
- dumppubkey[地址]-如果指定地址的公钥在钱包中,则返回该地址的公钥
- dumpprivkey[地址]-如果在钱包中,则返回指定地址的私钥(WIF格式)
- genmultisig[nreq][mtotal][pubkey1,pubkey2,…]?-生成新的多重签名地址。如果未提供全部公钥,则会生成新的公钥并将其存储在电子钱包中。多签名地址需要nreq签名才能使用。
- sendrawtransation[tx_hex]-向网络广播事务
测试隐形钥匙.py
这个例子贯穿数学,并演示了隐形地址在理论上是如何工作的。
任何人都可以支付新的.py
使用指定的创建新事务ED输出和零输入。显示的事务可以用作anyonecanpay-add.py的输入。
任何人都可以支付add.py
给定一个事务和支出id,添加这些输入并使用anyonecanpay对其进行签名。此程序与anyonecanpay-new.py相结合 有效地允许轻松创建[保证合同](https://en.bitcoin.it/wiki/Contracts#Example_3:_Assurance_contracts)。