本文介绍了关于“PHP BnbTool开发工具包的特性是什么”的知识。很多人在实际的案件操作过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
BnbTool开发包适合PHP应用快速增加对币安链/Binance链数字资产的支持,即使用自身部署区块链节点的应用场景,以及基于第三方节点开放API服务的轻量级部署场景。
1、开发包概述
BnbTool开发工具包是一个完整的货币安全链PHP开发工具包,在区块链钱包、交易平台或区块链应用的开发过程中,可以大大提高与货币安全链对接的效率。BnbTool主要包括以下功能:
完善货币安全链节点的RPC API和Rest API包
嫩薄荷氨基编解码器的完美PHP实现
离线管理私钥、离线签名事务、离线序列化/反序列化事务。
支持透明自有节点或第三方节点访问货币安全链,如查询数据或广播交易。
BnbTool软件包运行在**Php 7.1 **环境中,当前版本为1.0.0。主要的实现类/接口及其关系如下图所示:
00-1010下载并解压缩开发包后,进入演示目录运行演示代码。
2、使用演示代码
CryptoDemo.php演示了如何使用BnbTool的Crypto封装类实现货币安全链账户的创建和恢复、签名的生成和验证。
在终端执行以下命令启动密码演示:
~$phpCryptoDemo.php运行结果如下图所示:
00-1010 RpcClientDemo.php演示了如何使用BnbTool的RpcClient调用安全链节点的RPC API。
在终端执行以下命令启动远程客户端远程操作:
~ $ phpRpcClientDemo.php运行结果如下图所示:
00-1010 RestClientDemo.php演示了如何使用BnbTool的RestClient调用货币安全链的Rest API。
在终端执行以下命令来启动RestClientDemo:
~ $ phpRestClientDemo.php运行结果如下图所示:
00-1010 ToolKitDemo.php演示了如何使用BnbTool的ToolKit入口类实现货币安全链账户的创建、转账、余额查询和历史交易查询。
在终端执行以下命令启动工具箱演示:
~ $ phpToolKitDemo.php运行结果如下图所示:
2.1 CryotoDemo
ToolKit是BnbTool的入口类,可用于快速完成货币安全链账户的创建、转账、DEX挂单等操作。ToolKit的主要属性和方法如下:
属性
密钥库:密钥库的实例
客户端:货币安全链的Rest API客户端实例
方法
ngleft-2" >
newAddress():创建新账户并返回生成的地址,新的私钥/地址自动加入密钥库
importKey():导入指定的私钥并返回对应的地址,该私钥/地址自动加入密钥库
transfer():执行代币转账交易
placeOrder():在DEX委托挂单
cancleOrder():取消DEX上的委托单
freezeToken():冻结指定数量的代币
unfreezeToken():解冻指定数量的代币
dexList():在DEX上市交易对
3.1 ToolKit的实例化
实例化ToolKit需要传入两个参数:币安链节点Rest API服务地址,以及该节点接入的网络。例如,使用本机的Rest API服务器接入Binance Chain的测试网:
use BnbTool\ToolKit; $kit = new ToolKit( 'http://localhost:8080', //Rest API访问基地址 'testnet' //测试链,可选:mainnet | testnet );
ToolKit也提供了两个静态方法用来快速创建接入主网或测试网的实例:
$kit = ToolKit::mainnet(); //使用 https://dex.binance.org接入主网 $kit = ToolKit::testnet(); //使用 https://testnet-dex.binance.org接入测试网
容易理解,ToolKit::mainnet()
等价于如下的代码:
new ToolKit('https://dex.binance.org','mainnet');
3.2 账户创建与恢复
使用ToolKit的newAddress()
方法创建新账户,该方法将生成随机私钥并返回该私钥对应的地址,同时将私钥信息存入ToolKit的密钥库。例如下面的代码创建一个新的币安链账户并显示该账户的地址:
$address = $kit->newAddress(); //创建新账户并返回地址 echo "new address: $address" . PHP_EOL; //显示新账户的地址
也可以使用importKey()
方法导入已有的私钥,该方法将返回所导入私钥对应的地址。例如下面代码导入指定的私钥并显示该账户的地址:
$prv = '49bd38a8...5af84709670fd'; //要导入ToolKit的私钥 $address = $kit->importKey($prv); //导入私钥并返回地址 echo "restored: $address" . PHP_EOL; //显示恢复的地址
3.3 使用密钥库
ToolKit使用密钥库来保存账户信息,密钥库遵从IKeyStore接口的4个方法:
-
add():添加账户信息
-
getAll():返回所有账户的列表
-
getByKey():查询指定私钥的账户
-
getByAddress():查询指定地址的账户
使用ToolKit的keyStore
属性就可以访问当前使用的密钥库对象。例如,下面的代码列表显示当前密钥库中的所有账户:
$items = $kit->keyStore->getAll(); //返回密钥库全部账户 foreach($items as $item){ //逐行显示账户私钥和地址 echo "key:{$item->key}, address: {$item->address}" . PHP_EOL; }
可以使用密钥的getByKey()
方法查询指定密钥的账户地址,例如:
$prv = '49bd38a8...5af84709670fd'; //要查询的私钥 $item = $kit->keyStore->getByKey($prv); //返回该私钥对应的账户记录 if(!is_null($item)) //如果找到的话 echo "address => {$item->address}\n"; //显示账户地址
3.4 转账交易
使用ToolKit的tranfer()
方法执行代币转账交易。例如下面的代码在两个指定账号间转账1.234个BNB代币,并附备注信息:
$kit->importKey('....'); //导入转账发起账号的私钥 $ret = $kit->transfer( 'tbnb1hfw...x3kh9d7p5ryya', //转账发起账号 'tbnb1l5f...xcyt0ec40avsp', //转账接收账号 'BNB', //代币符号 1.234, //代币数量 'rent' //备注信息 ) echo "tx hash => {$ret[0]->hash}\n"; //显示交易哈希
注意,由于交易需要发起账号签名,因此在调用transfer()
方法之前,务必保证ToolKit的密钥库中已有该发起账号的私钥。
3.5 查询账户余额
由于币安链的Rest API更容易使用,ToolKit使用RestClient而不是RpcClient来与币安链交互,可以通过ToolKit的restClient
属性来访问预创建的RestClient实例。
例如,下面的代码使用RestClient的getAccount()
方法来查询 指定账户的所有种类代币的余额并逐行显示:
$ret = $kit->restClient->getAccount('tbnb1hfw...x3kh9d7p5ryya'); //查询账户信息 foreach($ret->balances as $b){ //遍历全部币种 echo "symbol: {$b->symbol}, free: {$b->free}\n"; //显示币种符号与可用余额 }
3.6 查询账户的历史交易
类似的,使用RestClient的getTransactions()
方法,可以查询指定账户的历史交易。例如下面的代码:
$ret = $kit->restClient->getTransactions('tbnb1hfw...x37p5ryya'); //查询历史交易 foreach($ret->tx as $tx){ //遍历全部交易 echo json_encode($tx) . PHP_EOL; //显示交易内容 }
getTransactions()
方法支持分页处理,例如,下面的代码使用offset
和limit
选项声明需要返回从100#开始的20个交易:
$ret = $kit->restClient->getTransactions( 'tbnb1hfw...x3kh9d7p5ryya', //要查询的账户地址 [ 'offset'=>100, //记录起始位置 'limit'=>20 //返回记录数量 ] );
“PHP BnbTool开发包有哪些特性”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/119741.html