mirror of
https://github.com/mempool/mempool.git
synced 2025-01-18 05:12:35 +01:00
Merge pull request #918 from mempool/simon/taproot-tag
Adding Taproot transaction tag
This commit is contained in:
commit
61ffcd0065
@ -16,6 +16,7 @@ export function calcSegwitFeeGains(tx: Transaction) {
|
|||||||
const isP2sh = vin.prevout.scriptpubkey_type === 'p2sh';
|
const isP2sh = vin.prevout.scriptpubkey_type === 'p2sh';
|
||||||
const isP2wsh = vin.prevout.scriptpubkey_type === 'v0_p2wsh';
|
const isP2wsh = vin.prevout.scriptpubkey_type === 'v0_p2wsh';
|
||||||
const isP2wpkh = vin.prevout.scriptpubkey_type === 'v0_p2wpkh';
|
const isP2wpkh = vin.prevout.scriptpubkey_type === 'v0_p2wpkh';
|
||||||
|
const isP2tr = vin.prevout.scriptpubkey_type === 'v1_p2tr';
|
||||||
|
|
||||||
const op = vin.scriptsig ? vin.scriptsig_asm.split(' ')[0] : null;
|
const op = vin.scriptsig ? vin.scriptsig_asm.split(' ')[0] : null;
|
||||||
const isP2sh2Wpkh = isP2sh && !!vin.witness && op === 'OP_PUSHBYTES_22';
|
const isP2sh2Wpkh = isP2sh && !!vin.witness && op === 'OP_PUSHBYTES_22';
|
||||||
@ -25,6 +26,7 @@ export function calcSegwitFeeGains(tx: Transaction) {
|
|||||||
// Native Segwit - P2WPKH/P2WSH (Bech32)
|
// Native Segwit - P2WPKH/P2WSH (Bech32)
|
||||||
case isP2wpkh:
|
case isP2wpkh:
|
||||||
case isP2wsh:
|
case isP2wsh:
|
||||||
|
case isP2tr:
|
||||||
// maximal gains: the scriptSig is moved entirely to the witness part
|
// maximal gains: the scriptSig is moved entirely to the witness part
|
||||||
realizedGains += witnessSize(vin) * 3;
|
realizedGains += witnessSize(vin) * 3;
|
||||||
// XXX P2WSH output creation is more expensive, should we take this into consideration?
|
// XXX P2WSH output creation is more expensive, should we take this into consideration?
|
||||||
|
@ -5,5 +5,6 @@
|
|||||||
<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>
|
<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>
|
||||||
</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="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>
|
<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>
|
<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>
|
||||||
|
@ -17,6 +17,7 @@ export class TxFeaturesComponent implements OnChanges {
|
|||||||
potentialP2shGains: 0,
|
potentialP2shGains: 0,
|
||||||
};
|
};
|
||||||
isRbfTransaction: boolean;
|
isRbfTransaction: boolean;
|
||||||
|
isTaproot: boolean;
|
||||||
|
|
||||||
constructor() { }
|
constructor() { }
|
||||||
|
|
||||||
@ -26,5 +27,6 @@ export class TxFeaturesComponent implements OnChanges {
|
|||||||
}
|
}
|
||||||
this.segwitGains = calcSegwitFeeGains(this.tx);
|
this.segwitGains = calcSegwitFeeGains(this.tx);
|
||||||
this.isRbfTransaction = this.tx.vin.some((v) => v.sequence < 0xfffffffe);
|
this.isRbfTransaction = this.tx.vin.some((v) => v.sequence < 0xfffffffe);
|
||||||
|
this.isTaproot = this.tx.vin.some((v) => v.prevout && v.prevout.scriptpubkey_type === 'v1_p2tr');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user