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