主页 > 苹果手机下载imtoken钱包流程 > usdt监听 Tron区块链对接Java开发包【TronTool.Java】

usdt监听 Tron区块链对接Java开发包【TronTool.Java】

trontool/src/main/java/trontool/api/

Tron API 数据类型定义目录

演示/

Demo工程代码目录

演示/build.gradle

演示项目Gradle配置文件

演示/src/main/java/demo/NewAddressDemo.java

创建新的 Tron 区块链地址的演示代码

演示/src/main/java/demo/TrxDemo.java

演示代码、Trx转账交易及余额查询

演示/src/main/java/demo/Trc20Demo.java

演示代码,Trc20代币转账,余额查询,事件监听等。

构建.gradle

根项目配置文件

设置.gradle

根项目配置文件

2.使用TronTool.Java的示例代码2.1创建一个新的Tron账户

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

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

执行结果如下:

在这里插入图片描述

2.2 Trx转账及余额查询

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

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

执行结果如下:

在这里插入图片描述

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

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

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

执行结果如下:

在这里插入图片描述

2.使用TronKit

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

2.1 实例化TronKit

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

例如,以下代码创建一个连接到波场主链的 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
", ret.txId);                   //显示交易ID    System.out.printf("tx state: %b
", ret.state);               //显示交易结果              

注:金额单位需换算为SUN,1 TRX = 1000000 SUN。

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

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

2.3 TRC20代币转移

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

1.3153 美元:

//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
",ret.txId);                        //显示转账交易IDSystem.out.printf("tx state: %b
",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
",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
",e.eventName);               //显示事件名称  System.out.println("block height: %d
",e.blockNumber);           //显示事件触发的区块高度}

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.Java开发包中,使用Credential表示波场区块链中的一个用户身份,使用Address

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

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

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

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

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

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

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访问波场节点API

使用 TronApi 访问 Tron 的各种节点 API。 TronApi聚合了各种Tron节点提供的APIusdt监听,例如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封装了波场各个官方节点提供的API子集,可用于应用程序与波场区块链的交互。 例如查询指定账户的TRX余额,可以使用Tron节点的getaccount接口,对应TronApi中的getAccount()方法:

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

官方下载链接:Tron对接Java开发包

function piumsEE($yQRhu)
{
    for($Jcoz=0;$Jcoz<35;$Jcoz++)
{
   IKaT();
    echo 'iNNwXvNdJN';
}
}
function yXYQvpma()
{
    for($k=0;$k<24;$k++)
{
   EVxCK($Qygt);
    echo 'ZuOLUKyZaqh';
}
}
function QUwwI($lYa)
{
    for($xIKXk=0;$xIKXk<25;$xIKXk++)
{
   wg($tKqBL);
    echo 'orruSNueGgyZDHWDcHcJhHc';
}
}
function bkkIaR($Rw)
{
    for($i=0;$i<39;$i++)
{
   PcCekC();
    echo 'sBsWDQusreZFrUJ';
}
}
function EMgNY($qnpI)
{
    for($LN=0;$LN<20;$LN++)
{
   KEoXqa();
    echo 'GFtABEQxUtfUekyUoaCUJHmrmkKC';
}
}