Use raw db hashrate instead of avg for indexing
This commit is contained in:
parent
e303a4c374
commit
d8a90cce47
@ -173,19 +173,14 @@ class Mining {
|
|||||||
*/
|
*/
|
||||||
public async $generatePoolHashrateHistory(): Promise<void> {
|
public async $generatePoolHashrateHistory(): Promise<void> {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
|
const lastestRunDate = await HashratesRepository.$getLatestRun('last_weekly_hashrates_indexing');
|
||||||
|
|
||||||
try {
|
// Run only if:
|
||||||
const lastestRunDate = await HashratesRepository.$getLatestRun('last_weekly_hashrates_indexing');
|
// * lastestRunDate is set to 0 (node backend restart, reorg)
|
||||||
|
// * we started a new week (around Monday midnight)
|
||||||
// Run only if:
|
const runIndexing = lastestRunDate === 0 || now.getUTCDay() === 1 && lastestRunDate !== now.getUTCDate();
|
||||||
// * lastestRunDate is set to 0 (node backend restart, reorg)
|
if (!runIndexing) {
|
||||||
// * we started a new week (around Monday midnight)
|
return;
|
||||||
const runIndexing = lastestRunDate === 0 || now.getUTCDay() === 1 && lastestRunDate !== now.getUTCDate();
|
|
||||||
if (!runIndexing) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -287,21 +282,17 @@ class Mining {
|
|||||||
* [INDEXING] Generate daily hashrate data
|
* [INDEXING] Generate daily hashrate data
|
||||||
*/
|
*/
|
||||||
public async $generateNetworkHashrateHistory(): Promise<void> {
|
public async $generateNetworkHashrateHistory(): Promise<void> {
|
||||||
try {
|
// We only run this once a day around midnight
|
||||||
// We only run this once a day around midnight
|
const latestRunDate = await HashratesRepository.$getLatestRun('last_hashrates_indexing');
|
||||||
const latestRunDate = await HashratesRepository.$getLatestRun('last_hashrates_indexing');
|
const now = new Date().getUTCDate();
|
||||||
const now = new Date().getUTCDate();
|
if (now === latestRunDate) {
|
||||||
if (now === latestRunDate) {
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0));
|
const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0));
|
||||||
const genesisTimestamp = genesisBlock.time * 1000;
|
const genesisTimestamp = genesisBlock.time * 1000;
|
||||||
const indexedTimestamp = (await HashratesRepository.$getNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp);
|
const indexedTimestamp = (await HashratesRepository.$getRawNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp);
|
||||||
const lastMidnight = this.getDateMidnight(new Date());
|
const lastMidnight = this.getDateMidnight(new Date());
|
||||||
let toTimestamp = Math.round(lastMidnight.getTime());
|
let toTimestamp = Math.round(lastMidnight.getTime());
|
||||||
const hashrates: any[] = [];
|
const hashrates: any[] = [];
|
||||||
|
@ -30,6 +30,32 @@ class HashratesRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async $getRawNetworkDailyHashrate(interval: string | null): Promise<any[]> {
|
||||||
|
interval = Common.getSqlInterval(interval);
|
||||||
|
|
||||||
|
let query = `SELECT
|
||||||
|
UNIX_TIMESTAMP(hashrate_timestamp) as timestamp,
|
||||||
|
avg_hashrate as avgHashrate
|
||||||
|
FROM hashrates`;
|
||||||
|
|
||||||
|
if (interval) {
|
||||||
|
query += ` WHERE hashrate_timestamp BETWEEN DATE_SUB(NOW(), INTERVAL ${interval}) AND NOW()
|
||||||
|
AND hashrates.type = 'daily'`;
|
||||||
|
} else {
|
||||||
|
query += ` WHERE hashrates.type = 'daily'`;
|
||||||
|
}
|
||||||
|
|
||||||
|
query += ` ORDER by hashrate_timestamp`;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const [rows]: any[] = await DB.query(query);
|
||||||
|
return rows;
|
||||||
|
} catch (e) {
|
||||||
|
logger.err('Cannot fetch network hashrate history. Reason: ' + (e instanceof Error ? e.message : e));
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async $getNetworkDailyHashrate(interval: string | null): Promise<any[]> {
|
public async $getNetworkDailyHashrate(interval: string | null): Promise<any[]> {
|
||||||
interval = Common.getSqlInterval(interval);
|
interval = Common.getSqlInterval(interval);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user