| | |
| | | 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; |
| | |
| | | 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){ |
| | |
| | | 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; |
| | |
| | | public BigInteger coinTarget;//币本位多少币 |
| | | public BigInteger usdtCoin;//金本位换算后多少币 |
| | | public BigInteger lastMineTime;//上一次挖矿时间 |
| | | public String blockHash;//上一次挖矿时间 |
| | | } |
| | | } |