Merge pull request #1250 from nymkappa/feature/disable-mining
Provide a way to completely disable block indexing and mining menu
This commit is contained in:
		
						commit
						afe228f2c3
					
				| @ -116,10 +116,7 @@ class Blocks { | |||||||
|     blockExtended.extras.feeRange = transactionsTmp.length > 0 ? |     blockExtended.extras.feeRange = transactionsTmp.length > 0 ? | ||||||
|       Common.getFeesInRange(transactionsTmp, 8) : [0, 0]; |       Common.getFeesInRange(transactionsTmp, 8) : [0, 0]; | ||||||
| 
 | 
 | ||||||
|     const indexingAvailable = |     if (Common.indexingEnabled()) { | ||||||
|       ['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) && |  | ||||||
|       config.DATABASE.ENABLED === true; |  | ||||||
|     if (indexingAvailable) { |  | ||||||
|       let pool: PoolTag; |       let pool: PoolTag; | ||||||
|       if (blockExtended.extras?.coinbaseTx !== undefined) { |       if (blockExtended.extras?.coinbaseTx !== undefined) { | ||||||
|         pool = await this.$findBlockMiner(blockExtended.extras?.coinbaseTx); |         pool = await this.$findBlockMiner(blockExtended.extras?.coinbaseTx); | ||||||
| @ -173,11 +170,9 @@ class Blocks { | |||||||
|    * Index all blocks metadata for the mining dashboard |    * Index all blocks metadata for the mining dashboard | ||||||
|    */ |    */ | ||||||
|   public async $generateBlockDatabase() { |   public async $generateBlockDatabase() { | ||||||
|     if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false || // Bitcoin only
 |     if (this.blockIndexingStarted === true || | ||||||
|       config.MEMPOOL.INDEXING_BLOCKS_AMOUNT === 0 || // Indexing of older blocks must be enabled
 |       !Common.indexingEnabled() || | ||||||
|       memPool.hasPriority() || // We sync the mempool first
 |       memPool.hasPriority() | ||||||
|       this.blockIndexingStarted === true || // Indexing must not already be in progress
 |  | ||||||
|       config.DATABASE.ENABLED === false |  | ||||||
|     ) { |     ) { | ||||||
|       return; |       return; | ||||||
|     } |     } | ||||||
| @ -293,10 +288,7 @@ class Blocks { | |||||||
|       const transactions = await this.$getTransactionsExtended(blockHash, block.height, false); |       const transactions = await this.$getTransactionsExtended(blockHash, block.height, false); | ||||||
|       const blockExtended: BlockExtended = await this.$getBlockExtended(block, transactions); |       const blockExtended: BlockExtended = await this.$getBlockExtended(block, transactions); | ||||||
| 
 | 
 | ||||||
|       const indexingAvailable = |       if (Common.indexingEnabled()) { | ||||||
|         ['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) && |  | ||||||
|         config.DATABASE.ENABLED === true; |  | ||||||
|       if (indexingAvailable) { |  | ||||||
|         await blocksRepository.$saveBlockInDatabase(blockExtended); |         await blocksRepository.$saveBlockInDatabase(blockExtended); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
| @ -340,10 +332,6 @@ class Blocks { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   public async $getBlocksExtras(fromHeight: number): Promise<BlockExtended[]> { |   public async $getBlocksExtras(fromHeight: number): Promise<BlockExtended[]> { | ||||||
|     const indexingAvailable = |  | ||||||
|       ['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) && |  | ||||||
|       config.DATABASE.ENABLED === true; |  | ||||||
| 
 |  | ||||||
|     try { |     try { | ||||||
|       loadingIndicators.setProgress('blocks', 0); |       loadingIndicators.setProgress('blocks', 0); | ||||||
| 
 | 
 | ||||||
| @ -366,7 +354,7 @@ class Blocks { | |||||||
|       let nextHash = startFromHash; |       let nextHash = startFromHash; | ||||||
|       for (let i = 0; i < 10 && currentHeight >= 0; i++) { |       for (let i = 0; i < 10 && currentHeight >= 0; i++) { | ||||||
|         let block = this.getBlocks().find((b) => b.height === currentHeight); |         let block = this.getBlocks().find((b) => b.height === currentHeight); | ||||||
|         if (!block && indexingAvailable) { |         if (!block && Common.indexingEnabled()) { | ||||||
|           block = this.prepareBlock(await this.$indexBlock(currentHeight)); |           block = this.prepareBlock(await this.$indexBlock(currentHeight)); | ||||||
|         } else if (!block) { |         } else if (!block) { | ||||||
|           block = this.prepareBlock(await bitcoinApi.$getBlock(nextHash)); |           block = this.prepareBlock(await bitcoinApi.$getBlock(nextHash)); | ||||||
|  | |||||||
| @ -154,4 +154,12 @@ export class Common { | |||||||
|     }); |     }); | ||||||
|     return parents; |     return parents; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   static indexingEnabled(): boolean { | ||||||
|  |     return ( | ||||||
|  |       ['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) && | ||||||
|  |       config.DATABASE.ENABLED === true && | ||||||
|  |       config.MEMPOOL.INDEXING_BLOCKS_AMOUNT != 0 | ||||||
|  |     ); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,5 +15,6 @@ | |||||||
|   "BASE_MODULE": "mempool", |   "BASE_MODULE": "mempool", | ||||||
|   "MEMPOOL_WEBSITE_URL": "https://mempool.space", |   "MEMPOOL_WEBSITE_URL": "https://mempool.space", | ||||||
|   "LIQUID_WEBSITE_URL": "https://liquid.network", |   "LIQUID_WEBSITE_URL": "https://liquid.network", | ||||||
|   "BISQ_WEBSITE_URL": "https://bisq.markets" |   "BISQ_WEBSITE_URL": "https://bisq.markets", | ||||||
|  |   "MINING_DASHBOARD": true | ||||||
| } | } | ||||||
|  | |||||||
| @ -31,9 +31,12 @@ | |||||||
|       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home"> |       <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home"> | ||||||
|         <a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a> |         <a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a> | ||||||
|       </li> |       </li> | ||||||
|       <li class="nav-item" routerLinkActive="active" id="btn-pools"> |       <li class="nav-item" routerLinkActive="active" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD"> | ||||||
|         <a class="nav-link" [routerLink]="['/mining/pools' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="master-page.mining-pools" title="Mining Pools"></fa-icon></a> |         <a class="nav-link" [routerLink]="['/mining/pools' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="master-page.mining-pools" title="Mining Pools"></fa-icon></a> | ||||||
|       </li> |       </li> | ||||||
|  |       <li class="nav-item" routerLinkActive="active" id="btn-blocks" *ngIf="!stateService.env.MINING_DASHBOARD"> | ||||||
|  |         <a class="nav-link" [routerLink]="['/blocks' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'cubes']" [fixedWidth]="true" i18n-title="master-page.blocks" title="Blocks"></fa-icon></a> | ||||||
|  |       </li> | ||||||
|       <li class="nav-item" routerLinkActive="active" id="btn-graphs"> |       <li class="nav-item" routerLinkActive="active" id="btn-graphs"> | ||||||
|         <a class="nav-link" [routerLink]="['/graphs' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'chart-area']" [fixedWidth]="true" i18n-title="master-page.graphs" title="Graphs"></fa-icon></a> |         <a class="nav-link" [routerLink]="['/graphs' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'chart-area']" [fixedWidth]="true" i18n-title="master-page.graphs" title="Graphs"></fa-icon></a> | ||||||
|       </li> |       </li> | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ export class MasterPageComponent implements OnInit { | |||||||
|   urlLanguage: string; |   urlLanguage: string; | ||||||
| 
 | 
 | ||||||
|   constructor( |   constructor( | ||||||
|     private stateService: StateService, |     public stateService: StateService, | ||||||
|     private languageService: LanguageService, |     private languageService: LanguageService, | ||||||
|   ) { } |   ) { } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -36,6 +36,7 @@ export interface Env { | |||||||
|   MEMPOOL_WEBSITE_URL: string; |   MEMPOOL_WEBSITE_URL: string; | ||||||
|   LIQUID_WEBSITE_URL: string; |   LIQUID_WEBSITE_URL: string; | ||||||
|   BISQ_WEBSITE_URL: string; |   BISQ_WEBSITE_URL: string; | ||||||
|  |   MINING_DASHBOARD: boolean; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const defaultEnv: Env = { | const defaultEnv: Env = { | ||||||
| @ -59,6 +60,7 @@ const defaultEnv: Env = { | |||||||
|   'MEMPOOL_WEBSITE_URL': 'https://mempool.space', |   'MEMPOOL_WEBSITE_URL': 'https://mempool.space', | ||||||
|   'LIQUID_WEBSITE_URL': 'https://liquid.network', |   'LIQUID_WEBSITE_URL': 'https://liquid.network', | ||||||
|   'BISQ_WEBSITE_URL': 'https://bisq.markets', |   'BISQ_WEBSITE_URL': 'https://bisq.markets', | ||||||
|  |   'MINING_DASHBOARD': true | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @Injectable({ | @Injectable({ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user