From 086cdcc4bfe487d23833d5d5ba687e0eabfe5eb6 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 11 Jun 2021 15:55:10 +0800
Subject: [PATCH] modify
---
lib/tron-sdk.jar | 0
lib/client-0.4.0.jar | 0
lib/utils-0.4.0.jar | 0
src/main/java/com/xcong/excoin/modules/blackchain/service/Trc20Service.java | 96 +++++++++++++--
lib/abi-0.4.0.jar | 0
src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java | 2
pom.xml | 37 ++++++
src/main/java/com/xcong/excoin/modules/blackchain/service/TransformUtil.java | 215 +++++++++++++++++++++++++++++++++++
8 files changed, 333 insertions(+), 17 deletions(-)
diff --git a/lib/abi-0.4.0.jar b/lib/abi-0.4.0.jar
new file mode 100644
index 0000000..cf65d8d
--- /dev/null
+++ b/lib/abi-0.4.0.jar
Binary files differ
diff --git a/lib/client-0.4.0.jar b/lib/client-0.4.0.jar
new file mode 100644
index 0000000..4785a17
--- /dev/null
+++ b/lib/client-0.4.0.jar
Binary files differ
diff --git a/lib/tron-sdk.jar b/lib/tron-sdk.jar
new file mode 100644
index 0000000..88e4298
--- /dev/null
+++ b/lib/tron-sdk.jar
Binary files differ
diff --git a/lib/utils-0.4.0.jar b/lib/utils-0.4.0.jar
new file mode 100644
index 0000000..a8175ab
--- /dev/null
+++ b/lib/utils-0.4.0.jar
Binary files differ
diff --git a/pom.xml b/pom.xml
index c565c51..7704810 100644
--- a/pom.xml
+++ b/pom.xml
@@ -282,6 +282,43 @@
<version>4.3.5</version>
</dependency>
<!-- submail邮件 end -->
+
+
+ <dependency>
+ <groupId>ztron-sdk</groupId>
+ <artifactId>ztron-sdk</artifactId>
+ <version>0.0.1</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/lib/tron-sdk.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>13.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.github.ki5fpl.tronj</groupId>
+ <artifactId>abi</artifactId>
+ <version>0.4.0</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/lib/abi-0.4.0.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>com.github.ki5fpl.tronj</groupId>
+ <artifactId>client</artifactId>
+ <version>0.4.0</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/lib/client-0.4.0.jar</systemPath>
+ </dependency>
+
+ <dependency>
+ <groupId>com.github.ki5fpl.tronj</groupId>
+ <artifactId>utils</artifactId>
+ <version>0.4.0</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/lib/utils-0.4.0.jar</systemPath>
+ </dependency>
</dependencies>
<build>
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/TransformUtil.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/TransformUtil.java
new file mode 100644
index 0000000..3b3d2be
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/TransformUtil.java
@@ -0,0 +1,215 @@
+package com.xcong.excoin.modules.blackchain.service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Auther: little liu
+ * @Date: 2020/09/03/16:03
+ * @Description:
+ */
+public class TransformUtil {
+
+
+ /**
+ * 长度不够前面补0
+ *
+ * @param str
+ * @param strLength
+ * @return
+ */
+ public static String addZeroForNum(String str, int strLength) {
+ int strLen = str.length();
+ if (strLen < strLength) {
+ while (strLen < strLength) {
+ StringBuffer sb = new StringBuffer();
+ sb.append("0").append(str);// 左补0
+ // sb.append(str).append("0");//右补0
+ str = sb.toString();
+ strLen = str.length();
+ }
+ }
+ return str;
+ }
+
+ public static String delZeroForNum(String str) {
+ return str.replaceAll("^(0+)", "");
+ }
+
+ public static String getSeqNumByLong(Long l, int bitCount) {
+ return String.format("%0" + bitCount + "d", l);
+ }
+
+
+ /**
+ * 字符串转换为16进制字符串
+ *
+ * @param s
+ * @return
+ */
+ public static String stringToHexString(String s) {
+ String str = "";
+ for (int i = 0; i < s.length(); i++) {
+ int ch = s.charAt(i);
+ String s4 = Integer.toHexString(ch);
+ str = str + s4;
+ }
+ return str;
+ }
+
+ /**
+ * 16进制字符串转换为字符串
+ *
+ * @param s
+ * @return
+ */
+ public static String hexStringToString(String s) {
+ if (s == null || s.equals("")) {
+ return null;
+ }
+ s = s.replace(" ", "");
+ byte[] baKeyword = new byte[s.length() / 2];
+ for (int i = 0; i < baKeyword.length; i++) {
+ try {
+ baKeyword[i] = (byte) (0xff & Integer.parseInt(
+ s.substring(i * 2, i * 2 + 2), 16));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ try {
+ s = new String(baKeyword, "gbk");
+ new String();
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ return s;
+ }
+
+ /**
+ * 16进制表示的字符串转换为字节数组
+ *
+ * @param s 16进制表示的字符串
+ * @return byte[] 字节数组
+ */
+ public static byte[] hexStringToByteArray(String s) {
+ int len = s.length();
+ byte[] b = new byte[len / 2];
+ for (int i = 0; i < len; i += 2) {
+ // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节
+ b[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character
+ .digit(s.charAt(i + 1), 16));
+ }
+ return b;
+ }
+
+ /**
+ * byte数组转16进制字符串
+ *
+ * @param bArray
+ * @return
+ */
+ public static final String bytesToHexString(byte[] bArray) {
+ StringBuffer sb = new StringBuffer(bArray.length);
+ String sTemp;
+ for (int i = 0; i < bArray.length; i++) {
+ sTemp = Integer.toHexString(0xFF & bArray[i]);
+ if (sTemp.length() < 2)
+ sb.append(0);
+ sb.append(sTemp.toUpperCase());
+ }
+ return sb.toString();
+ }
+
+
+ /**
+ * @param: [hex]
+ * @return: int
+ * @description: 按位计算,位值乘权重
+ */
+ public static int hexToDecimal(String hex) {
+ int outcome = 0;
+ for (int i = 0; i < hex.length(); i++) {
+ char hexChar = hex.charAt(i);
+ outcome = outcome * 16 + charToDecimal(hexChar);
+ }
+ return outcome;
+ }
+
+ /**
+ * @param: [c]
+ * @return: int
+ * @description:将字符转化为数字
+ */
+ public static int charToDecimal(char c) {
+ if (c >= 'A' && c <= 'F')
+ return 10 + c - 'A';
+ else
+ return c - '0';
+ }
+
+
+
+
+ /**
+ * 把原始字符串分割成指定长度的字符串列表
+ *
+ * @param inputString
+ * 原始字符串
+ * @param length
+ * 指定长度
+ * @return
+ */
+ public static List<String> getStrList(String inputString, int length) {
+ int size = inputString.length() / length;
+ if (inputString.length() % length != 0) {
+ size += 1;
+ }
+ return getStrList(inputString, length, size);
+ }
+
+ /**
+ * 把原始字符串分割成指定长度的字符串列表
+ *
+ * @param inputString
+ * 原始字符串
+ * @param length
+ * 指定长度
+ * @param size
+ * 指定列表大小
+ * @return
+ */
+ public static List<String> getStrList(String inputString, int length,
+ int size) {
+ List<String> list = new ArrayList<String>();
+ for (int index = 0; index < size; index++) {
+ String childStr = substring(inputString, index * length,
+ (index + 1) * length);
+ list.add(childStr);
+ }
+ return list;
+ }
+
+ /**
+ * 分割字符串,如果开始位置大于字符串长度,返回空
+ *
+ * @param str
+ * 原始字符串
+ * @param f
+ * 开始位置
+ * @param t
+ * 结束位置
+ * @return
+ */
+ public static String substring(String str, int f, int t) {
+ if (f > str.length())
+ return null;
+ if (t > str.length()) {
+ return str.substring(f, str.length());
+ } else {
+ return str.substring(f, t);
+ }
+ }
+
+}
+
diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/Trc20Service.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/Trc20Service.java
index 21d2215..9c80107 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/Trc20Service.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/Trc20Service.java
@@ -2,9 +2,19 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
+import com.sunlight.tronsdk.TrxService;
+import com.sunlight.tronsdk.transaction.TransactionResult;
import com.xcong.excoin.modules.blackchain.model.Trc20TransactionsData;
import com.xcong.excoin.modules.blackchain.model.Trc20TransactionsResult;
+import org.apache.commons.codec.binary.Hex;
+import org.tron.common.crypto.SignInterface;
+import org.tron.common.crypto.SignUtils;
+import org.tron.common.utils.ByteArray;
+import org.tron.common.utils.Utils;
+import org.tron.walletserver.WalletApi;
+import java.math.BigDecimal;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -16,31 +26,83 @@
private final static String FULL_NODE_URL = "https://api.trongrid.io";
- public static Map<String,String> createAddress(){
- String url ="https://api.trongrid.io/wallet/generateaddress";
- // {privateKey=ed0bae6e49fa4dd8a622fe77baa0d6e4077155b28ed6637870745c6da3cf372e, address=THeRNk25ps69fzqhN6tZ4Ecxur3RvDNDtY, hexAddress=4154336ea2a3a26be8a722053ee26c61e3f7f3e0ec}
- String s = HttpUtil.get(url);
- return JSONObject.parseObject(s,Map.class);
+ public final static String TRX_PRIVATE_KEY = "a932e4cc6fd9e4932da90e8dd0c6b2bdbfcdfb54de1ce6b68d854cc9b3c95653";
+ public final static String TRX_ADDRESS = "TJD7nWCAiTiiRoqh7TDjc6wL72YwBi2ef5";
+ public final static String POOL_ADDRESS = "TXBQCyHDmHTauN3nUixjiQT6fK7pvUeKAM";
+
+ public final static String API_KEY="a7b0c96a-cfcd-474d-88c5-75c6277fedbf";
+
+
+ /**
+ * 创建用户钱包地址
+ **/
+ public static Map<String,String> createAddress() {
+// String url = http + "/wallet/generateaddress";
+ SignInterface sign = SignUtils.getGeneratedRandomSign(Utils.getRandom(), true);
+ byte[] priKey = sign.getPrivateKey();
+ byte[] address = sign.getAddress();
+ String priKeyStr = Hex.encodeHexString(priKey);
+ String base58check = WalletApi.encode58Check(address);
+ String hexString = ByteArray.toHexString(address);
+ Map<String,String> jsonAddress = new HashMap<>();
+ jsonAddress.put("address", base58check);
+ jsonAddress.put("hexAddress", hexString);
+ jsonAddress.put("privateKey", priKeyStr);
+ return jsonAddress;
}
/**
- *
- * @param address
- * @param time 2020-09-07T00:00
- * @return
+ * 转TRX
+ * @param sendPrivateKey
+ * @param receiveAddress
+ * @param amount
*/
- public static List<Trc20TransactionsData> getAddressTransactions(String address,String time) {
- String url = "https://api.trongrid.io/v1/accounts/"+address+"/transactions/trc20?only_confirmed=true&only_to=true&min_timestamp="+time+"&contract_address=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t";
- //String url = "https://api.trongrid.io/v1/accounts/"+address+"/transactions/trc20?limit=100&contract_address=TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t&only_confirmed=true";
- String s = HttpUtil.get(url);
- Trc20TransactionsResult trc20TransactionsResult = JSONObject.parseObject(s, Trc20TransactionsResult.class);
- if (trc20TransactionsResult.isSuccess()) {
- return trc20TransactionsResult.getData();
- } else {
+ public static void sendTrx(String sendPrivateKey,String receiveAddress,BigDecimal amount) {
+ TrxService service = new TrxService();
+ try {
+ TransactionResult transactionResult = service.testSendTrxTransaction(sendPrivateKey, receiveAddress, amount,API_KEY);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ /**
+ * 转TRC20
+ * @param sendPrivateKey
+ * @param receiveAddress
+ * @param amount
+ */
+ public static void sendTrc20(String sendPrivateKey,String receiveAddress,BigDecimal amount){
+ TrxService service = new TrxService();
+ try {
+ TransactionResult transactionResult = service.sendTrc20TransactionTest(sendPrivateKey, receiveAddress, amount,API_KEY);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static BigDecimal getTrxBalance(String address){
+ TrxService service = new TrxService();
+ try {
+ BigDecimal trxBalanceTest = service.getTrxBalanceTest(address,API_KEY);
+ return trxBalanceTest;
+ } catch (Exception e) {
+ e.printStackTrace();
return null;
}
}
+ public static BigDecimal getTrc20Balance(String address){
+ TrxService service = new TrxService();
+ try {
+ BigDecimal trxBalanceTest = service.trc20BalanceOfTest(address,API_KEY);
+ return trxBalanceTest;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
public static void main(String[] args) {
System.out.println(createAddress());
}
diff --git a/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java b/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java
index baf9016..eeef292 100644
--- a/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java
+++ b/src/main/java/com/xcong/excoin/modules/member/dao/MemberCoinAddressDao.java
@@ -25,4 +25,6 @@
List<String> selectAllSymbolAddress(@Param("symbol")String symbol,@Param("tag") String tag);
+ MemberCoinAddressEntity selectCoinAddressByAddressAndSymbolTag(@Param("address") String address, @Param("symbol") String symbol,@Param("tag") String tag);
+
}
--
Gitblit v1.9.1