Merge branch 'master' into simon/enterprise-logo-container
This commit is contained in:
		
						commit
						72ec4c0d7b
					
				
							
								
								
									
										4
									
								
								backend/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								backend/.gitignore
									
									
									
									
										vendored
									
									
								
							@ -1,9 +1,9 @@
 | 
			
		||||
# See http://help.github.com/ignore-files/ for more about ignoring files.
 | 
			
		||||
 | 
			
		||||
# production config and external assets
 | 
			
		||||
*.json
 | 
			
		||||
!mempool-config.sample.json
 | 
			
		||||
 | 
			
		||||
mempool-config.json
 | 
			
		||||
pools.json
 | 
			
		||||
icons.json
 | 
			
		||||
 | 
			
		||||
# compiled output
 | 
			
		||||
 | 
			
		||||
@ -578,7 +578,7 @@ class Blocks {
 | 
			
		||||
 | 
			
		||||
    // Index the response if needed
 | 
			
		||||
    if (Common.blocksSummariesIndexingEnabled() === true) {
 | 
			
		||||
      await BlocksSummariesRepository.$saveSummary(block.height, summary, null);
 | 
			
		||||
      await BlocksSummariesRepository.$saveSummary({height: block.height, mined: summary});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return summary.transactions;
 | 
			
		||||
 | 
			
		||||
@ -451,9 +451,12 @@ class WebsocketHandler {
 | 
			
		||||
            value: tx.value,
 | 
			
		||||
          };
 | 
			
		||||
        });  
 | 
			
		||||
        BlocksSummariesRepository.$saveSummary(block.height, null, {
 | 
			
		||||
          id: block.id,
 | 
			
		||||
          transactions: stripped
 | 
			
		||||
        BlocksSummariesRepository.$saveSummary({
 | 
			
		||||
          height: block.height,
 | 
			
		||||
          template: {
 | 
			
		||||
            id: block.id,
 | 
			
		||||
            transactions: stripped
 | 
			
		||||
          }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        BlocksAuditsRepository.$saveAudit({
 | 
			
		||||
 | 
			
		||||
@ -17,18 +17,18 @@ class BlocksSummariesRepository {
 | 
			
		||||
    return undefined;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public async $saveSummary(height: number, mined: BlockSummary | null = null, template: BlockSummary | null = null) {
 | 
			
		||||
    const blockId = mined?.id ?? template?.id;
 | 
			
		||||
  public async $saveSummary(params: { height: number, mined?: BlockSummary, template?: BlockSummary}) {
 | 
			
		||||
    const blockId = params.mined?.id ?? params.template?.id;
 | 
			
		||||
    try {
 | 
			
		||||
      const [dbSummary]: any[] = await DB.query(`SELECT * FROM blocks_summaries WHERE id = "${blockId}"`);
 | 
			
		||||
      if (dbSummary.length === 0) { // First insertion
 | 
			
		||||
        await DB.query(`INSERT INTO blocks_summaries VALUE (?, ?, ?, ?)`, [
 | 
			
		||||
          height, blockId, JSON.stringify(mined?.transactions ?? []), JSON.stringify(template?.transactions ?? [])
 | 
			
		||||
          params.height, blockId, JSON.stringify(params.mined?.transactions ?? []), JSON.stringify(params.template?.transactions ?? [])
 | 
			
		||||
        ]);
 | 
			
		||||
      } else if (mined !== null) { // Update mined block summary
 | 
			
		||||
        await DB.query(`UPDATE blocks_summaries SET transactions = ? WHERE id = "${mined.id}"`, [JSON.stringify(mined?.transactions)]);
 | 
			
		||||
      } else if (template !== null) { // Update template block summary
 | 
			
		||||
        await DB.query(`UPDATE blocks_summaries SET template = ? WHERE id = "${template.id}"`, [JSON.stringify(template?.transactions)]);
 | 
			
		||||
      } else if (params.mined !== undefined) { // Update mined block summary
 | 
			
		||||
        await DB.query(`UPDATE blocks_summaries SET transactions = ? WHERE id = "${params.mined.id}"`, [JSON.stringify(params.mined.transactions)]);
 | 
			
		||||
      } else if (params.template !== undefined) { // Update template block summary
 | 
			
		||||
        await DB.query(`UPDATE blocks_summaries SET template = ? WHERE id = "${params.template.id}"`, [JSON.stringify(params.template?.transactions)]);
 | 
			
		||||
      }
 | 
			
		||||
    } catch (e: any) {
 | 
			
		||||
      if (e.errno === 1062) { // ER_DUP_ENTRY - This scenario is possible upon node backend restart
 | 
			
		||||
 | 
			
		||||
@ -143,9 +143,7 @@ export default class TxView implements TransactionStripped {
 | 
			
		||||
 | 
			
		||||
  getColor(): Color {
 | 
			
		||||
    // Block audit
 | 
			
		||||
    if (this.status === 'found') {
 | 
			
		||||
      // return hexToColor('1a4987');
 | 
			
		||||
    } else if (this.status === 'missing') {
 | 
			
		||||
    if (this.status === 'missing') {
 | 
			
		||||
      return hexToColor('039BE5');
 | 
			
		||||
    } else if (this.status === 'added') {
 | 
			
		||||
      return hexToColor('D81B60');
 | 
			
		||||
 | 
			
		||||
@ -156,7 +156,7 @@ export class BlockPredictionGraphComponent implements OnInit {
 | 
			
		||||
        type: 'category',
 | 
			
		||||
        axisLine: { onZero: true },
 | 
			
		||||
        axisLabel: {
 | 
			
		||||
          formatter: val => formatterXAxisTimeCategory(this.locale, this.timespan, parseInt(val, 10)),
 | 
			
		||||
          formatter: val => formatterXAxisTimeCategory(this.locale, this.timespan, parseInt(val, 10) * 1000),
 | 
			
		||||
          align: 'center',
 | 
			
		||||
          fontSize: 11,
 | 
			
		||||
          lineHeight: 12,
 | 
			
		||||
 | 
			
		||||
@ -5,6 +5,9 @@
 | 
			
		||||
    <span *ngIf="segwitGains.potentialP2shGains" class="badge badge-danger mr-1" i18n-ngbTooltip="ngbTooltip about missed out gains" ngbTooltip="This transaction could save {{ segwitGains.potentialBech32Gains * 100 | number : '1.0-0' }}% on fees by upgrading to native SegWit-Bech32 or {{ segwitGains.potentialP2shGains * 100 | number:  '1.0-0' }}% by upgrading to SegWit-P2SH" placement="bottom"><del i18n="tx-features.tag.segwit|SegWit">SegWit</del></span>
 | 
			
		||||
  </ng-template>
 | 
			
		||||
</ng-template>
 | 
			
		||||
<span *ngIf="isTaproot" class="badge badge-success mr-1" i18n-ngbTooltip="Taproot tooltip" ngbTooltip="This transaction uses Taproot" placement="bottom" i18n="tx-features.tag.taproot">Taproot</span>
 | 
			
		||||
<span *ngIf="isTaproot; else noTaproot" class="badge badge-success mr-1" i18n-ngbTooltip="Taproot tooltip" ngbTooltip="This transaction uses Taproot" placement="bottom" i18n="tx-features.tag.taproot">Taproot</span>
 | 
			
		||||
<ng-template #noTaproot>
 | 
			
		||||
  <span class="badge badge-danger mr-1" i18n-ngbTooltip="No Taproot tooltip" ngbTooltip="This transaction could save on fees and improve privacy by using Taproot" placement="bottom"><del i18n="tx-features.tag.taproot">Taproot</del></span>
 | 
			
		||||
</ng-template>
 | 
			
		||||
<span *ngIf="isRbfTransaction; else rbfDisabled" class="badge badge-success" i18n-ngbTooltip="RBF tooltip" ngbTooltip="This transaction support Replace-By-Fee (RBF) allowing fee bumping" placement="bottom" i18n="tx-features.tag.rbf|RBF">RBF</span>
 | 
			
		||||
<ng-template #rbfDisabled><span class="badge badge-danger mr-1" i18n-ngbTooltip="RBF disabled tooltip" ngbTooltip="This transaction does NOT support Replace-By-Fee (RBF) and cannot be fee bumped using this method" placement="bottom"><del i18n="tx-features.tag.rbf|RBF">RBF</del></span></ng-template>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user