博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
比特币PHP离线交易开发包
阅读量:5823 次
发布时间:2019-06-18

本文共 1914 字,大约阅读时间需要 6 分钟。

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

  • 利用第三方服务获取指定地址的utxo集合
  • 离线生成消费裸交易
  • 利用第三方服务广播裸交易

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

BtcTool下载地址:

1. 代码清单

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

码文件 说明
btctool/src/Wallet.php 离线钱包类,开发包入口
btctool/src/Utxo.php 未消费交易输出类
btctool/src/UtxoBag.php Utxo集合类
btctool/src/UtxoCollector.php Utxo收集器接口
btctool/src/CloudUtxoCollector.php 基于第三方服务的Utxo收集器实现
btctool/src/UtxoSelector.php Utxo筛选器接口
btchtool/src/DefaultUtxoSelector.php 默认的Utxo筛选器实现
btctool/src/Broadcaster.php 交易广播器接口
btctool/src/CloudBroadcaster.php 基于第三方服务的交易广播器实现
btctool/src/Utils.php 常用辅助函数
demo/wallet-init.php 本地钱包初始化
demo/wallet-demo.php 钱包载入、裸交易构造和广播
vendor 第三方依赖包目录
composer.json composer配置文件

2. 使用说明

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

  1. 创建一个Wallet实例
  2. 将私钥加入该Wallet实例
  3. 使用Wallet实例的**sendTx()**方法获取编码后的裸交易
  4. 使用Wallet实例的**broadcast()**方法广播裸交易

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

addKey($prvKey);$toAddr = 'mgYPLmNuZymK...e2XUNF6VFnT' //地址应当与testnet/mainnet保持一致$amount = 10000; //单位:satoshi$rawtx = $wallet->sendTx($toAddr,$amount); //构造裸交易,返回16进制字符串$ret = $wallet->broadcast($rawtx); //广播裸交易复制代码

注意:

  1. Wallet实例利用钱包中的私钥生成地址列表,并利用这些地址从第三方服务获取utxo信息。 因此需要钱包中的私钥对应地址在链上有utxo存在,Wallet对象才能够成功构造裸交易。
  2. 在调用Wallet对象的sendTx()方法构造裸交易时,可以指定找零地址和手续费,例如:
$rawtx = $wallet->sendTx($toAddr,$amount,$changeAddr,$fee);复制代码

如果未指定后面两个参数,找零地址默认为钱包中第一个私钥对应的地址,手续费默认为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完成

转载地址:http://gqbdx.baihongyu.com/

你可能感兴趣的文章
队列1--周末舞会
查看>>
zookeeper集群的搭建
查看>>
SEO之HTML标签
查看>>
多少秒后跳转到指定页面
查看>>
Android跨应用间的数据传输
查看>>
关于团队项目的一些思考和理解
查看>>
新手正式入驻博客园
查看>>
[迷宫中的算法实践]迷宫生成算法——Prim算法
查看>>
Spring Boot(二):Web 综合开发
查看>>
MySQL
查看>>
进程管理(一)
查看>>
C++中this的用法
查看>>
【枚举】bzoj3391 [Usaco2004 Dec]Tree Cutting网络破坏
查看>>
【计算几何】【圆反演】计蒜客17314 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 G. Finding the Radius for an Inserted Circle...
查看>>
[转载]eclipse自动同步插件filesync的使用
查看>>
ubuntu直接删除文件而不是移动到回收站
查看>>
Virtual Reality: Immersive Yourself In Your 3D Mockup
查看>>
SSO解决session共享的几种方案
查看>>
volatile与synchronized的区别
查看>>
leetcode 73: Longest Palindromic Substring
查看>>