From ef49bcedc5f787cbf47fca657b751a6727189f5e Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 15 Jul 2022 10:25:54 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 84 +++++++++++++++++++++++++++++++++++++----
1 files changed, 75 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 1b043f1..5865bf4 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;
}
@@ -332,4 +334,68 @@
}
}
+ @Override
+ public BigInteger totalSupply() {
+ 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.divide(BigInteger.TEN.pow(decimals()));
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ 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 "";
+ }
+ }
}
--
Gitblit v1.9.1