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 + 'block/:hash', this.getBlock)
 | 
			
		||||
      .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)
 | 
			
		||||
      ;
 | 
			
		||||
 | 
			
		||||
@ -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) {
 | 
			
		||||
    try {
 | 
			
		||||
      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 {
 | 
			
		||||
      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.json(transactions);
 | 
			
		||||
    } catch (e) {
 | 
			
		||||
 | 
			
		||||
@ -651,6 +651,19 @@ class Blocks {
 | 
			
		||||
    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 {
 | 
			
		||||
    return this.lastDifficultyAdjustmentTime;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -70,11 +70,7 @@ class BlocksAuditRepositories {
 | 
			
		||||
          return rows[0];
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      // fallback to non-audited transaction summary
 | 
			
		||||
      const strippedTransactions = await blocks.$getStrippedBlockTransactions(hash);
 | 
			
		||||
      return {
 | 
			
		||||
        transactions: strippedTransactions
 | 
			
		||||
      };
 | 
			
		||||
      return null;
 | 
			
		||||
    } catch (e: any) {
 | 
			
		||||
      logger.err(`Cannot fetch block audit from db. Reason: ` + (e instanceof Error ? e.message : e));
 | 
			
		||||
      throw e;
 | 
			
		||||
 | 
			
		||||
@ -210,11 +210,7 @@ export class BlockComponent implements OnInit, OnDestroy {
 | 
			
		||||
          setTimeout(() => {
 | 
			
		||||
            this.nextBlockSubscription = this.apiService.getBlock$(block.previousblockhash).subscribe();
 | 
			
		||||
            this.nextBlockTxListSubscription = this.electrsApiService.getBlockTransactions$(block.previousblockhash).subscribe();
 | 
			
		||||
            if (this.indexingAvailable) {
 | 
			
		||||
            this.apiService.getBlockAudit$(block.previousblockhash);
 | 
			
		||||
            } else {
 | 
			
		||||
              this.nextBlockSummarySubscription = this.apiService.getStrippedBlockTransactions$(block.previousblockhash).subscribe();
 | 
			
		||||
            }
 | 
			
		||||
          }, 100);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -318,7 +314,7 @@ export class BlockComponent implements OnInit, OnDestroy {
 | 
			
		||||
          this.numMissing = 0;
 | 
			
		||||
          this.numUnexpected = 0;
 | 
			
		||||
 | 
			
		||||
          if (blockAudit.template) {
 | 
			
		||||
          if (blockAudit?.template) {
 | 
			
		||||
            for (const tx of blockAudit.template) {
 | 
			
		||||
              inTemplate[tx.txid] = true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -230,7 +230,7 @@ export class ApiService {
 | 
			
		||||
 | 
			
		||||
  getBlockAudit$(hash: string) : Observable<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