千家信息网

怎么使用TronTool.Java

发表于:2025-12-06 作者:千家信息网编辑
千家信息网最后更新 2025年12月06日,这篇文章主要介绍"怎么使用TronTool.Java",在日常操作中,相信很多人在怎么使用TronTool.Java问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使
千家信息网最后更新 2025年12月06日怎么使用TronTool.Java

这篇文章主要介绍"怎么使用TronTool.Java",在日常操作中,相信很多人在怎么使用TronTool.Java问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么使用TronTool.Java"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

1、TronTool.Java开发包概述

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

  • 支持Tron区块链原生Trx交易

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

  • 支持交易的离线签名,避免泄露私钥

  • 完善的Tron节点API封装,支持全节点、Solidity节点和事件节点提供的API

  • 支持使用自有节点或第三方节点,例如Tron官方提供的公共节点

TronTool.Java开发包运行在Java 8环境下,当前版本1.0.0,主要类/接口及关系如下图所示:

TronTool.Java开发包的主要代码文件清单如下:

代码文件说明
trontool/TronTool库项目代码目录
trontool/build.gradleTronTool项目Gradle配置
trontool/src/main/java/trontool/TronKit.javaTron开发包入口类
trontool/src/main/java/trontool/Trc20.javaTron TRC20智能合约封装类
trontool/src/main/java/trontool/Contract.javaTron智能合约封装类
trontool/src/main/java/trontool/Credential.javaTron区块链身份标识类,用于交易签名
trontool/src/main/java/trontool/Address.javaTron地址表示类
trontool/src/main/java/trontool/Base58.javaBase58编解码器
trontool/src/main/java/trontool/TronApi.javaTron节点API聚合封装类
trontool/src/main/java/trontool/NodeClient.javaHTTP协议封装类
trontool/src/main/java/trontool/api/Tron API数据类型定义目录
demo/演示项目代码目录
demo/build.gradle演示项目Gradle配置文件
demo/src/main/java/demo/NewAddressDemo.java演示代码,创建新的Tron区块链地址
demo/src/main/java/demo/TrxDemo.java演示代码,Trx转账交易及余额查询
demo/src/main/java/demo/Trc20Demo.java演示代码,Trc20代币转账、余额查询、事件监听等
build.gradle根项目配置文件
settings.gradle根项目配置文件

2、使用TronTool.Java的示例代码

2.1 创建新的Tron账号

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

~$ cd ~/trontool.java/demo~/trontool.java/demo$ gradle NewAddressDemo

执行结果如下:

2.2 Trx转账及余额查询

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

~$ cd ~/trontool.java/demo~/trontool.java/demo$ gradle TrxDemo

执行结果如下:

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

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

~$ cd ~/trontool.java/demo~/trontool.java/demo$ gradle Trc20Demo

执行结果如下:

2、使用TronKit

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

  • Trx转账与余额查询

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

2.1 实例化TronKit

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

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

//import trontool.TronKit;//import trontool.TronApi;//import trontool.Credential;TronKit kit = new TronKit(  TronApi.mainNet(),                                       //接入主链  Credential.fromPrivateKey("87c12d....d435")              //使用指定私钥);

2.2 Trx转账及余额查询

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

//import trontool.api.TransactionResult;String to = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";             //转账目标地址long amount = 1000000000;                                     //转账金额,单位:SUNTransactionResult ret = kit.sendTrx(to,amount);               //提交Trx转账交易System.out.printf("tx id: %s\n", ret.txId);                   //显示交易ID    System.out.printf("tx state: %b\n", ret.state);               //显示交易结果

注意:需要将金额单位转换为SUN,1 TRX = 1000000 SUN。

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

String addr = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";            //要查询的Tron地址long balance = kit.getTrxBlanace(addr);                        //查询Trx余额,单位:SUNSystem.out.printf("balance: %d\n",balance);                    //显示余额

2.3 TRC20代币转账

使用TronKit对象的trc20()方法获取指定TRC20代币合约实例,然后调用合约的transfer()方法进行TRC20代币转账。例如,下面的代码指定地址间转账1315300个最小单位的USDT-TRC20代币,即 1.3153 USDT:

//import trontool.Trc20;//import trontool.api.TransactionResult;//import java.math.BigInteger;String to = "TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx";                 //转账目标地址BigInteger value = new BigInteger("1315300");                     //转账Trc20代币数量String contractAddress = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";    //USDT-TRC20代币合约的部署地址Trc20 usdt = kit.trc20(contractAddress);                          //创建Trc20代币合约实例TransactionResult ret = usdt.transfer(to,value);                  //转账Trc20代币System.out.printf("tx id: %s\n",ret.txId);                        //显示转账交易IDSystem.out.printf("tx state: %b\n",ret.state);                    //显示转账交易结果

2.4 TRC20代币余额查询

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

//import trontool.Trc20;//impot java.math.BigInteger;Trc20 usdt = kit.trc20("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");        //创建USDT-TRC20代币合约实例BigInteger balance = usdt.balanceOf("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");  //查询Trc20代币余额System.out.printf("balance: %s\n",balance);                         //显示代币余额

2.5 TRC20代币事件查询

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

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

//import trontool.Trc20;//import trontool.api.ContractEvent;Trc20 usdt = kit.trc20("TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t");       //创建Trc20代币合约实例long since = System.currentTimeMillis() - 10000;                    //计算检查时间点ContractEvent[] events = usdt.events(since);                        //提取合约事件for(ContractEvent e: events){  System.out.println("event name: %s\n",e.eventName);               //显示事件名称  System.out.println("block height: %d\n",e.blockNumber);           //显示事件触发的区块高度}

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

  • callerContractAddress:调用合约地址,base58格式

  • transactionId:触发合约事件的交易ID,16进制字符串

  • result:合约事件参数列表,数组

  • resultType:合约事件参数类型列表,数组

  • blockTimestamp:事件所在区块时间戳,整数

  • blockNumber:事件所在区块号,整数

  • eventName:事件名称,字符串

  • contractAddress:合约地址,base58格式

  • eventIndex:事件索引序号,整数

例如,下面是一个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.Java开发包中,使用Credential表征Tron区块链中的一个用户身份,使用Address 表征Tron区块链中的一个地址。两者的区别在于Credential包含了用户的私钥信息,可以用来签名交易,因此需要保护,而Address则是可以公开的信息。

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

//import trontool.Credential;Credential c = Credential.create();                           //创建新账号System.out.printf("private key: %s\n",c.getPrivateKey());     //显示私钥System.out.printf("public key: %s\n",c.getPublicKey());       //显示公钥System.out.printf("address: %s\n",c.getAddress());            //显示地址

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

//import trontool.Credential;Credential c = Credential.fromPrivateKey("7889...023a");      //导入已有私钥System.out.printf("address: %s\n",c.getAddress());            //显示相应地址

在Tron区块链中,地址有两种表示:16进制和base58表示,例如下面是同一个地址的两种表示:

  • base58:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

  • 16进制: 412539EF4F3EB733C105A957EEBB20FD60AD8C9A43

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

//import trontool.Address;Address a1 = Address.fromBase58("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");System.out.println(a1.hex);       //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43Address a2 = Address.fromHex("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43");System.out.println(a2.base58);    //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

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

//import trontool.Address;String a1 = Address.decode("TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx");System.out.println(a1);         //输出:412539EF4F3EB733C105A957EEBB20FD60AD8C9A43String a2 = Address.encode("412539EF4F3EB733C105A957EEBB20FD60AD8C9A43");System.out.println(a2);         //输出:TDN3QY85Jft3RwgyatjRNmrwRmwkn8qwqx

4、使用TronApi访问Tron节点API

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

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

//import trontool.TronApi;TronApi api = new TronApi(  "https://api.trongrid.io",       //全节点URL  "https://api.trongrid.io",       //合约节点URL  "https://api.trongrid.io"        //事件节点URL);

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

TronAPi api = new TronApi("https://api.trongrid.io");

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

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

TronApi api = new TronApi("https://api.trongrid.io");TronApi api = TronApi.mainNet();                 //与上面等效TronApi api = new TronApi("https://api.shasta.trongrid.io");TronApi api = TronApi.testNet();                 //与上面等效

TronApi封装了Tron官方多种节点提供的API的一个子集,可以用于应用与Tron区块链的交互。例如查询指定账户的TRX余额,可以利用Tron节点的getaccount接口,这对应于TronApi中的getAccount()方法:

//import trontool.api.AccountAccount account = api.getAccount("TEgM5CPeqow...7vcBgVkD4tP");  //查询账户信息System.out.printf("balance: %d\n",account.balance);             //显示账户余额

到此,关于"怎么使用TronTool.Java"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

事件 节点 代币 合约 地址 查询 转账 代码 余额 方法 交易 区块 实例 参数 对象 开发包 开发 支持 演示 面的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 大数据网络安全分析论文 网络安全和信息化中心是什么单位 服务器上一次管理时间命令 如何在办公室设置一个服务器 浪潮服务器批量管理工具 联想电脑的技术数据库 散热服务器机架 服务器登陆桌面变蓝 谷歌浏览器服务器版 共筑网络安全是什么 中国联通软件研究院软件开发 日本樱桃服务器正片 批量修改程序的数据库地址 服务器报备管理制度 网络安全违规查处 黄浦区智能网络技术开发材料 网络安全漏洞管理规定是利好吗 三峡翻译软件开发 软件开发方面的职业资格证书 济宁计算机软件开发学校信息 文件未上传服务器是什么意思 服务器上一次管理时间命令 连云港畅捷网络技术有限公司 医院网络安全建设理论法制定律 山东曙光服务器维修维保 语音对讲软件开发是什么 贵州网络技术服务 计算机三级网络技术就业 自建人脸识别数据库 数据库校验技术
0