比特币PHP离线交易开发包

栏目: PHP · 发布时间: 5年前

内容简介:BtcTool开发包是一个基于第三方服务和离线裸交易的PHP比特币应用开发库,适合不希望部署本地 节点旳PHP开发者,开发库主要包含以下特性:BtcTool目前支持的第三方服务包括,并且可以非常简单进行扩展:BtcTool运行在

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 类,基本的使用步骤如下:

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

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

<?php
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);   //广播裸交易

注意:

  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完成


以上所述就是小编给大家介绍的《比特币PHP离线交易开发包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

敏捷软件开发

敏捷软件开发

马丁 / 邓辉、孙鸣 / 人民邮电出版社 / 2008-01-01 / 69.00元

《敏捷软件开发:原则模式和实践(C#版)》不仅是一部深入浅出、生动易懂的面向对象原则与设计模式著作。而且还是一部通俗的敏捷方法导引书和快速实用的LJML教程。通过《敏捷软件开发:原则模式和实践(C#版)》你会发现,许多以前看起来非常枯燥费解的概念,忽然间都豁然开朗。变得鲜活生动起来。 C#版与此前的Java版相比,主要的更新包括加强了UML的介绍章节。使其更加贴近实战;增加了对MVP模式的介......一起来看看 《敏捷软件开发》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具