真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

本篇內(nèi)容主要講解“PHP TronTool開發(fā)包有哪些特性”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“PHP TronTool開發(fā)包有哪些特性”吧!

我們提供的服務有:網(wǎng)站制作、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、撫順縣ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術(shù)的撫順縣網(wǎng)站制作公司

TronTool開發(fā)包適用于為PHP應用快速增加對Tron/USDT-TRC20數(shù)字資產(chǎn)的支持能力,即支持使用自有Tron區(qū)塊鏈節(jié)點的應用場景,也支持基于Tron官方公共API服務的輕量級部署場景。

1、開發(fā)包概述

TronTool開發(fā)包主要包含以下特性:

  • 支持Tron區(qū)塊鏈原生Trx交易

  • 支持Tron智能合約以及TRC20代幣,例如USDT-TRC20等

  • 支持交易的離線簽名,避免泄露私鑰

  • 完善的Tron節(jié)點API封裝,支持全節(jié)點、Solidity節(jié)點和事件節(jié)點提供的API

  • 支持使用自有節(jié)點或第三方節(jié)點,例如Tron官方提供的公共節(jié)點

TronTool軟件包運行在**Php 7.1+**環(huán)境下,當前版本1.0.0,主要類/接口及關(guān)系如下圖所示:

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

TronTool的主要代碼文件清單參見官網(wǎng)說明:TronTool PHP 。

2、使用示例代碼

2.1 創(chuàng)建新地址

在終端進入演示代碼目錄,執(zhí)行如下命令:

~$ cd ~/trontool/demo
~/trontool/demo$ php NewAddressDemo.php

執(zhí)行結(jié)果如下:

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

2.2 Trx轉(zhuǎn)賬及余額查詢

在終端進入演示代碼目錄,執(zhí)行如下命令:

~$ cd ~/trontool/demo
~/trontool/demo$ php TrxDemo.php

執(zhí)行結(jié)果如下:

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

2.3 Trc20代幣轉(zhuǎn)賬、余額查詢及事件監(jiān)聽

在終端進入演示代碼目錄,執(zhí)行如下命令:

~$ cd ~/trontool/demo
~/trontool/demo$ php Trc20Demo.php

執(zhí)行結(jié)果如下:

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

2.4 Tron智能合約部署

在終端進入演示代碼目錄,執(zhí)行如下命令:

~$ cd ~/trontool/demo
~/trontool/demo$ php DeployContractDemo.php

執(zhí)行結(jié)果如下:

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

2、使用TronKit

TronKit是開發(fā)包的入口,使用這個類可以快速實現(xiàn)如下功能:

  • Trx轉(zhuǎn)賬與余額查詢

  • Trc20代幣轉(zhuǎn)賬、授權(quán)、余額查詢等

2.1 實例化TronKit

TronKit實例化需要傳入TronApi對象和Credential對象,這兩個參數(shù)分別封裝了Tron節(jié)點提供的API,以及進行交易簽名的用戶身份信息。

例如,下面的代碼創(chuàng)建一個接入Tron主鏈的TronKit實例,并使用指定的私鑰進行交易簽名:

use TronTool\TronKit;
use TronTool\TronApi;
use TronTool\Credential;

$kit = new TronKit(
  TronApi::mainNet(),                                       //接入主鏈
  Credential::fromPrivateKey('87c12d....d435')              //使用指定私鑰
);

2.2 Trx轉(zhuǎn)賬及余額查詢

使用TronKit的sendTrx()方法進行Trx轉(zhuǎn)賬,例如發(fā)送1000 TRX:

$to = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx';                 //轉(zhuǎn)賬目標地址
$amount = 1000000000;                                       //轉(zhuǎn)賬金額,單位:SUN
$ret = $kit->sendTrx($to,$amount);                          //提交Trx轉(zhuǎn)賬交易
echo 'txid => ' . $ret->tx->txID .  PHP_EOL;                //顯示交易ID
echo 'result => ' . $ret->result . PHP_EOL;                 //顯示交易結(jié)果

注意:需要將金額單位轉(zhuǎn)換為SUN,1 TRX = 1000000 SUN。

使用getTrxBalance()方法查詢指定地址的Trx余額,例如:

$addr = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx';               //要查詢的Tron地址
$balance = $kit->getTrxBlanace($addr);                      //查詢Trx余額,單位:SUN
echo 'trx balance => ' . $balance . PHP_EOL;                //顯示余額

2.3 TRC20代幣轉(zhuǎn)賬

使用Trc20()方法獲取指定TRC20代幣合約實例,然后調(diào)用合約的transfer()方法進行TRC20代幣轉(zhuǎn)賬。例如,下面的代碼指定地址間轉(zhuǎn)賬1315300個最小單位的USDT-TRC20代幣,即1.3153 USDT:

$to = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx';                 //轉(zhuǎn)賬目標地址
$amount = 1315300;                                          //轉(zhuǎn)賬Trc20代幣數(shù)量
$contractAddress = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'     //USDT-TRC20代幣合約的部署地址
$usdt = $kit->Trc20($contractAddress);                      //創(chuàng)建Trc20代幣合約實例
$ret = $usdt->transfer($to,$amount);                        //轉(zhuǎn)賬Trc20代幣
echo 'txid => ' . $ret->tx->txID .  PHP_EOL;                //顯示轉(zhuǎn)賬交易ID
echo 'result => ' . $ret->result . PHP_EOL;                 //顯示轉(zhuǎn)賬交易結(jié)果

2.4 TRC20代幣余額查詢

使用Trc20()方法獲取指定TRC20代幣合約實例,然后調(diào)用合約的balanceOf()方法查詢指定地址的TRC20代幣余額。例如,下面的代碼查詢指定地址的USDT代幣余額:

$usdt = $kit->Trc20('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');          //創(chuàng)建USDT-TRC20代幣合約實例
$balance = $usdt->balanceOf('TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx');  //查詢Trc20代幣余額
echo 'usdt balance => ' . $balance . PHP_EOL;                       //顯示代幣余額

2.5 TRC20代幣事件查詢

使用Trc20()方法獲取指定TRC20代幣合約實例,然后調(diào)用合約的events()方法查詢指定合約觸發(fā)事件。

例如查詢USDT代幣合約最近10秒的事件:

$usdt = $kit->Trc20('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');    //創(chuàng)建Trc20代幣合約實例
$since = time() - 10000;                                      //計算檢查時間點
$events = $usdt->events($since);                              //提取合約事件
foreach($events as $event){                                   
  echo 'block height => ' . $event->block_number . PHP_EOL;   //顯示事件觸發(fā)的區(qū)塊高度
  echo 'event name => ' . $event->event_name . PHP_EOL;       //顯示事件名稱
}

events()返回的結(jié)果是一個事件對象數(shù)組,每個成員對象的主要字段說明如下:

  • caller_contract_address:調(diào)用合約地址,base58格式

  • transaction_id:觸發(fā)合約事件的交易ID,16進制字符串

  • result:合約事件參數(shù)列表,數(shù)組

  • result_type:合約事件參數(shù)類型列表,數(shù)組

  • block_timestamp:事件所在區(qū)塊時間戳,整數(shù)

  • block_number:事件所在區(qū)塊號,整數(shù)

  • event_name:事件名稱,字符串

  • contract_address:合約地址,base58格式

  • event_index:事件索引序號,整數(shù)

例如,下面是一個TRC20代幣合約的Transfer事件對象的JSON表示,在event_name字段給出了事件名稱,在result字段則給出了兩種索引形式的事件參數(shù):

{
  "caller_contract_address": "TS2Hzo6KpAc8Ym2nGb3idpMtUpM2GiK2gL",
  "transaction_id": "265cf378f4943b7c77b7a294f533d4b8c718c297dd28a664848d77cd3f3a0af0",
  "result": {
    "0": "0x2539ef4f3eb733c105a957eebb20fd60ad8c9a43",      //事件參數(shù)0
    "1": "0x6f6794f3904ff51f9fa81e928afdec91f6744a50",      //事件參數(shù)1
    "2": "8",                                               //事件參數(shù)2        
    "_from": "0x2539ef4f3eb733c105a957eebb20fd60ad8c9a43",  //事件參數(shù)_from
    "_value": "8",                                          //事件參數(shù)_value
    "_to": "0x6f6794f3904ff51f9fa81e928afdec91f6744a50"     //事件參數(shù)_to
  },
  "result_type": {
    "_from": "address",                                     
    "_value": "uint256",
    "_to": "address"
  },
  "block_timestamp": 1586263455000,
  "block_number": 3539438,
  "event_name": "Transfer",                                 //事件名稱   
  "contract_address": "TS2Hzo6KpAc8Ym2nGb3idpMtUpM2GiK2gL",
  "event_index": 0
}

3、Tron區(qū)塊鏈身份與地址表示

在TronTool中,使用Credential表征Tron區(qū)塊鏈中的一個用戶身份,使用Address表征Tron區(qū)塊鏈中的一個地址。兩者的區(qū)別在于Credential包含了用戶的私鑰信息,可以用來簽名交易,因此需要保護,而Address則是可以公開的信息。

使用Credential類的靜態(tài)方法create()創(chuàng)建新賬戶。例如,下面的代碼創(chuàng)建一個新的賬戶并顯示其私鑰、公鑰和地址:

use TronTool\Credential;

$credential = Credential::create();                           //創(chuàng)建新賬號
echo 'private key => ' . $credential->privateKey() . PHP_EOL; //顯示私鑰
echo 'public key => ' . $credential->publicKey() . PHP_EOL;   //顯示公鑰
echo 'address => ' . $credential->address() . PHP_EOL;        //顯示地址

可以使用靜態(tài)方法fromPrivateKey()導入已有的私鑰來實例化Credential。例如下面的代碼導入已有私鑰并顯示地址:

use TronTool\Credential;

$credential = Credential::fromPrivateKey('7889...023a');      //導入已有私鑰
echo 'address => ' . $credential->address() . PHP_EOL;        //顯示相應地址

在Tron區(qū)塊鏈中,地址有兩種表示:16進制和base58表示,例如下面是同一個地址的兩種表示:

  • base58:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

  • 16進制: 412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

Address類包含了相應的編解碼邏輯,可以方面的利用不同形式的地址實例化Address。例如:

$a1 = Address::fromBase58('TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx');
echo $a1->hex() . PHP_EOL;        //輸出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

$a2 = Address::fromHex('412539EF4F3EB733C105A957EEBB20FD60AD8C9A43');
echo $a2->base58() . PHP_EOL;     //輸出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

有時我們只需要簡單的在base58和16進制之間轉(zhuǎn)換地址,這時并不需要中間的Address對象,可以直接使用靜態(tài)方法encode()和decode()。例如:

$a1 = Address::decode('TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx');
echo $a1 . PHP_EOL;             //輸出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

$a2 = Address::encode('412539EF4F3EB733C105A957EEBB20FD60AD8C9A43');
echo $a2 . PHP_EOL;             //輸出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

4、使用TronApi訪問Tron節(jié)點API

使用TronApi訪問Tron的各種節(jié)點API。TronApi聚合了多種Tron節(jié)點提供的API,例如tron全節(jié)點、solidity節(jié)點和事件服務節(jié)點的API。

實例化TronApi時,可以分別為不同類型的Tron節(jié)點指定不同的連接URL,例如:

use TronTool\TronApi;

$tc = new TronApi(
  'https://api.trongrid.io',       //全節(jié)點URL
  'https://api.trongrid.io',       //合約節(jié)點URL
  'https://api.trongrid.io'        //事件節(jié)點URL
);

當上述三個節(jié)點的URL相同時,可以簡寫為:

$tc = new TronApi('https://api.trongrid.io');

如果用的是Tron官方提供的TronGrid節(jié)點,那么可以直接使用TronApi提供的兩個靜態(tài)函數(shù)mainNet()和testNet(),分別接入主鏈和shasta測試鏈。

例如,下面的代碼是等效的:

$tc = new TronApi('https://api.trongrid.io');
$tc = TronApi::mainNet();                       //與上面等效

$tc = new TronApi('https://api.shasta.trongrid.io');
$tc = TronApi::testNet();                       //與上面等效

TronApi封裝了Tron官方多種節(jié)點提供的API,并基本保持了對應關(guān)系以便于查找利用。例如查詢賬戶的TRX余額:

$info = $tc->getAccount('TEgM5CPeqowkKUXoKrFrpvB7vcBgVkD4tP');  //查詢賬戶信息
echo 'balance -> ' . $info->balance . PHP_EOL;                  //顯示賬戶余額

到此,相信大家對“PHP TronTool開發(fā)包有哪些特性”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!


網(wǎng)站標題:PHPTronTool開發(fā)包有哪些特性
轉(zhuǎn)載來于:http://weahome.cn/article/peodcs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部