package main;
import org.tron.trident.core.ApiWrapper;
import org.tron.trident.core.contract.Contract;
import org.tron.trident.core.contract.Trc20Contract;
import org.tron.trident.core.exceptions.IllegalException;
import org.tron.trident.core.key.KeyPair;
import org.tron.trident.crypto.SECP256K1;
import org.tron.trident.proto.Chain;
import org.tron.trident.proto.Response;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
//https://nile.tronscan.org/?_ga=2.137790704.1106753660.1669082961-647554494.1668764015#/transaction/ +HASH 查询交易结果
public class test {
//ustd合约地址
public final static String contractAddress="TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj";
//A账户地址
public final static String A="TD2RHirZwQ5LZ9ffZQfMNqwRGxYdnDimm7";
//A账户私钥
public final static String APrivateKey="74672f74e93373222f94540d0f4165d19e752f0e8bae90603b7c8bb9fa529a70";
//B账户地址
public final static String B="TQaZW5Vbm7vbueK23KK6Amjxe2QLbCELzE";
//B账户私钥
public final static String BPrivateKey="1443948fe86d76cf69c4a6a81fcdd0d75436f08a167808b4c2e269580c754641";
//C账户地址
public final static String C="TTMTYjkGUabbPjrn1H3uvt8xkhG8rNm2V5";
public static void main(String[] args) {
//查询A账户余额
System.out.println("查询A账户余额:"+balance(APrivateKey,contractAddress,A));
//离线创建账户
Map<String,Object> createAccount=createKeyPair();
System.out.println("离线账户信息:"+createAccount);
//创建线上账户[只有线上账户才能被授权发起间接交易]
System.out.println("离线账户转线上账户 交易hash:"+createAccount(APrivateKey,A,createAccount.get("base58Check").toString()));
//直接向离线账户转1U
System.out.println("直接向离线账户转1U 交易hash:"+transfer(APrivateKey,contractAddress,A,createAccount.get("base58Check").toString(),1));
//查询A账户余额
System.out.println("查询A账户余额:"+balance(APrivateKey,contractAddress,A));
//查询A授权B的金额
System.out.println("查询A授权B的金额:"+allowance(APrivateKey, contractAddress, A, B));
//A授权B账户100U
System.out.println("A授权B账户100U 交易hash:"+approve(APrivateKey,contractAddress,A,B,100));
//查询A授权B的金额
System.out.println("查询A授权B的金额:"+allowance(APrivateKey, contractAddress, A, B));
//B向C使用授权余额转1U
System.out.println("B向C使用授权余额转1U 交易hash:"+transferFrom(BPrivateKey,contractAddress,B,A,C,1));
//查询A授权B的金额
System.out.println("查询A授权B的金额:"+allowance(APrivateKey, contractAddress, A, B));
}
/**
* 发起间接转账 B[ownerAddr] A[Addr],C[accountAddr] 由被授权的B账户发起 需要消耗B账户GAS
* @param hexPrivateKey 私钥
* @param contractAddress 合约地址
* @param ownerAddr 自己账户[B]
* @param Addr A
* @param accountAddr C
* @param amount 金额
* @return
*/
public static String transferFrom(String hexPrivateKey,String contractAddress,String ownerAddr,String Addr,String accountAddr,long amount){
Trc20Contract token=trcTenNile(
hexPrivateKey,
contractAddress,
ownerAddr);
//查询授权余额
BigInteger balance=allowance(hexPrivateKey,contractAddress,Addr,ownerAddr);
if(balance.compareTo(BigInteger.valueOf (amount))==-1){
return "授权余额不足:"+balance;
}
return token.transferFrom(Addr,accountAddr,amount,6,"间接交易",100000000L);
}
/**
* 查询账户余额
* @param hexPrivateKey 私钥
* @param contractAddress 合约地址
* @param ownerAddr 自己账户
* @return
*/
public static BigInteger balance(String hexPrivateKey,String contractAddress,String ownerAddr){
Trc20Contract token=trcTenNile(
hexPrivateKey,
contractAddress,
ownerAddr);
return token.balanceOf(ownerAddr);
}
/**
* 发起转账 A[ownerAddr],B[accountAddr] 需要消耗A账户GAS
* @param hexPrivateKey 私钥
* @param contractAddress 合约地址
* @param ownerAddr 自己账户
* @param accountAddr 转到账户
* @param amount 转账金额
* @return
*/
public static String transfer(String hexPrivateKey,String contractAddress,String ownerAddr,String accountAddr,long amount){
Trc20Contract token=trcTenNile(
hexPrivateKey,
contractAddress,
ownerAddr);
//查询账户余额
BigInteger balance=token.balanceOf(ownerAddr);
if(balance.compareTo(BigInteger.valueOf (amount))==-1){
return "账户余额不足:"+balance;
}
return token.transfer(accountAddr,amount,6,"直接交易",100000000L);
}
/**
* 获取Tron账户信息
* @param hexPrivateKey 私钥
* @param ownerAddr 自己账户
* @return
*/
public static Response.Account getTronAccountInfo(String hexPrivateKey, String ownerAddr){
ApiWrapper wrapper = ApiWrapper.ofNile(hexPrivateKey);
return wrapper.getAccount(ownerAddr);
}
/**
* 批准交易 A[ownerAddr],B[accountAddr] 需要消耗A账户GAS, 成功 6.66068TRX 359带宽 22,506能量
* @param hexPrivateKey 私钥
* @param contractAddress 合约地址
* @param ownerAddr 自己账户
* @param accountAddr 批准账户
* @param amount 批准金额
* @return
*/
public static String approve(String hexPrivateKey,String contractAddress,String ownerAddr,String accountAddr,long amount){
Trc20Contract token=trcTenNile(
hexPrivateKey,
contractAddress,
ownerAddr);
return token.approve(accountAddr, amount,6,"批准交易",100000000L);
}
/**
* 查询批准余额 A批准B多少金额 A[ownerAddr],B[[accountAddr]
* @param hexPrivateKey 私钥
* @param contractAddress 合约地址
* @param ownerAddr 自己账户
* @param accountAddr 批准账户
* @return
*/
public static BigInteger allowance(String hexPrivateKey, String contractAddress, String ownerAddr, String accountAddr){
Trc20Contract token=trcTenNile(
hexPrivateKey,
contractAddress,
ownerAddr);
return token.allowance(ownerAddr,accountAddr);
}
/**
* 查询Tron账户 带宽,能量
* @param hexPrivateKey
* @param ownerAddr
* @return
*/
public static Response.AccountResourceMessage selectAccount(String hexPrivateKey, String ownerAddr){
ApiWrapper wrapper = ApiWrapper.ofNile(hexPrivateKey);
return wrapper.getAccountResource(ownerAddr);
}
/**
* 创建链上账户 需要消耗ownerAddr账户GAS 1.1TRX 100带宽
* @param hexPrivateKey 私钥
* @param ownerAddr 链上已激活的账号 base58Check格式
* @param accountAddr 新账号地址 base58Check格式
* @return
*/
public static String createAccount(String hexPrivateKey, String ownerAddr,String accountAddr){
ApiWrapper wrapper = ApiWrapper.ofNile(hexPrivateKey);
Response.TransactionExtention transaction = null;
try {
transaction = wrapper.createAcc
没有合适的资源?快使用搜索试试~ 我知道了~
Trc20Usdt调用DEmo
共114个文件
sample:13个
xml:8个
master:4个
1星 需积分: 10 23 下载量 8 浏览量
2022-11-22
17:33:33
上传
评论 2
收藏 3.75MB RAR 举报
温馨提示
Trc20Usdt调用DEmo
资源推荐
资源详情
资源评论
收起资源包目录
Trc20Usdt调用DEmo (114个子文件)
038696a08e33ea38dec26927407e6bb3c5b624 46B
0609fd33c9b22ebd253758955a254beabcb548 166B
15ca456f01ba79dd100d313557e233a287d356 47B
170317ba10d02aa03631de974961a7b274bcff 153B
19e78ac0ad9b5c17b807d0a75ece244f844753 59B
1a72596fe4802743e21ead71f4117c4ad652fb 174B
1d5cc92dcb08b61cca8ffeb5c5c43d0a7b548c 70KB
1f48bc505ee6f250e2a733f2b407ec71afd71a 1KB
1faaf558a09c1a836762401b61f0e67b44680e 46B
2404bc29da2535f7f7dde84180d85abc60d5a4 303B
260c153e99e27ea1265374a840976792416e7d 65B
2a8fc486a516c999f2d65929d968c6fe89c0e2 63B
2ab9d985c20018a0c97b93d2148ac1ffe588a5 300B
30c5289ce6a6563ffd35ca33855aeb71c699be 83B
375185d57e45ab49b12deac16f25350f91f01d 168B
3c422c4afd5795f4a9d66f24ae116098e23892 82B
3fadb97451c55264ec83b22923d759c4596552 255B
45daca829409b0099be62cd60230913968d7ef 46B
4dbab95730c8cb6c1186f129337987fe4c4293 88B
50e71d63464f2b7b366a8c2466f3493e2a8476 46B
57146e99c7bd9dbf1110ce9f2cba8234cc3b90 111KB
60dbbb49eea6b756663df07c699222fcece365 61B
610969fc4a468146a585a7c294b217b63700a7 125B
63d4cb7ddac3aacaa175b9dbf61066e4e06a96 123B
6534fb27b68192f27f985d3879e173ec77adb8 1KB
65a2b89ca8507441f43a82fdcb31229f058f47 2KB
6d0224f43c98969fb1a005b671dc80dbdd1f27 46B
6d0fb5a159e57af710eb968c0ee8f017dd456b 119B
6efd3856e7eefef3568dc845ba599bd3839157 169B
6fe1f2daa057e2cdf2132682837bdf57bc9f49 46B
7cde19ca501c3d7d2ee841ff18d014113d904a 46B
7db910b2e40f7db0e3a7b5dee22a11727101ec 29B
7ff8e63d3d048fd05a7a86aa49c7bcbcd715fa 83B
868de76c47726622a2301051a45531eee048bf 3KB
8a73f72c51626d5e70a4e70bd9cd422800a3c1 3KB
8e5c081f356e02637508704343480f831ec88b 169B
8ed6082dcf43fadb92bd6d5cb80c976c997c9c 1.68MB
967990cfc0392c70114f370f6a36243115ba8a 46B
99f12fa20f6fa2768381a8294d68346b5f9aba 54B
9de29bb2d1d6434b8b29ae775ad8c2e48c5391 15B
a1e149cfb3bf22229b70fe2718476ecbff18ff 2KB
a218e24c5c6e8fd36dd6275c2e245060a19ce9 2KB
a25f7f4cb416c083d265558da75d457237d671 155B
a9910e1c806c096aa2dd5a058f47b12128e235 55B
abc9a4e140e1ff4112917a00963c81420236e3 3KB
b0aea41e352a1188de22ccd51225ffeae8f151 46B
b17a4ae3aed3e015b457473a9d20948fbbccc2 166B
b38070377e1d9cc502aa3bbea6bfa3afbf2e23 3KB
b3944af3661f8a9a61ed125d81e6768ad7940a 174B
bbbd0675e5859a667d8344b3abd47b89f86bb3 54B
bc8df98dd3ec2d924736c47f34ff8cf62c4ff1 91B
bedf7296e125f388bd4168797e6141dc23daf5 46B
c144f5095a3fa7220f628188ab8331a5244376 59B
ca33dff0261125fafde9a48bc80d50e339ce75 167B
cc4f55fb929a50f4665893cce510dd14a41ea3 338B
test.class 8KB
main.class 7KB
COMMIT_EDITMSG 11B
config 309B
d24ba61a675883f6f874684001534c83efa6dc 174B
db03b577e986365c281f65a8cd5c0870e04310 46B
dd76e4991a78d01132d5dab803d958dfc55cc6 625B
description 73B
e037aeee75cb84e56cea6536e68a9e3402558b 79B
e85474f5658bb119bec6ecbd6c2bb037be2336 46B
eb33bc28d17f1432ab00dcd72e02e9e7751406 2KB
ec368d8b28037caad9f8f6e224ead2fb099c90 2KB
ed302e5762d09a4c7d4d174163d1cf8d98fbf7 169B
ef15fa71b0ee9d123c4015461982b3b4bb9661 46B
exclude 240B
f1824f829efb278d71638fd387a2b1de43e405 83B
f4501c9eda85ea12ee4dfbdff3066c6e3bb515 46B
f69e0958611ac6e00bde95641f6699030ad235 140B
fb3a13c32b0b308b803df03464da0bd0b137fc 57B
fdf5ff4845baa619e8a944de1e1445b1483d33 283B
.gitignore 184B
HEAD 599B
HEAD 23B
index 3KB
core-0.3.0.jar 1.77MB
abi-0.3.0.jar 149KB
utils-0.3.0.jar 75KB
Trc20Usdt-1.0-SNAPSHOT.jar 2KB
test.java 9KB
main.java 8KB
inputFiles.lst 96B
createdFiles.lst 16B
inputFiles.lst 0B
master 599B
master 584B
master 41B
master 41B
pom.properties 117B
pre-rebase.sample 5KB
fsmonitor-watchman.sample 5KB
update.sample 4KB
push-to-checkout.sample 3KB
pre-commit.sample 2KB
prepare-commit-msg.sample 1KB
pre-push.sample 1KB
共 114 条
- 1
- 2
资源评论
- 么丁2023-12-22#毫无价值 CNM。 根本就没代码,千万别下载
凄凉山谷的风OL
- 粉丝: 139
- 资源: 99
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功