update 全网算力优化,幸运值算法优化
This commit is contained in:
parent
589470260c
commit
14c8e731f2
|
@ -420,7 +420,7 @@ public class DataTask {
|
|||
//获取3天内全网的实际报块数
|
||||
BlockTimeAndNumberDto blockData = blockDataContext.getBlockData("nexa",start3d, end,blockPerDays, useAggregated);
|
||||
//3天矿池理论报块数
|
||||
BigDecimal throreticalBlocks = getTheoreticalBlocks("nexa",start3d, end, blockData);
|
||||
BigDecimal throreticalBlocks = getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start3d, end, blockData);
|
||||
//3天矿池实际报块数
|
||||
int actualBlocks = poolMapper.selectPoolBlock(3);
|
||||
//3天幸运值
|
||||
|
@ -430,7 +430,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 7;
|
||||
|
||||
blockData = blockDataContext.getBlockData("nexa",start7d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",start7d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start7d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(7);
|
||||
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -438,7 +438,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 30;
|
||||
|
||||
blockData = blockDataContext.getBlockData("nexa",start30d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",start30d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start30d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(30);
|
||||
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -447,7 +447,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 90;
|
||||
|
||||
blockData = blockDataContext.getBlockData("nexa",start90d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",start90d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.NEXA.gethRate(),start90d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(90);
|
||||
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -466,7 +466,7 @@ public class DataTask {
|
|||
* @param blockData
|
||||
* @return
|
||||
*/
|
||||
public BigDecimal getTheoreticalBlocks(String coin,Date start,Date end,BlockTimeAndNumberDto blockData){
|
||||
public BigDecimal getTheoreticalBlocks(String coin,int hRate,Date start,Date end,BlockTimeAndNumberDto blockData){
|
||||
|
||||
//得到每一个小时定时任务存储到数据库的全网算力
|
||||
List<DateBigDecimalDto> netPowerList = poolMapper.getDailyNetPower(coin);
|
||||
|
@ -475,20 +475,19 @@ public class DataTask {
|
|||
}
|
||||
//得时间段到矿池的算力
|
||||
List<DateBigDecimalDto> poolPowerList = poolMapper.getDailyPoolPower(coin);
|
||||
//A:矿池3天总算力
|
||||
//A:矿池N天总算力
|
||||
//计算矿池每日实际应出块数 block中算力单位是H/s
|
||||
int hRate = PoolUnits.NEXA.gethRate();
|
||||
BigDecimal pPow3d = poolPowerList.stream()
|
||||
.filter(e -> (e.getPDate().before(end)))
|
||||
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start)))
|
||||
.map(DateBigDecimalDto::getValue).reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.multiply(BigDecimal.valueOf(hRate));
|
||||
//作为A的除数,得到3天内的矿池平均算力
|
||||
//作为A的除数,得到N天内的矿池平均算力
|
||||
long pDay3d = poolPowerList.stream()
|
||||
.filter(e -> (e.getPDate().before(end)))
|
||||
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start))).count();
|
||||
|
||||
//B:3天全网算力
|
||||
//B:N天全网算力
|
||||
BigDecimal nPow3d = netPowerList.stream()
|
||||
.filter(e -> (e.getPDate().before(end)))
|
||||
.filter(e -> (e.getPDate().after(start) || e.getPDate().equals(start)))
|
||||
|
@ -882,7 +881,7 @@ public class DataTask {
|
|||
//获取3天内全网的实际报块数
|
||||
BlockTimeAndNumberDto blockData = blockDataContext.getBlockData("grs",start3d, end,blockPerDays, useAggregated);
|
||||
//3天矿池理论报块数
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("grs",start3d, end, blockData);
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start3d, end, blockData);
|
||||
//3天矿池实际报块数
|
||||
int actualBlocks = poolMapper.selectPoolBlock(3);
|
||||
//3天幸运值
|
||||
|
@ -892,7 +891,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 7;
|
||||
|
||||
blockData = blockDataContext.getBlockData("grs",start7d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",start7d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start7d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(7);
|
||||
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -900,7 +899,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 30;
|
||||
|
||||
blockData = blockDataContext.getBlockData("grs",start30d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",start30d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start30d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(30);
|
||||
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -908,7 +907,7 @@ public class DataTask {
|
|||
//90天幸运值
|
||||
useAggregated = blockPerDays.size() >= 90;
|
||||
blockData = blockDataContext.getBlockData("grs",start90d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",start90d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("grs",PoolUnits.GRS.gethRate(),start90d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(90);
|
||||
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -1289,7 +1288,7 @@ public class DataTask {
|
|||
|
||||
BlockTimeAndNumberDto blockData = blockDataContext.getBlockData("mona",start3d, end,blockPerDays, useAggregated);
|
||||
//3天矿池理论报块数
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("mona",start3d, end, blockData);
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start3d, end, blockData);
|
||||
|
||||
//3天矿池实际报块数
|
||||
int actualBlocks = poolMapper.selectPoolBlock(3);
|
||||
|
@ -1300,7 +1299,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 7;
|
||||
|
||||
blockData = blockDataContext.getBlockData("mona",start7d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("mona",start7d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start7d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(7);
|
||||
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -1308,7 +1307,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 30;
|
||||
|
||||
blockData = blockDataContext.getBlockData("mona",start30d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",start30d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("nexa",PoolUnits.MONA.gethRate(),start30d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(30);
|
||||
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -1317,7 +1316,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 90;
|
||||
|
||||
blockData = blockDataContext.getBlockData("mona",start90d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("mona",start90d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("mona",PoolUnits.MONA.gethRate(),start90d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(90);
|
||||
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -3412,7 +3411,7 @@ public class DataTask {
|
|||
|
||||
BlockTimeAndNumberDto blockData = blockDataContext.getBlockData("rxd",start3d, end,blockPerDays, useAggregated);
|
||||
//3天矿池理论报块数
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("rxd",start3d, end, blockData);
|
||||
BigDecimal throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start3d, end, blockData);
|
||||
|
||||
//3天矿池实际报块数
|
||||
int actualBlocks = poolMapper.selectPoolBlock(3);
|
||||
|
@ -3423,7 +3422,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 7;
|
||||
|
||||
blockData = blockDataContext.getBlockData("rxd",start7d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",start7d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start7d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(7);
|
||||
dto.setLuck7d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -3431,7 +3430,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 30;
|
||||
|
||||
blockData = blockDataContext.getBlockData("rxd",start30d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",start30d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start30d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(30);
|
||||
dto.setLuck30d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
@ -3440,7 +3439,7 @@ public class DataTask {
|
|||
useAggregated = blockPerDays.size() >= 90;
|
||||
|
||||
blockData = blockDataContext.getBlockData("rxd",start90d, end,blockPerDays, useAggregated);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",start90d, end, blockData);
|
||||
throreticalBlocks= getTheoreticalBlocks("rxd",PoolUnits.RXD.gethRate(),start90d, end, blockData);
|
||||
actualBlocks = poolMapper.selectPoolBlock(90);
|
||||
dto.setLuck90d(BigDecimal.valueOf(actualBlocks).divide(throreticalBlocks,8, RoundingMode.HALF_UP).doubleValue());
|
||||
|
||||
|
|
Loading…
Reference in New Issue