Removed hardcoded genesis timestamp

Fix duplicated genesis hashrate attempt
Add log during difficulty adjustment indexing
This commit is contained in:
nymkappa 2022-07-08 11:15:48 +02:00
parent c75f485e54
commit e303a4c374
No known key found for this signature in database
GPG Key ID: E155910B16E8BD04

View File

@ -189,9 +189,11 @@ class Mining {
} }
try { try {
const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0));
const genesisTimestamp = genesisBlock.time * 1000;
const indexedTimestamp = await HashratesRepository.$getWeeklyHashrateTimestamps(); const indexedTimestamp = await HashratesRepository.$getWeeklyHashrateTimestamps();
const hashrates: any[] = []; const hashrates: any[] = [];
const genesisTimestamp = 1231006505000; // bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
const lastMonday = new Date(now.setDate(now.getDate() - (now.getDay() + 6) % 7)); const lastMonday = new Date(now.setDate(now.getDate() - (now.getDay() + 6) % 7));
const lastMondayMidnight = this.getDateMidnight(lastMonday); const lastMondayMidnight = this.getDateMidnight(lastMonday);
@ -297,8 +299,9 @@ class Mining {
} }
try { try {
const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0));
const genesisTimestamp = genesisBlock.time * 1000;
const indexedTimestamp = (await HashratesRepository.$getNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp); const indexedTimestamp = (await HashratesRepository.$getNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp);
const genesisTimestamp = (config.MEMPOOL.NETWORK === 'signet') ? 1598918400000 : 1231006505000; // bitcoin-cli getblock 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
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[] = [];
@ -368,8 +371,8 @@ class Mining {
++totalIndexed; ++totalIndexed;
} }
// Add genesis block manually on mainnet and testnet // Add genesis block manually
if ('signet' !== config.MEMPOOL.NETWORK && toTimestamp <= genesisTimestamp && !indexedTimestamp.includes(genesisTimestamp)) { if (!indexedTimestamp.includes(genesisTimestamp / 1000)) {
hashrates.push({ hashrates.push({
hashrateTimestamp: genesisTimestamp / 1000, hashrateTimestamp: genesisTimestamp / 1000,
avgHashrate: await bitcoinClient.getNetworkHashPs(1, 1), avgHashrate: await bitcoinClient.getNetworkHashPs(1, 1),
@ -410,14 +413,18 @@ class Mining {
let totalIndexed = 0; let totalIndexed = 0;
if (indexedHeights[0] !== true) { if (indexedHeights[0] !== true) {
const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0));
await DifficultyAdjustmentsRepository.$saveAdjustments({ await DifficultyAdjustmentsRepository.$saveAdjustments({
time: (config.MEMPOOL.NETWORK === 'signet') ? 1598918400 : 1231006505, time: genesisBlock.time,
height: 0, height: 0,
difficulty: (config.MEMPOOL.NETWORK === 'signet') ? 0.001126515290698186 : 1.0, difficulty: genesisBlock.difficulty,
adjustment: 0.0, adjustment: 0.0,
}); });
} }
let totalBlockChecked = 0;
let timer = new Date().getTime() / 1000;
for (const block of blocks) { for (const block of blocks) {
if (block.difficulty !== currentDifficulty) { if (block.difficulty !== currentDifficulty) {
if (block.height === 0 || indexedHeights[block.height] === true) { // Already indexed if (block.height === 0 || indexedHeights[block.height] === true) { // Already indexed
@ -438,6 +445,14 @@ class Mining {
totalIndexed++; totalIndexed++;
currentDifficulty = block.difficulty; currentDifficulty = block.difficulty;
} }
totalBlockChecked++;
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
if (elapsedSeconds > 5) {
const progress = Math.round(totalBlockChecked / blocks.length * 100);
logger.info(`Indexing difficulty adjustment at block #${block.height} | Progress: ${progress}%`);
timer = new Date().getTime() / 1000;
}
} }
if (totalIndexed > 0) { if (totalIndexed > 0) {