溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP BnbTool開發(fā)包有哪些特性

發(fā)布時間:2021-11-26 17:22:36 來源:億速云 閱讀:163 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內容介紹了“PHP BnbTool開發(fā)包有哪些特性”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

BnbTool開發(fā)包適用于為PHP應用快速增加對 幣安鏈 / Binance Chain 數(shù)字資產的支持能力, 即支持使用自有部署區(qū)塊鏈節(jié)點的應用場景,也支持基于第三方節(jié)點開放API服務的輕量級部署場景。

1、開發(fā)包概述

BnbTool開發(fā)包是一個完整的幣安鏈PHP開發(fā)包,可以極大地提升區(qū)塊鏈錢包、交易平臺或區(qū)塊鏈應用開發(fā)過程中與幣安鏈的對接實現(xiàn)效率。BnbTool主要包含以下特性:

  • 完善的幣安鏈節(jié)點RPC API與Rest API封裝

  • 完善的Tendermint Amino編解碼器PHP實現(xiàn)

  • 離線管理私鑰,離線簽名交易,離線序列化/反序列化交易

  • 透明支持自有節(jié)點或第三方節(jié)點訪問幣安鏈,例如查詢數(shù)據(jù)或廣播交易

BnbTool軟件包運行在**Php 7.1+**環(huán)境下,當前版本1.0.0,主要實現(xiàn)類/接口及相互之間的關系如下圖所示:

PHP BnbTool開發(fā)包有哪些特性

2、使用演示代碼

下載開發(fā)包并解壓后,進入demo目錄運行演示代碼。

2.1 CryotoDemo

CryptoDemo.php演示了如何使用BnbTool的Crypto封裝類實現(xiàn)幣安鏈賬戶的創(chuàng)建與恢復,簽名的生成與驗證。

在終端執(zhí)行如下命令啟動CryptoDemo:

~$ php CryptoDemo.php

運行結果類似下圖:

PHP BnbTool開發(fā)包有哪些特性

2.2 RpcClientDemo

RpcClientDemo.php演示了如何使用BnbTool的RpcClient調用幣安鏈節(jié)點的RPC API。

在終端執(zhí)行如下命令啟動RpcClientDemo:

~$ php RpcClientDemo.php

運行結果類似下圖:

PHP BnbTool開發(fā)包有哪些特性

2.3 RestClientDemo

RestClientDemo.php演示了如何使用BnbTool的RestClient調用 幣安鏈的Rest API。

在終端執(zhí)行如下命令啟動RestClientDemo:

~$ php RestClientDemo.php

運行結果類似下圖:

PHP BnbTool開發(fā)包有哪些特性

2.4 ToolKitDemo

ToolKitDemo.php演示了如何使用BnbTool的ToolKit入口類實現(xiàn)幣安鏈賬戶的創(chuàng)建、轉賬、余額查詢與歷史交易查詢。

在終端執(zhí)行如下命令啟動ToolKitDemo:

~$ php ToolKitDemo.php

運行結果類似下圖:

PHP BnbTool開發(fā)包有哪些特性

3、ToolKit類使用說明

ToolKit是BnbTool的入口類,利用它可以快速完成幣安鏈賬戶的創(chuàng)建、轉賬、DEX掛單等操作。ToolKit的主要屬性與方法如下:

  • 屬性

    • keyStore:密鑰庫實例

    • restClient:幣安鏈Rest API客戶端實例

  • 方法

    • newAddress():創(chuàng)建新賬戶并返回生成的地址,新的私鑰/地址自動加入密鑰庫

    • importKey():導入指定的私鑰并返回對應的地址,該私鑰/地址自動加入密鑰庫

    • transfer():執(zhí)行代幣轉賬交易

    • placeOrder():在DEX委托掛單

    • cancleOrder():取消DEX上的委托單

    • freezeToken():凍結指定數(shù)量的代幣

    • unfreezeToken():解凍指定數(shù)量的代幣

    • dexList():在DEX上市交易對

3.1 ToolKit的實例化

實例化ToolKit需要傳入兩個參數(shù):幣安鏈節(jié)點Rest API服務地址,以及該節(jié)點接入的網(wǎng)絡。例如,使用本機的Rest API服務器接入Binance Chain的測試網(wǎng):

use BnbTool\ToolKit;

$kit = new ToolKit(
    'http://localhost:8080',            //Rest API訪問基地址
    'testnet'                           //測試鏈,可選:mainnet | testnet    
  );

ToolKit也提供了兩個靜態(tài)方法用來快速創(chuàng)建接入主網(wǎng)或測試網(wǎng)的實例:

$kit = ToolKit::mainnet();              //使用 https://dex.binance.org接入主網(wǎng)
$kit = ToolKit::testnet();              //使用 https://testnet-dex.binance.org接入測試網(wǎng)

容易理解,ToolKit::mainnet()等價于如下的代碼:

new ToolKit('https://dex.binance.org','mainnet');

3.2 賬戶創(chuàng)建與恢復

使用ToolKit的newAddress()方法創(chuàng)建新賬戶,該方法將生成隨機私鑰并返回該私鑰對應的地址,同時將私鑰信息存入ToolKit的密鑰庫。例如下面的代碼創(chuàng)建一個新的幣安鏈賬戶并顯示該賬戶的地址:

$address = $kit->newAddress();            //創(chuàng)建新賬戶并返回地址
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()方法執(zhí)行代幣轉賬交易。例如下面的代碼在兩個指定賬號間轉賬1.234個BNB代幣,并附備注信息:

$kit->importKey('....');                  //導入轉賬發(fā)起賬號的私鑰  

$ret = $kit->transfer(
    'tbnb1hfw...x3kh9d7p5ryya',           //轉賬發(fā)起賬號
    'tbnb1l5f...xcyt0ec40avsp',           //轉賬接收賬號
    'BNB',                                //代幣符號
    1.234,                                //代幣數(shù)量
    'rent'                                //備注信息
  )
echo "tx hash => {$ret[0]->hash}\n";      //顯示交易哈希

注意,由于交易需要發(fā)起賬號簽名,因此在調用transfer()方法之前,務必保證ToolKit的密鑰庫中已有該發(fā)起賬號的私鑰。

3.5 查詢賬戶余額

由于幣安鏈的Rest API更容易使用,ToolKit使用RestClient而不是RpcClient來與幣安鏈交互,可以通過ToolKit的restClient屬性來訪問預創(chuàng)建的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                     //返回記錄數(shù)量
    ]
  );

“PHP BnbTool開發(fā)包有哪些特性”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

php
AI