From 0a32a50a7d35a7865e70623bde75f7579585f515 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sun, 24 Apr 2022 16:30:58 +0800
Subject: [PATCH] fix
---
src/main/java/cc/mrbird/febs/dapp/chain/EthService.java | 33 ++++++++++++++++++++++++++++++++-
src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java | 4 +++-
src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java | 2 ++
src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java | 5 +++++
4 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
index e51ca0f..b599c6e 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ChainService.java
@@ -59,7 +59,9 @@
public static void main(String[] args) {
// 0x391040eE5F241711E763D0AC55E775B9b4bD0024 0x977A9dDFb965a9A3416Fa72cA7F91c4949c18f25
- System.out.println(getInstance("BSC").allowance("0x977A9dDFb965a9A3416Fa72cA7F91c4949c18f25"));
+ System.out.println(getInstance("BSC").balanceOf("0x977a9ddfb965a9a3416fa72ca7f91c4949c18f25"));
+
+// System.out.println(getInstance("BSC").decimals());;
// System.out.println(getInstance("ETH").allowance("0x391040eE5F241711E763D0AC55E775B9b4bD0024"));
}
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
index 0cf8c4a..3791a67 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/ContractChainService.java
@@ -18,4 +18,6 @@
String transfer(String address, BigDecimal amount);
int allowanceCnt(String address);
+
+ int decimals();
}
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 45f7e92..75556ac 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthService.java
@@ -91,8 +91,39 @@
}
@Override
+ public int decimals() {
+ try {
+ String methodName = "decimals";
+ 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 decimals = BigInteger.ZERO;
+ try {
+ ethCall = web3j.ethCall(transaction, DefaultBlockParameterName.LATEST).send();
+ List<Type> results = FunctionReturnDecoder.decode(ethCall.getValue(), function.getOutputParameters());
+ decimals = (BigInteger) results.get(0).getValue();
+ return decimals.intValue();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return 0;
+ }
+
+ @Override
public BigDecimal balanceOf(String fromAddress) {
- int decimal = 6;
+ int decimal = decimals();
BigInteger balanceValue = balanceOfUnDecimal(fromAddress);
double res = new BigDecimal(balanceValue).divide(BigDecimal.valueOf(Math.pow(10, decimal)), 8, RoundingMode.HALF_DOWN).doubleValue();
diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
index 0c9c4e3..864c65d 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/TrxService.java
@@ -75,6 +75,11 @@
}
@Override
+ public int decimals() {
+ return 0;
+ }
+
+ @Override
public String transfer(String address) {
BigInteger balance = balanceOfUnDecimal(address);
--
Gitblit v1.9.1