From 9219e18a9b2fb06b95b5c881b057d3fde7270ca3 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Thu, 25 Feb 2021 10:28:54 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/whole_new' into whole_new

---
 src/main/java/com/xcong/excoin/modules/blackchain/service/EthService.java |   24 ++++++++++++++++--------
 1 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/blackchain/service/EthService.java b/src/main/java/com/xcong/excoin/modules/blackchain/service/EthService.java
index 5638359..12c6381 100644
--- a/src/main/java/com/xcong/excoin/modules/blackchain/service/EthService.java
+++ b/src/main/java/com/xcong/excoin/modules/blackchain/service/EthService.java
@@ -10,8 +10,10 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 
+import org.apache.commons.lang3.StringUtils;
 import org.web3j.abi.FunctionEncoder;
 import org.web3j.abi.FunctionReturnDecoder;
 import org.web3j.abi.TypeReference;
@@ -52,8 +54,8 @@
 	/**
 	 * 服务器地址
 	 */
-	//private static final String ETH_UTL = "https://mainnet.infura.io/v3/882c66ebcfc141abbea22b948fa44321";
 	private static final String ETH_UTL = "http://120.55.86.146:8545";
+	//private static final String ETH_UTL = "http://114.55.250.231:8545";
 
 	public EthService() {
 		try {
@@ -208,10 +210,13 @@
 	}
 
 	// USDT
-	public String tokenSend(String privateKey, String fromAddress, String toAddress, String amount)
+	public String tokenSend(String privateKey, String fromAddress, String toAddress, String amount,String gas)
 			throws InterruptedException, ExecutionException {
 		// Web3j web3j = Web3j.build(new
 		// HttpService("https://mainnet.infura.io/v3/882c66ebcfc141abbea22b948fa44321"));
+		if(StringUtils.isBlank(gas)){
+			gas="70";
+		}
 		String contractAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7";
 		Credentials credentials = Credentials.create(privateKey);
 
@@ -228,7 +233,7 @@
 		String encodedFunction = FunctionEncoder.encode(function);
 
 		RawTransaction rawTransaction = RawTransaction.createTransaction(nonce,
-				Convert.toWei("70", Convert.Unit.GWEI).toBigInteger(),// 给矿工开的转账单价 单价越高越快
+				Convert.toWei(gas, Convert.Unit.GWEI).toBigInteger(),// 给矿工开的转账单价 单价越高越快
 				Convert.toWei("60000", Convert.Unit.WEI).toBigInteger(), contractAddress, encodedFunction);//里程上限
 		        // 10*80000/1000000000=0.0008 手续费
 
@@ -237,8 +242,9 @@
 
 		// log.debug("transfer hexValue:" + hexValue);
 
-		EthSendTransaction ethSendTransaction = web3j.ethSendRawTransaction(hexValue).sendAsync().get();
-
+		CompletableFuture<EthSendTransaction> ethSendTransactionCompletableFuture = web3j.ethSendRawTransaction(hexValue).sendAsync();
+		EthSendTransaction ethSendTransaction = ethSendTransactionCompletableFuture.get();
+		//return "hash";
 
 		if (ethSendTransaction.hasError()) {
 			// log.info("transfer error:", ethSendTransaction.getError().getMessage());
@@ -250,11 +256,13 @@
 		}
 	}
 
-	public String ethSend(String privateKey, String fromAddress, String toAddress, String amount)
+	public String ethSend(String privateKey, String fromAddress, String toAddress, String amount,String gas)
 			throws InterruptedException, ExecutionException {
 		// Web3j web3j = Web3j.build(new
 		// HttpService("https://mainnet.infura.io/v3/882c66ebcfc141abbea22b948fa44321"));
-
+		if(StringUtils.isBlank(gas)){
+			gas="70";
+		}
 		Credentials credentials = Credentials.create(privateKey);
 
 		EthGetTransactionCount ethGetTransactionCount = web3j
@@ -263,7 +271,7 @@
 		BigInteger nonce = ethGetTransactionCount.getTransactionCount();
 		BigInteger value = Convert.toWei(amount, Convert.Unit.ETHER).toBigInteger();
 		RawTransaction rawTransaction = RawTransaction.createEtherTransaction(nonce,
-				Convert.toWei("50", Convert.Unit.GWEI).toBigInteger(),
+				Convert.toWei(gas, Convert.Unit.GWEI).toBigInteger(),
 				Convert.toWei("60000", Convert.Unit.WEI).toBigInteger(), toAddress, value);
 		byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
 		String hexValue = Numeric.toHexString(signedMessage);

--
Gitblit v1.9.1