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