nle测试网调用
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;
public class main {
public static void main(String[] args) {
}
public static String transferFrom(String hexPrivateKey,String apiKey,String contractAddress,String ownerAddr,String accountAddr,long amount){
Trc20Contract token=trcTen(
hexPrivateKey,
apiKey,
contractAddress,
ownerAddr);
BigInteger balance=allowance(hexPrivateKey,apiKey,contractAddress,ownerAddr,accountAddr);
if(balance.compareTo(BigInteger.valueOf (amount))==-1){
return "授权余额不足:"+balance;
}
return token.transferFrom(ownerAddr,accountAddr,amount,6,"间接交易",100000000L);
}
public static BigInteger balance(String hexPrivateKey,String apiKey,String contractAddress,String ownerAddr){
Trc20Contract token=trcTen(
hexPrivateKey,
apiKey,
contractAddress,
ownerAddr);
return token.balanceOf(ownerAddr);
}
public static String transfer(String hexPrivateKey,String apiKey,String contractAddress,String ownerAddr,String accountAddr,long amount){
Trc20Contract token=trcTen(
hexPrivateKey,
apiKey,
contractAddress,
ownerAddr);
BigInteger balance=token.balanceOf(ownerAddr);
if(balance.compareTo(BigInteger.valueOf (amount))==-1){
return "账户余额不足:"+balance;
}
return token.transfer(accountAddr,amount,6,"直接交易",100000000L);
}
public static Response.Account getTronAccountInfo(String hexPrivateKey, String apiKey,String ownerAddr){
ApiWrapper wrapper = ApiWrapper.ofMainnet(hexPrivateKey,apiKey);
return wrapper.getAccount(ownerAddr);
}
public static String approve(String hexPrivateKey,String apiKey,String contractAddress,String ownerAddr,String accountAddr,long amount){
Trc20Contract token=trcTen(
hexPrivateKey,
apiKey,
contractAddress,
ownerAddr);
return token.approve(accountAddr, amount,6,"批准交易",100000000L);
}
public static BigInteger allowance(String hexPrivateKey,String apiKey, String contractAddress, String ownerAddr, String accountAddr){
Trc20Contract token=trcTen(
hexPrivateKey,
apiKey,
contractAddress,
ownerAddr);
return token.allowance(ownerAddr,accountAddr);
}
public static Response.AccountResourceMessage selectAccount(String hexPrivateKey, String apiKey, String ownerAddr){
ApiWrapper wrapper = ApiWrapper.ofMainnet(hexPrivateKey,apiKey);
return wrapper.getAccountResource(ownerAddr);
}
public static String createAccount(String hexPrivateKey,String apiKey, String ownerAddr,String accountAddr){
ApiWrapper wrapper = ApiWrapper.ofMainnet(hexPrivateKey,apiKey);
Response.TransactionExtention transaction = null;
try {
transaction = wrapper.createAccount(ownerAddr,accountAddr);
} catch (IllegalException e) {
e.printStackTrace();
}
Chain.Transaction signedTxn = wrapper.signTransaction(transaction);
return wrapper.broadcastTransaction(signedTxn);
}
public static Map<String,Object> createKeyPair(){
Map<String,Object> m=new HashMap<>();
KeyPair keyPair = KeyPair.generate();
SECP256K1.PublicKey pubKey= keyPair.getRawPair().getPublicKey();
m.put("publicKey",keyPair.toPublicKey());
m.put("privateKey",keyPair.toPrivateKey());
m.put("base58Check",KeyPair.publicKeyToBase58CheckAddress(pubKey));
m.put("hex",KeyPair.publicKeyToHexAddress(pubKey));
m.put("keyPair",keyPair);
return m;
}
public static void publicSign(byte[] txid,KeyPair keyPair){
KeyPair.signTransaction(txid,keyPair);
}
public static Trc20Contract trcTen(String hexPrivateKey,String apiKey,String contractAddress,String ownerAddr){
ApiWrapper wrapper = ApiWrapper.ofMainnet(hexPrivateKey,apiKey);
Contract contract =wrapper.getContract(contractAddress);
return new Trc20Contract(contract, ownerAddr, wrapper);
}
}
封装好的demo下载地址TRX USDT合约
测试getcoin