From f2dd0068e9f235fd364120cb32607169831b2c98 Mon Sep 17 00:00:00 2001
From: KKSU <15274802129@163.com>
Date: Thu, 09 May 2024 16:59:32 +0800
Subject: [PATCH] 合约监听

---
 src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java b/src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java
index a32c340..3b4fd99 100644
--- a/src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java
+++ b/src/main/java/cc/mrbird/febs/dapp/chain/EthUsdtContract.java
@@ -3,8 +3,6 @@
 import io.reactivex.Flowable;
 import io.reactivex.functions.Function;
 import org.web3j.abi.EventEncoder;
-import org.web3j.abi.EventValues;
-import org.web3j.abi.FunctionReturnDecoder;
 import org.web3j.abi.TypeReference;
 import org.web3j.abi.datatypes.*;
 import org.web3j.abi.datatypes.generated.Uint256;
@@ -386,6 +384,24 @@
         return web3j.ethLogFlowable(filter).map(new Function<Log, CoinRewardEventResponse>() {
             @Override
             public CoinRewardEventResponse apply(Log log) {
+//                final List<String> topics = log.getTopics();
+//                String encodedEventSignature = EventEncoder.encode(COINREWARD_EVENT);
+//                if (topics == null || topics.size() == 0 || !topics.get(0).equals(encodedEventSignature)) {
+//                    return null;
+//                }
+//
+//                List<Type> indexedValues = new ArrayList<>();
+//                List<Type> nonIndexedValues =
+//                        FunctionReturnDecoder.decode(log.getData(), COINREWARD_EVENT.getNonIndexedParameters());
+//
+//                List<TypeReference<Type>> indexedParameters = COINREWARD_EVENT.getIndexedParameters();
+//                for (int i = 0; i < indexedParameters.size(); i++) {
+//                    Type value =
+//                            FunctionReturnDecoder.decodeIndexedValue(
+//                                    topics.get(i + 1), indexedParameters.get(i));
+//                    indexedValues.add(value);
+//                }
+//                final EventValues eventValues = new EventValues(indexedValues, nonIndexedValues);
                 EventValuesWithLog eventValues = extractEventParametersWithLog(COINREWARD_EVENT, log);
                 CoinRewardEventResponse typedResponse = new CoinRewardEventResponse();
                 if(eventValues!=null){
@@ -396,6 +412,7 @@
                     typedResponse.coinTarget = (BigInteger) eventValues.getNonIndexedValues().get(4).getValue();
                     typedResponse.usdtCoin = (BigInteger) eventValues.getNonIndexedValues().get(5).getValue();
                     typedResponse.lastMineTime = (BigInteger) eventValues.getNonIndexedValues().get(6).getValue();
+                    typedResponse.blockHash = log.getTransactionHash();
                 }
 
                 return typedResponse;
@@ -821,5 +838,6 @@
         public BigInteger coinTarget;//币本位多少币
         public BigInteger usdtCoin;//金本位换算后多少币
         public BigInteger lastMineTime;//上一次挖矿时间
+        public String blockHash;//上一次挖矿时间
     }
 }

--
Gitblit v1.9.1