move block audit endpoint from mining to bitcoin routes
This commit is contained in:
		
							parent
							
								
									201b32bdcd
								
							
						
					
					
						commit
						e627122239
					
				@ -89,6 +89,7 @@ class BitcoinRoutes {
 | 
				
			|||||||
      .get(config.MEMPOOL.API_URL_PREFIX + 'blocks/:height', this.getBlocks.bind(this))
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'blocks/:height', this.getBlocks.bind(this))
 | 
				
			||||||
      .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash', this.getBlock)
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash', this.getBlock)
 | 
				
			||||||
      .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/summary', this.getStrippedBlockTransactions)
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/summary', this.getStrippedBlockTransactions)
 | 
				
			||||||
 | 
					      .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/audit-summary', this.getBlockAuditSummary)
 | 
				
			||||||
      .post(config.MEMPOOL.API_URL_PREFIX + 'psbt/addparents', this.postPsbtCompletion)
 | 
					      .post(config.MEMPOOL.API_URL_PREFIX + 'psbt/addparents', this.postPsbtCompletion)
 | 
				
			||||||
      ;
 | 
					      ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -324,6 +325,16 @@ class BitcoinRoutes {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private async getStrippedBlockTransactions(req: Request, res: Response) {
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      const transactions = await blocks.$getStrippedBlockTransactions(req.params.hash);
 | 
				
			||||||
 | 
					      res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
 | 
				
			||||||
 | 
					      res.json(transactions);
 | 
				
			||||||
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
					      res.status(500).send(e instanceof Error ? e.message : e);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private async getBlock(req: Request, res: Response) {
 | 
					  private async getBlock(req: Request, res: Response) {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const block = await blocks.$getBlock(req.params.hash);
 | 
					      const block = await blocks.$getBlock(req.params.hash);
 | 
				
			||||||
@ -356,9 +367,9 @@ class BitcoinRoutes {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private async getStrippedBlockTransactions(req: Request, res: Response) {
 | 
					  private async getBlockAuditSummary(req: Request, res: Response) {
 | 
				
			||||||
    try {
 | 
					    try {
 | 
				
			||||||
      const transactions = await blocks.$getStrippedBlockTransactions(req.params.hash);
 | 
					      const transactions = await blocks.$getBlockAuditSummary(req.params.hash);
 | 
				
			||||||
      res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
 | 
					      res.setHeader('Expires', new Date(Date.now() + 1000 * 3600 * 24 * 30).toUTCString());
 | 
				
			||||||
      res.json(transactions);
 | 
					      res.json(transactions);
 | 
				
			||||||
    } catch (e) {
 | 
					    } catch (e) {
 | 
				
			||||||
 | 
				
			|||||||
@ -651,6 +651,19 @@ class Blocks {
 | 
				
			|||||||
    return returnBlocks;
 | 
					    return returnBlocks;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  public async $getBlockAuditSummary(hash: string): Promise<any> {
 | 
				
			||||||
 | 
					    let summary = await BlocksAuditsRepository.$getBlockAudit(hash);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // fallback to non-audited transaction summary
 | 
				
			||||||
 | 
					    if (!summary?.transactions?.length) {
 | 
				
			||||||
 | 
					      const strippedTransactions = await this.$getStrippedBlockTransactions(hash);
 | 
				
			||||||
 | 
					      summary = {
 | 
				
			||||||
 | 
					        transactions: strippedTransactions
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return summary;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public getLastDifficultyAdjustmentTime(): number {
 | 
					  public getLastDifficultyAdjustmentTime(): number {
 | 
				
			||||||
    return this.lastDifficultyAdjustmentTime;
 | 
					    return this.lastDifficultyAdjustmentTime;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -70,11 +70,7 @@ class BlocksAuditRepositories {
 | 
				
			|||||||
          return rows[0];
 | 
					          return rows[0];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // fallback to non-audited transaction summary
 | 
					      return null;
 | 
				
			||||||
      const strippedTransactions = await blocks.$getStrippedBlockTransactions(hash);
 | 
					 | 
				
			||||||
      return {
 | 
					 | 
				
			||||||
        transactions: strippedTransactions
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
    } catch (e: any) {
 | 
					    } catch (e: any) {
 | 
				
			||||||
      logger.err(`Cannot fetch block audit from db. Reason: ` + (e instanceof Error ? e.message : e));
 | 
					      logger.err(`Cannot fetch block audit from db. Reason: ` + (e instanceof Error ? e.message : e));
 | 
				
			||||||
      throw e;
 | 
					      throw e;
 | 
				
			||||||
 | 
				
			|||||||
@ -210,11 +210,7 @@ export class BlockComponent implements OnInit, OnDestroy {
 | 
				
			|||||||
          setTimeout(() => {
 | 
					          setTimeout(() => {
 | 
				
			||||||
            this.nextBlockSubscription = this.apiService.getBlock$(block.previousblockhash).subscribe();
 | 
					            this.nextBlockSubscription = this.apiService.getBlock$(block.previousblockhash).subscribe();
 | 
				
			||||||
            this.nextBlockTxListSubscription = this.electrsApiService.getBlockTransactions$(block.previousblockhash).subscribe();
 | 
					            this.nextBlockTxListSubscription = this.electrsApiService.getBlockTransactions$(block.previousblockhash).subscribe();
 | 
				
			||||||
            if (this.indexingAvailable) {
 | 
					            this.apiService.getBlockAudit$(block.previousblockhash);
 | 
				
			||||||
              this.apiService.getBlockAudit$(block.previousblockhash);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
              this.nextBlockSummarySubscription = this.apiService.getStrippedBlockTransactions$(block.previousblockhash).subscribe();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          }, 100);
 | 
					          }, 100);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -318,7 +314,7 @@ export class BlockComponent implements OnInit, OnDestroy {
 | 
				
			|||||||
          this.numMissing = 0;
 | 
					          this.numMissing = 0;
 | 
				
			||||||
          this.numUnexpected = 0;
 | 
					          this.numUnexpected = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          if (blockAudit.template) {
 | 
					          if (blockAudit?.template) {
 | 
				
			||||||
            for (const tx of blockAudit.template) {
 | 
					            for (const tx of blockAudit.template) {
 | 
				
			||||||
              inTemplate[tx.txid] = true;
 | 
					              inTemplate[tx.txid] = true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
				
			|||||||
@ -230,7 +230,7 @@ export class ApiService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  getBlockAudit$(hash: string) : Observable<any> {
 | 
					  getBlockAudit$(hash: string) : Observable<any> {
 | 
				
			||||||
    return this.httpClient.get<any>(
 | 
					    return this.httpClient.get<any>(
 | 
				
			||||||
      this.apiBaseUrl + this.apiBasePath + `/api/v1/mining/blocks/audit/` + hash, { observe: 'response' }
 | 
					      this.apiBaseUrl + this.apiBasePath + `/api/v1/block/${hash}/audit-summary`, { observe: 'response' }
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user