最新免费网站.棋牌.手游.端游.商业源码下载

游戏源码
当前位置: 主页 > 架设教程 > 网站源码教程

php数字钱包接口开发教程_对接比特币钱包的PHP开发包

时间:2022-09-09    来源:admin1    人气:

php数字钱包接口开发教程_对接比特币钱包的PHP开发包



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


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

离线生成消费裸交易

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

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

blockchain.info

btc.com


1. 代码清单

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

image.png



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(高费率)。 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完成






推荐文章

公众号