比特币交易平台 php,比特币PHP离线交易开发包
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离线交易开发包相关推荐
- 比特币 交易程序 php,比特币PHP离线交易开发包
BtcTool是一个基于第三方服务和离线裸交易实现的PHP比特币应用开发包,适合不希望部署本地 节点旳PHP开发者,开发包主要包含以下特性: 利用第三方服务获取指定地址的utxo集合 离线生成消费裸交 ...
- 以太坊PHP离线交易开发包
2019独角兽企业重金招聘Python工程师标准>>> EthTool开发包适用于希望采用裸交易的PHP以太坊应用开发,主要包含以下特性: 支持裸交易部署/调用合约 内置ethers ...
- linux 离线地图开发包,Mapbox本地离线部署
一 离线部署说明 从官网抄一个HelloWorld的例子,完整代码如下: Display a map body { margin:0; padding:0; } #map { position:abs ...
- python获取期货行情_GitHub - lyymee/tqsdk-python: 期货行情/历史数据/交易 开发包
Introduction TqSdk 是一套依托 DIFF协议 (Differential Information Flow for Finance) 的开源 python 框架. 它支持用户使用较少 ...
- 比特币交易平台软件开发:比特币和以太坊有什么区别?
2019独角兽企业重金招聘Python工程师标准>>> 在一些基本方面, 比特币BTC 和 以太坊ETH 有许多相似之处,但两者在功能和预期用途方面存在重大差异. 介绍 比特币是世界 ...
- 新加坡比特币交易平台美女CEO自杀身亡(图)
据财新网报道,2月27日techinasia网站消息,新加坡比特币交易平台FirstMeta的28岁美女CEO秋·莱德科(autumnradtke)日前自杀身亡,自杀原因未知. FirstMeta是新 ...
- 比特币现金与比特币呈竞争关系 分析表示加密货币之间的竞争不是坏事
自比特币现金于2017年8月诞生以来,其价格在最初大涨之后出现了普遍下滑的趋势,而比特币价格却一直在打破纪录新高.许多人认为比特币现金是比特币的直接竞争对手. 比特币现金价格激增已经导致像eToro这 ...
- 比特币耶稣Roger Ver:比特币现金是比特币扩容问题的答案
深猴财经/xiaoyemeidian 消息,比特币耶稣Roger Ver和Yours.org首席执行官Ryan X. Charles本周在香港四季酒店录制了一期视频节目,这两个人讨论了他们对于数字货币 ...
- Python Tron波场 离线交易签名
Python TRON交易离线签名 本次演示使用http json 格式的数据进行签名 ⚠️此开发包 需要用到动态链接库 需要下载的小伙伴 可以去github 下载 签名说明 步骤 取交易的rawda ...
最新文章
- oracle 前端ui框架,Layui(前端UI框架) 2.6.4 官方最新版
- report service常见处理办法
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历(BFS)
- 为什么linux的TTY登录程序getty/agetty一般都会设置一个-L的option?
- Git中pull,commit和push的概念
- html怎么让图片重叠_PS倒影效果怎么做,如何利用PS给产品制作倒影
- 【Linux】进程间通信-命名管道FIFO
- 诗与远方:无题(九十三)
- java编程编一个小系统_如何编写一个java学生信息管理系统?
- 线程同步:喂,SHE
- EyouCms前台GetShell漏洞复现
- HTML5多文件上传插件----zyUpload
- ROM 和 RAM 区别
- vue 移动端弹窗后禁止页面滚动 @touchmove.prevent
- Stimulsoft BI Designer创建报告和仪表板
- 仿人人客户端向右滑出式菜单
- 12【不定式 动名词】to-infinitive gerund
- #### 联合索引存储结构 ####
- SAP 可配置BOM创建
- mybatis 连带操作(注解方式)(两张表关联,一张表插入一条新数据,另外一张表也跟着插入一条新数据)
热门文章
- android 窗口缩放,Android界面整体缩放
- js更改html元素颜色,HTML - 使用JS根据值更改文本的颜色
- php对连接加密后传,PHP 加密解密和解决URL传输问题
- 江苏小高考计算机知识点,江苏小高考知识点
- 将ejs转为html,Node.js Express Web应用框架ejs修改为html
- java实现将A表数据转移到B表_解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表(merge into)...
- 如何将一个字典转换为玲阶矩阵_基础渲染系列(一)图形学的基石——矩阵
- 16 个 Redis 常见使用场景
- 微信“红包封面”终于开放:这样免费定制!
- IntelliJ IDEA 2020.2 发布:支持Java 15、GitHub审查、运行时异常的排查辅助...