PHP BnbTool开发包有哪些特性

技术PHP BnbTool开发包有哪些特性本篇内容介绍了“PHP BnbTool开发包有哪些特性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

本文介绍了关于“PHP BnbTool开发工具包的特性是什么”的知识。很多人在实际的案件操作过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

BnbTool开发包适合PHP应用快速增加对币安链/Binance链数字资产的支持,即使用自身部署区块链节点的应用场景,以及基于第三方节点开放API服务的轻量级部署场景。

1、开发包概述

BnbTool开发工具包是一个完整的货币安全链PHP开发工具包,在区块链钱包、交易平台或区块链应用的开发过程中,可以大大提高与货币安全链对接的效率。BnbTool主要包括以下功能:

完善货币安全链节点的RPC API和Rest API包

嫩薄荷氨基编解码器的完美PHP实现

离线管理私钥、离线签名事务、离线序列化/反序列化事务。

支持透明自有节点或第三方节点访问货币安全链,如查询数据或广播交易。

BnbTool软件包运行在**Php 7.1 **环境中,当前版本为1.0.0。主要的实现类/接口及其关系如下图所示:

PHP  BnbTool开发包有哪些特性

00-1010下载并解压缩开发包后,进入演示目录运行演示代码。

2、使用演示代码

CryptoDemo.php演示了如何使用BnbTool的Crypto封装类实现货币安全链账户的创建和恢复、签名的生成和验证。

在终端执行以下命令启动密码演示:

~$phpCryptoDemo.php运行结果如下图所示:

PHP  BnbTool开发包有哪些特性

00-1010 RpcClientDemo.php演示了如何使用BnbTool的RpcClient调用安全链节点的RPC API。

在终端执行以下命令启动远程客户端远程操作:

~ $ phpRpcClientDemo.php运行结果如下图所示:

PHP  BnbTool开发包有哪些特性

00-1010 RestClientDemo.php演示了如何使用BnbTool的RestClient调用货币安全链的Rest API。

在终端执行以下命令来启动RestClientDemo:

~ $ phpRestClientDemo.php运行结果如下图所示:

PHP  BnbTool开发包有哪些特性

00-1010 ToolKitDemo.php演示了如何使用BnbTool的ToolKit入口类实现货币安全链账户的创建、转账、余额查询和历史交易查询。

在终端执行以下命令启动工具箱演示:

~ $ phpToolKitDemo.php运行结果如下图所示:

PHP  BnbTool开发包有哪些特性

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()方法支持分页处理,例如,下面的代码使用offsetlimit选项声明需要返回从100#开始的20个交易:

    $ret = $kit->restClient->getTransactions(
        'tbnb1hfw...x3kh9d7p5ryya',       //要查询的账户地址          
        [
          'offset'=>100,                  //记录起始位置
          'limit'=>20                     //返回记录数量
        ]
      );

    “PHP BnbTool开发包有哪些特性”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/119741.html

    (0)

    相关推荐

    • java转义字符正确使用方法(java转义字符是什么意思)

      技术Java中常见的转义字符有哪些本篇内容主要讲解“Java中常见的转义字符有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中常见的转义字符有哪些”吧!  在Ja

      攻略 2021年12月22日
    • rnn网络训练方法(rnn在时间序列的表现)

      技术RNN如何训练并预测时序信号RNN如何训练并预测时序信号,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。上期我们一起用RNN做了一个简单的手写字分类器

      攻略 2021年12月21日
    • 黑眼圈,快速去除黑眼圈的好方法有哪些

      技术黑眼圈,快速去除黑眼圈的好方法有哪些黑眼圈的形成原因比较复杂,总体可以按照成因分为以下2类黑眼圈:1、色素沉积型:一般为茶褐色,多由于日晒、不恰当的化妆和卸妆等导致的皮肤色素沉着。解决对策上应以减少色素沉积、促进黑色

      生活 2021年10月20日
    • html5是什么缩写(html5缩写成h5)

      技术html5是什么的缩写这篇文章给大家分享的是有关html5是什么的缩写的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 html5是HyperText Marku

      攻略 2021年12月13日
    • 世界三大蒸馏酒,什么酒能超越茅台的一哥地位

      技术世界三大蒸馏酒,什么酒能超越茅台的一哥地位目前不可能,放眼未来五十年都不会有其他品牌的酒超过。曾经年少的我们只要见到大人喝酒,都会远远避开,真不知道这些人,酒那么难喝那么难闻,居然还喝。随着小伙伴们不断长大,都炫耀的

      生活 2021年10月27日
    • MySQL不支持的功能

      技术MySQL不支持的功能今天就跟大家聊聊有关MySQL不支持的功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。MySQL不支持的功能这里介绍其他数据库中有而M

      攻略 2021年11月17日