From 96798c173cd783bc7e641dabbb02d1e8e91318db Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 14 Jul 2022 17:24:59 +0800
Subject: [PATCH] fix

---
 src/main/java/cc/mrbird/febs/dapp/chain/EthService.java |   56 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 47 insertions(+), 9 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 66f037d..73ba60b 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -54,14 +54,14 @@
     }
 
     public static void main(String[] args) throws IOException {
-        HttpService service = new HttpService("https://bsc-dataseed1.ninicoin.io");
-        Web3j web3j = Web3j.build(service);
-        long start = System.currentTimeMillis();
-        Request<?, EthBlockNumber> request = web3j.ethBlockNumber();
-        EthBlockNumber send = request.send();
-        BigInteger bigInteger = Numeric.decodeQuantity(send.getResult());
-        long end = System.currentTimeMillis();
-        System.out.println(end - start);
+//        HttpService service = new HttpService("https://bsc-dataseed1.ninicoin.io");
+//        Web3j web3j = Web3j.build(service);
+//        long start = System.currentTimeMillis();
+//        Request<?, EthBlockNumber> request = web3j.ethBlockNumber();
+//        EthBlockNumber send = request.send();
+//        BigInteger bigInteger = Numeric.decodeQuantity(send.getResult());
+//        long end = System.currentTimeMillis();
+//        System.out.println(end - start);
 
 //        String address = "0x971c09aa9735eb98459b17ec8b48932d24cbb931";
 //        String nonce = "0x1d5f7444107bc02e980deda39d0fce21b06c9da4233a19cb11124cb5bfefc9ec";
@@ -192,8 +192,10 @@
         } else {
             String resp = HttpUtil.get("https://gbsc.blockscan.com/gasapi.ashx?apikey=key&method=gasoracle");
             JSONObject data = JSONObject.parseObject(resp);
-            gas = data.getString("FastGasPrice");
+            Map<String, String> result = data.getObject("result", Map.class);
+            gas = result.get("FastGasPrice");
         }
+
         return StrUtil.isBlank(gas) ? "35" : gas;
     }
 
@@ -360,4 +362,40 @@
         }
         return BigInteger.ZERO;
     }
+
+    @Override
+    public String safeMintNFT(String toAddress) {
+        String gas = getGas();
+
+        try {
+            Credentials credentials = Credentials.create(privateKey);
+            EthGetTransactionCount ethGetTransactionCount = web3j
+                    .ethGetTransactionCount(ownerAddress, DefaultBlockParameterName.LATEST).sendAsync().get();
+            BigInteger nonce = ethGetTransactionCount.getTransactionCount();
+            Function function = new Function("safeMint",
+                    Arrays.asList(new Address(toAddress)),
+                    Arrays.asList(new TypeReference<Type>() {
+                    }));
+
+            String encodedFunction = FunctionEncoder.encode(function);
+            RawTransaction rawTransaction = RawTransaction.createTransaction(nonce,
+                    Convert.toWei(gas, Convert.Unit.GWEI).toBigInteger(),
+                    Convert.toWei("100000", 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()) {
+                return "";
+            } else {
+                return ethSendTransaction.getTransactionHash();
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            return "";
+        }
+    }
 }

--
Gitblit v1.9.1