BtcTool开发包是一个基于第三方服务和离线裸交易的 PHP 比特币应用开发库,适合不希望部署本地

节点旳 PHP 开发者,开发库主要包含以下特性:

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

离线生成消费p2pkh地址utxo的裸交易

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

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

blockchain.info

btc.com

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

类,基本的使用步骤如下:

创建一个Wallet实例

将私钥加入该Wallet实例

使用Wallet实例的 sendTx()

方法获取编码后的裸交易

使用Wallet实例的 broadcast()

方法广播裸交易

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

require('../vendor/autoload.php');

use BtcTool\Wallet; //引入开发包

$wallet = new Wallet('testnet'); //创建钱包,主网传入 mainnet

$prvKey = '...'; //向钱包中添加私钥,可添加多个

$wallet->addKey($prvKey);

$toAddr = 'mgYPLmNuZymK...e2XUNF6VFnT' //地址应当与testnet/mainnet保持一致

$amount = 10000; //单位:satoshi

$rawtx = $wallet->sendTx($toAddr,$amount); //构造裸交易,返回16进制字符串

$ret = $wallet->broadcast($rawtx); //广播裸交易

注意:

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

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

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

$rawtx = $wallet->sendTx($toAddr,$amount,$changeAddr,$fee);

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

10000satoshi(高费率)。

转账目标地址应当与创建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完成

比特币交易平台 php,比特币PHP离线交易开发包相关推荐

  1. 比特币 交易程序 php,比特币PHP离线交易开发包

    BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸交 ...

  2. 以太坊PHP离线交易开发包

    2019独角兽企业重金招聘Python工程师标准>>> EthTool开发包适用于希望采用裸交易的PHP以太坊应用开发,主要包含以下特性: 支持裸交易部署/调用合约 内置ethers ...

  3. linux 离线地图开发包,Mapbox本地离线部署

    一 离线部署说明 从官网抄一个HelloWorld的例子,完整代码如下: Display a map body { margin:0; padding:0; } #map { position:abs ...

  4. python获取期货行情_GitHub - lyymee/tqsdk-python: 期货行情/历史数据/交易 开发包

    Introduction TqSdk 是一套依托 DIFF协议 (Differential Information Flow for Finance) 的开源 python 框架. 它支持用户使用较少 ...

  5. 比特币交易平台软件开发:比特币和以太坊有什么区别?

    2019独角兽企业重金招聘Python工程师标准>>> 在一些基本方面, 比特币BTC 和 以太坊ETH 有许多相似之处,但两者在功能和预期用途方面存在重大差异. 介绍 比特币是世界 ...

  6. 新加坡比特币交易平台美女CEO自杀身亡(图)

    据财新网报道,2月27日techinasia网站消息,新加坡比特币交易平台FirstMeta的28岁美女CEO秋·莱德科(autumnradtke)日前自杀身亡,自杀原因未知. FirstMeta是新 ...

  7. 比特币现金与比特币呈竞争关系 分析表示加密货币之间的竞争不是坏事

    自比特币现金于2017年8月诞生以来,其价格在最初大涨之后出现了普遍下滑的趋势,而比特币价格却一直在打破纪录新高.许多人认为比特币现金是比特币的直接竞争对手. 比特币现金价格激增已经导致像eToro这 ...

  8. 比特币耶稣Roger Ver:比特币现金是比特币扩容问题的答案

    深猴财经/xiaoyemeidian 消息,比特币耶稣Roger Ver和Yours.org首席执行官Ryan X. Charles本周在香港四季酒店录制了一期视频节目,这两个人讨论了他们对于数字货币 ...

  9. Python Tron波场 离线交易签名

    Python TRON交易离线签名 本次演示使用http json 格式的数据进行签名 ⚠️此开发包 需要用到动态链接库 需要下载的小伙伴 可以去github 下载 签名说明 步骤 取交易的rawda ...

最新文章

  1. oracle 前端ui框架,Layui(前端UI框架) 2.6.4 官方最新版
  2. report service常见处理办法
  3. 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
  4. 为什么linux的TTY登录程序getty/agetty一般都会设置一个-L的option?
  5. Git中pull,commit和push的概念
  6. html怎么让图片重叠_PS倒影效果怎么做,如何利用PS给产品制作倒影
  7. 【Linux】进程间通信-命名管道FIFO
  8. 诗与远方:无题(九十三)
  9. java编程编一个小系统_如何编写一个java学生信息管理系统?
  10. 线程同步:喂,SHE
  11. EyouCms前台GetShell漏洞复现
  12. HTML5多文件上传插件----zyUpload
  13. ROM 和 RAM 区别
  14. vue 移动端弹窗后禁止页面滚动 @touchmove.prevent
  15. Stimulsoft BI Designer创建报告和仪表板
  16. 仿人人客户端向右滑出式菜单
  17. 12【不定式  动名词】to-infinitive gerund
  18. #### 联合索引存储结构 ####
  19. SAP 可配置BOM创建
  20. mybatis 连带操作(注解方式)(两张表关联,一张表插入一条新数据,另外一张表也跟着插入一条新数据)

热门文章

  1. android 窗口缩放,Android界面整体缩放
  2. js更改html元素颜色,HTML - 使用JS根据值更改文本的颜色
  3. php对连接加密后传,PHP 加密解密和解决URL传输问题
  4. 江苏小高考计算机知识点,江苏小高考知识点
  5. 将ejs转为html,Node.js Express Web应用框架ejs修改为html
  6. java实现将A表数据转移到B表_解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表(merge into)...
  7. 如何将一个字典转换为玲阶矩阵_基础渲染系列(一)图形学的基石——矩阵
  8. 16 个 Redis 常见使用场景
  9. 微信“红包封面”终于开放:这样免费定制!
  10. IntelliJ IDEA 2020.2 发布:支持Java 15、GitHub审查、运行时异常的排查辅助...