比特币PHP离线交易开发包——BTCTool

BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地节点旳PHP开发者,开发包主要包含以下特性:

利用第三方服务获取指定地址的utxo集合

离线生成消费裸交易

利用第三方服务广播裸交易

BtcTool目前支持的第三方服务包括,并且可以非常简单进行扩展:

BtcTool下载地址:http://sc.hubwiz.com/codebag/btc-php-lib/

1. 代码清单

BtcTool运行在**Php 7.1+**环境下,当前版本1.0.0,主要代码文件清单如下:

BtcTool的入口是Wallet类,基本的使用步骤如下:2. 使用说明

创建一个Wallet实例

将私钥加入该Wallet实例

使用Wallet实例的**sendTx()**方法获取编码后的裸交易

使用Wallet实例的**broadcast()**方法广播裸交易

示例例代码如下,说明见注释:

注意:

Wallet实例利用钱包中的私钥生成地址列表,并利用这些地址从第三方服务获取utxo信息。

因此需要钱包中的私钥对应地址在链上有utxo存在,Wallet对象才能够成功构造裸交易。

在调用Wallet对象的sendTx()方法构造裸交易时,可以指定找零地址和手续费,例如:

如果未指定后面两个参数,找零地址默认为钱包中第一个私钥对应的地址,手续费默认为10000satoshi(高费率)。

3. 转账目标地址应当与创建Wallet对象时指定的链ID一致,例如mainnet的p2pkh地址,前缀应当为1

3. 主要模型

3.1 UtxoCollector接口

利用钱包地址列表,获取候选UTXO。

接口方法:

collect():提取候选UTXO,返回TUXO集合

当前实现类:

CloudUtxoCollector

3.2 UtxoSelector接口

根据目标金额从候选UTXO中选择可消费UTXO接口方法:

select():选择可消费UTXO,返回UtxoBag对象

当前实现类:

DefaultUtxoSelector

3.3 Broadcaster接口

裸交易广播器接口方法:

broadcast():广播裸交易

当前实现类:

CloudBroadcaster

3.4 Wallet类

管理私钥、地址和脚本,同时提供构造和广播裸交易的方法

主要方法:

::load(): 静态方法,利用硬盘的钱包文件构造Wallet对象

addKey():添加私钥

save():将Wallet对象保存到钱包文件

sendTx():构造裸交易,返回裸交易码流,该方法可自动搜索可用UTXO集合

broadcast():广播裸交易,调用Broadcaster完成

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181217G0QLOP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券