您好,登錄后才能下訂單哦!
本篇內容介紹了“PHP BnbTool開發包有哪些特性”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
BnbTool開發包適用于為PHP應用快速增加對 幣安鏈 / Binance Chain 數字資產的支持能力, 即支持使用自有部署區塊鏈節點的應用場景,也支持基于第三方節點開放API服務的輕量級部署場景。
BnbTool開發包是一個完整的幣安鏈PHP開發包,可以極大地提升區塊鏈錢包、交易平臺或區塊鏈應用開發過程中與幣安鏈的對接實現效率。BnbTool主要包含以下特性:
完善的幣安鏈節點RPC API與Rest API封裝
完善的Tendermint Amino編解碼器PHP實現
離線管理私鑰,離線簽名交易,離線序列化/反序列化交易
透明支持自有節點或第三方節點訪問幣安鏈,例如查詢數據或廣播交易
BnbTool軟件包運行在**Php 7.1+**環境下,當前版本1.0.0,主要實現類/接口及相互之間的關系如下圖所示:
下載開發包并解壓后,進入demo目錄運行演示代碼。
CryptoDemo.php演示了如何使用BnbTool的Crypto封裝類實現幣安鏈賬戶的創建與恢復,簽名的生成與驗證。
在終端執行如下命令啟動CryptoDemo:
~$ php CryptoDemo.php
運行結果類似下圖:
RpcClientDemo.php演示了如何使用BnbTool的RpcClient調用幣安鏈節點的RPC API。
在終端執行如下命令啟動RpcClientDemo:
~$ php RpcClientDemo.php
運行結果類似下圖:
RestClientDemo.php演示了如何使用BnbTool的RestClient調用 幣安鏈的Rest API。
在終端執行如下命令啟動RestClientDemo:
~$ php RestClientDemo.php
運行結果類似下圖:
ToolKitDemo.php演示了如何使用BnbTool的ToolKit入口類實現幣安鏈賬戶的創建、轉賬、余額查詢與歷史交易查詢。
在終端執行如下命令啟動ToolKitDemo:
~$ php ToolKitDemo.php
運行結果類似下圖:
ToolKit是BnbTool的入口類,利用它可以快速完成幣安鏈賬戶的創建、轉賬、DEX掛單等操作。ToolKit的主要屬性與方法如下:
屬性
keyStore:密鑰庫實例
restClient:幣安鏈Rest API客戶端實例
方法
newAddress():創建新賬戶并返回生成的地址,新的私鑰/地址自動加入密鑰庫
importKey():導入指定的私鑰并返回對應的地址,該私鑰/地址自動加入密鑰庫
transfer():執行代幣轉賬交易
placeOrder():在DEX委托掛單
cancleOrder():取消DEX上的委托單
freezeToken():凍結指定數量的代幣
unfreezeToken():解凍指定數量的代幣
dexList():在DEX上市交易對
實例化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');
使用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; //顯示恢復的地址
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"; //顯示賬戶地址
使用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的密鑰庫中已有該發起賬號的私鑰。
由于幣安鏈的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"; //顯示幣種符號與可用余額 }
類似的,使用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開發包有哪些特性”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。