比特币PHP离线交易开发包

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

内容简介: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离线交易开发包》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Modeling the Internet and the Web

Modeling the Internet and the Web

Pierre Baldi、Paolo Frasconi、Padhraic Smyth / Wiley / 2003-7-7 / USD 115.00

Modeling the Internet and the Web covers the most important aspects of modeling the Web using a modern mathematical and probabilistic treatment. It focuses on the information and application layers, a......一起来看看 《Modeling the Internet and the Web》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具