最新公告
  • 欢迎您光临都潮汇,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 价值3000的波场Tron/USDT-TRC20 PHP开发包 区块链

    价值3000的波场Tron/USDT-TRC20 PHP开发包 区块链 最后编辑:2021-06-15
    增值服务: 自动发货 使用说明 安装指导 环境配置二次开发BUG修复

    1、开发包概述

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

    TronTool开发包主要包含以下特性:

    • 支持Tron区块链原生Trx交易
    • 支持Tron智能合约以及TRC20代币,例如USDT-TRC20等
    • 支持交易的离线签名,避免泄露私钥
    • 完善的Tron节点API封装,支持全节点、Solidity节点和事件节点提供的API
    • 支持使用自有节点或第三方节点,例如Tron官方提供的公共节点

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

    trontool arch

    TronTool的主要代码文件清单如下:

    代码文件 说明
    tron.php/src/TronKit.php Tron开发包入口类
    tron.php/src/Trc20.php Tron TRC20智能合约封装类
    tron.php/src/Contract.php Tron智能合约封装类
    tron.php/src/Credential.php Tron区块链身份标识类,用于交易签名
    tron.php/src/Address.php Tron地址表示类
    tron.php/src/TronApi.php Tron节点API聚合封装类
    tron.php/src/NodeClient.php HTTP协议封装类
    demo/NewAddressDemo.php 演示代码,创建新的Tron区块链地址
    demo/TrxDemo.php 演示代码,Trx转账交易及余额查询
    demo/Trc20Demo.php 演示代码,Trc20代币转账、余额查询、事件监听等
    demo/DeployContractDemo.php 演示代码,智能合约的部署
    demo/build-contract.php 示例Trc20代币合约的构建脚本
    demo/contract/EzToken.sol 示例Trc20代币合约
    demo/contract/build/EzToken.abi 示例Trc20代币合约的ABI文件
    demo/contract/build/EzToken.bin 示例Trc20代币合约的字节码文件
    vendor 第三方依赖包目录
    composer.json composer配置文件

    2、使用示例代码

    2.1 创建新地址

    在终端进入演示代码目录,执行如下命令:

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

    执行结果如下:

    2.2 Trx转账及余额查询

    在终端进入演示代码目录,执行如下命令:

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

    执行结果如下:

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

    在终端进入演示代码目录,执行如下命令:

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

    执行结果如下:

    2.4 Tron智能合约部署

    在终端进入演示代码目录,执行如下命令:

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

    执行结果如下:

    2、使用TronKit

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

    • Trx转账与余额查询
    • Trc20代币转账、授权、余额查询等

    2.1 实例化TronKit

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

    例如,下面的代码创建一个接入Tron主链的TronKit实例,并使用 指定的私钥进行交易签名:

    use TronTool\TronKit;
    use TronTool\TronApi;
    use TronTool\Credential;
    
    $kit = new TronKit(
      TronApi::mainNet('25f66928-0b70-48cd-9ac6-da6f8247c663'), //接入主链
      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代币转账。例如,下面的代码 指定地址间转账1315300个最小单位的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()返回的结果是一个事件对象数组,每个成员对象的主要字段 说明如下:

    • caller_contract_address:调用合约地址,base58格式
    • transaction_id:触发合约事件的交易ID,16进制字符串
    • result:合约事件参数列表,数组
    • result_type:合约事件参数类型列表,数组
    • block_timestamp:事件所在区块时间戳,整数
    • block_number:事件所在区块号,整数
    • event_name:事件名称,字符串
    • contract_address:合约地址,base58格式
    • event_index:事件索引序号,整数

    例如,下面是一个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中,使用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区块链中,地址有两种表示: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进制之间转换地址,这时并 不需要中间的Address对象,可以直接使用静态方法encode()和decode()。 例如:

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

    4、使用TronApi访问Tron节点API

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

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

    use TronTool\TronApi;
    
    $tc = new TronApi(
      'https://api.shasta.trongrid.io',       //全节点URL
      'https://api.shasta.trongrid.io',       //合约节点URL
      'https://api.shasta.trongrid.io'        //事件节点URL
    );
    

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

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

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

    例如:

    $api = TronApi::mainNet(                         //接入主链
      '25f66928-0b70-48cd-9ac6-da6f8247c663'         //trongrid apikey
    );                       
    
    $api = TronApi::testNet();                       //接入shasta测试链
    

    注意:TronGrid要求提供APIKEY才能接入主链,可以到这里 注册后免费申请TronGrid APIKEY。

    TronApi封装了Tron官方多种节点提供的API,并基本保持了对应关系以 便于查找利用。例如查询账户的TRX余额:

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

    猜你喜欢

    本网站所有源码和软件均为作者提供和网友推荐收集整理而来!
    本站提供的所有模块、软件等资源,均不提供任何技术服务,请悉知!
    如您需要商用,请支持正版,本站提供的程序仅供学习和研究使用!
    资源每天实时更新,如遇压缩包解压密码,一律为:www.dch888.cn
    如有侵犯你版权的,请来信(邮箱:68628283@qq.com)指出,本站将立即改正。
    都潮汇 » 价值3000的波场Tron/USDT-TRC20 PHP开发包 区块链

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    都潮汇
    互联网精品资源网站源码分享平台
    • 2021-06-10Hi,初次和大家见面了,请多关照!

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供服务器防御、部署、优化等服务
      2、承接直销系统、区块链系统、各类APP、DAPP开发、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 68628283@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系作者
  • © 2021 DCH888.Cn Theme. All rights reserved 粤ICP备19140750号-3

  • XML地图 | 站长导航
    升级SVIP尊享更多特权立即升级