[Indexing] - Support 10 blocks depth reorgs
This commit is contained in:
@@ -23,6 +23,7 @@ class Blocks {
|
||||
private newBlockCallbacks: ((block: BlockExtended, txIds: string[], transactions: TransactionExtended[]) => void)[] = [];
|
||||
private blockIndexingStarted = false;
|
||||
public blockIndexingCompleted = false;
|
||||
public reindexFlag = true; // Always re-index the latest indexed data in case the node went offline with an invalid block tip (reorg)
|
||||
|
||||
constructor() { }
|
||||
|
||||
@@ -189,16 +190,19 @@ class Blocks {
|
||||
* [INDEXING] Index all blocks metadata for the mining dashboard
|
||||
*/
|
||||
public async $generateBlockDatabase() {
|
||||
if (this.blockIndexingStarted) {
|
||||
if (this.blockIndexingStarted && !this.reindexFlag) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.reindexFlag = false;
|
||||
|
||||
const blockchainInfo = await bitcoinClient.getBlockchainInfo();
|
||||
if (blockchainInfo.blocks !== blockchainInfo.headers) { // Wait for node to sync
|
||||
return;
|
||||
}
|
||||
|
||||
this.blockIndexingStarted = true;
|
||||
this.blockIndexingCompleted = false;
|
||||
|
||||
try {
|
||||
let currentBlockHeight = blockchainInfo.blocks;
|
||||
@@ -316,6 +320,12 @@ class Blocks {
|
||||
|
||||
if (Common.indexingEnabled()) {
|
||||
await blocksRepository.$saveBlockInDatabase(blockExtended);
|
||||
|
||||
// If the last 10 blocks chain is not valid, re-index them (reorg)
|
||||
const chainValid = await blocksRepository.$validateRecentBlocks();
|
||||
if (!chainValid) {
|
||||
this.reindexFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (block.height % 2016 === 0) {
|
||||
|
||||
Reference in New Issue
Block a user