From 779aaca1092660fe68453afefce43d6f9a7a1056 Mon Sep 17 00:00:00 2001 From: yyb <1416014977@qq.com> Date: Fri, 23 May 2025 09:33:45 +0800 Subject: [PATCH] =?UTF-8?q?update=20nexa=20=E5=85=A8=E7=BD=91=E7=AE=97?= =?UTF-8?q?=E5=8A=9B=E8=B0=83=E7=94=A8=E4=B8=89=E6=96=B9api=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/m2pool/pool/entity/BlockNewInfo.java | 47 ++++++++++++++ .../java/com/m2pool/pool/task/NodeTask.java | 2 +- .../java/com/m2pool/pool/utils/NodeRpc.java | 64 +++++++++++-------- 3 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/entity/BlockNewInfo.java diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/entity/BlockNewInfo.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/entity/BlockNewInfo.java new file mode 100644 index 0000000..bb6b92f --- /dev/null +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/entity/BlockNewInfo.java @@ -0,0 +1,47 @@ +package com.m2pool.pool.entity; + + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Map; + +/** + * @Description 文件 + * @Date 2024/6/14 15:57 + * @Author dy + */ +@Data +public class BlockNewInfo implements Serializable { + + /** 全网报块 */ + private long blocks; + + + private long currentblocksize; + + private long currentblocktx; + + private long currentmaxblocksize; + + /** + * 全网难度 + */ + private BigDecimal difficulty; + + private String errors; + + private BigDecimal networkhashps; + + private long pooledtx; + + private String chain; + + private Map miners; + + @Data + public class MinerInfo { + private Long lastrequest; + } +} diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NodeTask.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NodeTask.java index 0faf96e..acb5485 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NodeTask.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/task/NodeTask.java @@ -49,7 +49,7 @@ public class NodeTask { blockInfo = NodeRpc.getBlock("nexa"); count++; } - + System.out.println("blockInfo 的信息"+blockInfo); if(StringUtils.isNotNull(blockInfo)){ if(StringUtils.isNotNull(blockInfo.getPower())){ redisService.setCacheObject("nexa_block",blockInfo); diff --git a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/NodeRpc.java b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/NodeRpc.java index 2332bbe..40896b2 100644 --- a/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/NodeRpc.java +++ b/m2pool-modules/m2pool-pool/src/main/java/com/m2pool/pool/utils/NodeRpc.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSONObject; import com.m2pool.common.core.text.Convert; import com.m2pool.common.core.utils.StringUtils; import com.m2pool.pool.entity.BlockInfo; +import com.m2pool.pool.entity.BlockNewInfo; import com.m2pool.pool.enums.NodeConfig; import com.m2pool.pool.enums.NodeConstant; import org.apache.http.HttpHeaders; @@ -29,7 +30,7 @@ public class NodeRpc{ public static String getResult(String coin,String method,String[] params) { NodeConfig config = (NodeConfig) EnumUtils.get(NodeConfig.class, coin); - + System.out.println("----------执行rpc接口调用"); String uri ="http://"+config.getIp()+":"+config.getHost(); String auth =config.getUser()+":"+config.getPwd(); @@ -38,7 +39,10 @@ public class NodeRpc{ requestBody.put("jsonrpc", "1.0"); requestBody.put("id", "testnet"); requestBody.put("method", method); - requestBody.put("params",params); + if(config.getCoin() != "nexa"){ + requestBody.put("params",params); + } + try { String body = HttpRequest @@ -201,8 +205,7 @@ public class NodeRpc{ } String[] params = {nowHeight,"2"}; - String result = getResult(coin, "getblock", params); - + String result = getResult(coin, "getmininginfo", params); BlockInfo blockInfo = new BlockInfo(); if(StringUtils.isBlank(result)){ @@ -216,44 +219,51 @@ public class NodeRpc{ } JSONObject jsonObject = JSON.parseObject(result); - long height = jsonObject.getLongValue("height"); + long height = jsonObject.getLongValue("blocks"); blockInfo.setHeight(height); BigDecimal difficulty = jsonObject.getBigDecimal("difficulty"); + if(StringUtils.isNotNull(difficulty)){ blockInfo.setDifficulty(difficulty.setScale(2,BigDecimal.ROUND_HALF_UP)); - NodeConstant constant = (NodeConstant) EnumUtils.get(NodeConstant.class, coin); - BigDecimal factor = constant.getFactor(); - if(StringUtils.isNotNull(factor)){ - blockInfo.setPower(difficulty.multiply(factor).setScale(2,BigDecimal.ROUND_HALF_UP)); - } + //NodeConstant constant = (NodeConstant) EnumUtils.get(NodeConstant.class, coin); + //BigDecimal factor = constant.getFactor(); + //if(StringUtils.isNotNull(factor)){ + // blockInfo.setPower(difficulty.multiply(factor).setScale(2,BigDecimal.ROUND_HALF_UP)); + //} + } - - JSONArray txs = jsonObject.getJSONArray("tx"); - if(StringUtils.isNull(txs)){ - return null; + BigDecimal netPower = jsonObject.getBigDecimal("networkhashps"); + if (StringUtils.isNotNull(netPower)){ + blockInfo.setPower(netPower); } + + //JSONArray txs = jsonObject.getJSONArray("tx"); + //if(StringUtils.isNull(txs)){ + // return null; + //} //System.out.println(txs); final double[] reward = {0}; final double[] fees = {0}; - txs.iterator().forEachRemaining(e -> { - JSONObject json = (JSONObject) e; - String vin = json.getString("vin"); - if(StringUtils.isNotNull(vin)){ - if(vin.length() == 2){ - reward[0] = json.getDoubleValue("sends"); - }else if(vin.length() > 2){ - BigDecimal fee = json.getBigDecimal("fee"); - BigDecimal newFees = fee.add(BigDecimal.valueOf(fees[0])); - fees[0] = newFees.doubleValue(); - } - } - }); + //txs.iterator().forEachRemaining(e -> { + // JSONObject json = (JSONObject) e; + // String vin = json.getString("vin"); + // if(StringUtils.isNotNull(vin)){ + // if(vin.length() == 2){ + // reward[0] = json.getDoubleValue("sends"); + // }else if(vin.length() > 2){ + // BigDecimal fee = json.getBigDecimal("fee"); + // BigDecimal newFees = fee.add(BigDecimal.valueOf(fees[0])); + // fees[0] = newFees.doubleValue(); + // } + // } + //}); blockInfo.setReward(BigDecimal.valueOf(reward[0])); blockInfo.setFees(BigDecimal.valueOf(fees[0])); blockInfo.setProfit(blockInfo.getReward().subtract(blockInfo.getFees())); + System.out.println("blockInfo信息rpc"+blockInfo); return blockInfo; }