主页 > imtoken钱包新版下载 > php兑换usdt Tron/usdt-trc20对接PHP开发包

php兑换usdt Tron/usdt-trc20对接PHP开发包

imtoken钱包新版下载 2023-06-06 07:41:16

TronTool开发包适用于为PHP应用快速添加对Tron/USDT-TRC20数字资产的支持,即支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。 TronTool 官方下载地址:.

一、开发包概述

TronTool开发包主要包括以下功能:

TronTool软件包运行于Php 7.1+环境,当前版本为1.0.0,主要类/接口及关系如下图所示:

php兑换usdt_火币网usdt兑换人民币_泰达币usdt

TronTool的主要代码文件列表请参考官网说明:.

2.使用示例代码2.1新建地址

在终端中进入demo代码目录,执行以下命令:

 ~$ cd ~/trontool/ demo 
~/trontool/demo$ php New address Demo.php  

执行结果如下:

火币网usdt兑换人民币_php兑换usdt_泰达币usdt

2.2 Trx转账及余额查询

在终端中进入demo代码目录,执行以下命令:

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

执行结果如下:

泰达币usdt_火币网usdt兑换人民币_php兑换usdt

2.3 Trc20代币转账、余额查询和事件监听

在终端中进入demo代码目录,执行以下命令:

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

执行结果如下:

火币网usdt兑换人民币_泰达币usdt_php兑换usdt

2.4 波场智能合约部署

在终端中进入demo代码目录,执行以下命令:

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

执行结果如下:

火币网usdt兑换人民币_泰达币usdt_php兑换usdt

2.使用TronKit

TronKit是开发包的入口,使用这个类可以快速实现以下功能:

2.1 实例化TronKit

TronKit的实例化需要传入TronApi对象和Credential对象。 这两个参数分别封装了Tron节点提供的API和签署交易的用户身份信息。

例如,以下代码创建一个连接到波场主链的 TronKit 实例php兑换usdt,并使用指定的私钥对交易进行签名:

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

2.2 Trx转账及余额查询

使用TronKit的sendTrx()方法转账Trx,例如发送1000个TRX:

 $to = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx';                 //转账目标地址
$amount = 1000000000;                                       //转账金额,单位:SUN
$ret = $kit->sendTrx($to,$amount);                          //提交Trx转账交易
echo 'txid => ' . $ret->tx->txID .  PHP_EOL;                //显示交易ID
echo 'result => ' . $ret->result . PHP_EOL;                 //显示交易结果  

注:金额单位需换算为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代币转移

使用Trc20()方法获取指定的TRC20代币合约实例,然后调用合约的transfer()方法进行TRC20代币的转账。 例如,以下代码指定地址间转账最小单位为1,315,300个USDT-TRC20代币,即1.3153 USDT:

 $to = 'TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx';                 //转账目标地址
$amount = 1315300;                                          //转账Trc20代币数量
$contractAddress = 'TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t'     //USDT-TRC20代币合约的部署地址
$usdt = $kit->Trc20($contractAddress);                      //创建Trc20代币合约实例
$ret = $usdt->transfer($to,$amount);                        //转账Trc20代币
echo 'txid => ' . $ret->tx->txID .  PHP_EOL;                //显示转账交易ID
echo 'result => ' . $ret->result . PHP_EOL;                 //显示转账交易结果  

2.4 TRC20代币余额查询

使用Trc20()方法获取指定TRC20代币合约实例,然后调用合约的balanceOf()方法查询指定地址的TRC20代币余额。 例如,以下代码查询指定地址的USDT代币余额:

 $usdt = $kit->Trc20('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');          //创建USDT-TRC20代币合约实例
$balance = $usdt->balanceOf('TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx');  //查询Trc20代币余额
echo 'usdt balance => ' . $balance . PHP_EOL;                       //显示代币余额  

2.5 TRC20代币事件查询

使用Trc20()方法获取指定TRC20代币合约实例,然后调用合约的events()方法查询指定合约的触发事件。

例如查询USDT代币合约最近10秒的事件:

 $usdt = $kit->Trc20('TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t');    //创建Trc20代币合约实例
$since = time() - 10000;                                      //计算检查时间点
$events = $usdt->events($since);                              //提取合约事件
foreach($events as $event){                                   
  echo 'block height => ' . $event->block_number . PHP_EOL;   //显示事件触发的区块高度
  echo 'event name => ' . $event->event_name . PHP_EOL;       //显示事件名称
}    

events()返回的结果是一个事件对象数组,每个成员对象的主要字段说明如下:

例如,以下是 TRC20 代币合约的 Transfer 事件对象的 JSON 表示。 event_name字段给出事件名称,result字段给出两种索引形式的事件参数:

 {
  "caller_contract_address": "TS2Hzo6KpAc8Ym2nGb3idpMtUpM2GiK2gL",
  "transaction_id": "265cf378f4943b7c77b7a294f533d4b8c718c297dd28a664848d77cd3f3a0af0",
  "result": {
    "0": "0x2539ef4f3eb733c105a957eebb20fd60ad8c9a43",      //事件参数0
    "1": "0x6f6794f3904ff51f9fa81e928afdec91f6744a50",      //事件参数1
    "2": "8",                                               //事件参数2        
    "_from": "0x2539ef4f3eb733c105a957eebb20fd60ad8c9a43",  //事件参数_from
    "_value": "8",                                          //事件参数_value
    "_to": "0x6f6794f3904ff51f9fa81e928afdec91f6744a50"     //事件参数_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 区块链身份和地址表示

在 TronTool 中php兑换usdt,Credential 用于表示 Tron 区块链中的用户身份,Address 用于表示 Tron 区块链中的地址。 两者的区别在于Credential包含了用户的私钥信息,可以用来签署交易,所以需要保护,而Address是可以公开的信息。

使用 Credential 类的静态方法 create() 创建一个新帐户。 例如,以下代码创建一个新帐户并显示其私钥、公钥和地址:

 use TronTool\Credential;
$credential = Credential::create();                           //创建新账号
echo 'private key => ' . $credential->privateKey() . PHP_EOL; //显示私钥
echo 'public key => ' . $credential->publicKey() . PHP_EOL;   //显示公钥
echo 'address => ' . $credential->address() . PHP_EOL;        //显示地址  

可以通过使用静态方法 fromPrivateKey() 导入现有的私钥来实例化 Credential。 例如,以下代码导入现有私钥并​​显示地址:

 use TronTool\Credential;
$credential = Credential::fromPrivateKey('7889...023a');      //导入已有私钥
echo 'address => ' . $credential->address() . PHP_EOL;        //显示相应地址  

在 Tron 区块链中,地址有两种表示形式:十六进制和 base58 表示形式。 例如,以下是同一地址的两种表示形式:

Address类包含相应的编解码逻辑,Address可以使用不同形式的地址进行实例化。 例如:

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

有时我们只需要简单地将地址在base58和16进制之间进行转换即可。 这时就不需要中间的Address对象了,直接使用静态方法encode()和decode()就可以了。 例如:

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

4.使用TronApi访问波场节点API

使用 TronApi 访问 Tron 的各种节点 API。 TronApi聚合了各种Tron节点提供的API,例如tron全节点、solidity节点、事件服务节点的API。

在实例化 TronApi 时,可以为不同类型的 Tron 节点指定不同的连接 URL,例如:

 use TronTool\TronApi;
$tc = new TronApi(
  '#39;,       //全节点URL
  '#39;,       //合约节点URL
  '#39;        //事件节点URL
);  

当以上三个节点的url相同时,可以简写为:

 $tc = new TronApi('#39;);  

如果使用Tron官方提供的TronGrid节点,可以直接使用TronApi提供的两个静态函数mainNet()和testNet()分别访问主链和shasta测试链。

例如,以下代码是等效的:

 $tc = new TronApi('#39;);
$tc = TronApi::mainNet();                       //与上面等效
$tc = new TronApi('#39;);
$tc = TronApi::testNet();                       //与上面等效  

TronApi封装了波场官方各个节点提供的API,基本保持了对应关系,方便查找和使用。 例如查询一个账户的TRX余额:

 $info = $tc->getAccount('TEgM5CPeqowkKUXoKrFrpvB7vcBgVkD4tP');  //查询账户信息
echo 'balance -> ' . $info->balance . PHP_EOL;                  //显示账户余额    

Tron区块链对接PHP开发包: