From b507b7d1f2501eb1c6202f89b5c8681f88cbbdf1 Mon Sep 17 00:00:00 2001
From: wzy <wzy19931122ai@163.com>
Date: Fri, 26 Aug 2022 20:10:02 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/chain/EthService.java |   37 ++++++++++++++++++++++++++++++++++---
 1 files changed, 34 insertions(+), 3 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
index 02acaf2..59e777d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -4,6 +4,7 @@
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
 import org.bouncycastle.jcajce.provider.digest.SHA3;
 import org.web3j.abi.FunctionEncoder;
 import org.web3j.abi.FunctionReturnDecoder;
@@ -35,6 +36,7 @@
  * @author wzy
  * @date 2022-04-15
  **/
+@Slf4j
 public class EthService implements ContractChainService {
 
     private Web3j web3j;
@@ -362,7 +364,36 @@
     }
 
     @Override
-    public BigInteger safeMintNFT(String toAddress) {
+    public BigInteger totalSupplyNFT() {
+        try {
+            String methodName = "totalSupply";
+            List<Type> inputParameters = new ArrayList<>();
+            List<TypeReference<?>> outputParameters = new ArrayList<>();
+            TypeReference<Uint256> typeReference = new TypeReference<Uint256>() {
+            };
+            outputParameters.add(typeReference);
+            Function function = new Function(methodName, inputParameters, outputParameters);
+            String data = FunctionEncoder.encode(function);
+            Transaction transaction = Transaction.createEthCallTransaction(null, contractAddress, data);
+
+            EthCall ethCall;
+            BigInteger totalSupply = BigInteger.ZERO;
+            try {
+                ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send();
+                List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters());
+                totalSupply = (BigInteger) results.get(0).getValue();
+                return totalSupply;
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return BigInteger.ZERO;
+    }
+
+    @Override
+    public String safeMintNFT(String toAddress) {
         String gas = getGas();
 
         try {
@@ -378,15 +409,15 @@
             String encodedFunction = FunctionEncoder.encode(function);
             RawTransaction rawTransaction = RawTransaction.createTransaction(nonce,
                     Convert.toWei(gas, Convert.Unit.GWEI).toBigInteger(),
-                    Convert.toWei("1000000", Convert.Unit.WEI).toBigInteger(), contractAddress, encodedFunction);
+                    Convert.toWei("500000", Convert.Unit.WEI).toBigInteger(), contractAddress, encodedFunction);
 
             byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials);
             String hexValue = Numeric.toHexString(signedMessage);
 
             CompletableFuture<EthSendTransaction> ethSendTransactionCompletableFuture = web3j.ethSendRawTransaction(hexValue).sendAsync();
             EthSendTransaction ethSendTransaction = ethSendTransactionCompletableFuture.get();
-
             if (ethSendTransaction.hasError()) {
+                log.info("card:{}", JSONObject.toJSONString(ethSendTransaction));
                 return "";
             } else {
                 return ethSendTransaction.getTransactionHash();

--
Gitblit v1.9.1