fix
Helius
2022-07-15 1ea6fad18342c1a06901552784de38bfad06c808
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("1000000", 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 "";
        }
    }
}