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