mirror of
https://github.com/mempool/mempool.git
synced 2025-10-09 19:32:58 +02:00
Merge pull request #5904 from mempool/mononaut/sighash-fixes
misc signature highlighting fixes
This commit is contained in:
@@ -58,11 +58,11 @@
|
|||||||
@if (tx['_showSignatures']) {
|
@if (tx['_showSignatures']) {
|
||||||
<td class="sig-td">
|
<td class="sig-td">
|
||||||
<div class="sig-stack">
|
<div class="sig-stack">
|
||||||
@if (tx['_sigs'][vindex].length === 0 && signaturesMode === 'all') {
|
@if (!tx['_sigs']?.[vindex]?.length) {
|
||||||
<span class="sig sig-key sig-no-lock" ngbTooltip="unsigned">
|
<span class="sig sig-key sig-no-lock" ngbTooltip="unsigned">
|
||||||
<fa-icon [icon]="['fas', 'lock-open']" [fixedWidth]="true"></fa-icon>
|
<fa-icon [icon]="['fas', 'lock-open']" [fixedWidth]="true"></fa-icon>
|
||||||
</span>
|
</span>
|
||||||
} @else if (showSig(tx['_sigs'][vindex])) {
|
} @else {
|
||||||
@for (sig of tx['_sigs'][vindex].slice(0, 7); track sig.signature; let idx = $index) {
|
@for (sig of tx['_sigs'][vindex].slice(0, 7); track sig.signature; let idx = $index) {
|
||||||
@if (idx < 7) {
|
@if (idx < 7) {
|
||||||
<span
|
<span
|
||||||
|
@@ -91,13 +91,13 @@ export class TransactionsListComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.latestBlock$ = this.stateService.blocks$.pipe(map((blocks) => blocks[0]));
|
this.latestBlock$ = this.stateService.blocks$.pipe(map((blocks) => blocks[0]));
|
||||||
this.networkSubscription = this.stateService.networkChanged$.subscribe((network) => this.network = network);
|
this.networkSubscription = this.stateService.networkChanged$.subscribe((network) => this.network = network);
|
||||||
|
|
||||||
this.signaturesSubscription = this.stateService.signaturesMode$.subscribe((mode) => {
|
this.signaturesSubscription = this.stateService.signaturesMode$.subscribe((mode) => {
|
||||||
this.signaturesMode = mode;
|
this.signaturesPreference = mode;
|
||||||
this.updateSignaturesMode();
|
this.updateSignaturesMode();
|
||||||
});
|
});
|
||||||
|
|
||||||
this.queryParamsSubscription = this.route.queryParams.subscribe((params) => {
|
this.queryParamsSubscription = this.route.queryParams.subscribe((params) => {
|
||||||
console.log('query params', params);
|
|
||||||
if (params['sigs'] && ['all', 'interesting', 'none'].includes(params['sigs'])) {
|
if (params['sigs'] && ['all', 'interesting', 'none'].includes(params['sigs'])) {
|
||||||
this.signaturesOverride = params['sigs'] as SignaturesMode;
|
this.signaturesOverride = params['sigs'] as SignaturesMode;
|
||||||
this.updateSignaturesMode();
|
this.updateSignaturesMode();
|
||||||
@@ -313,16 +313,19 @@ export class TransactionsListComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// process signature data
|
// process signature data
|
||||||
tx['_sigs'] = tx.vin.map(vin => processInputSignatures(vin));
|
if (tx.vin.length && !tx.vin[0].is_coinbase) {
|
||||||
tx['_sigmap'] = tx['_sigs'].reduce((map, sigs, vindex) => {
|
tx['_sigs'] = tx.vin.map(vin => processInputSignatures(vin));
|
||||||
sigs.forEach(sig => {
|
tx['_sigmap'] = tx['_sigs'].reduce((map, sigs, vindex) => {
|
||||||
map[sig.signature] = { sig, vindex };
|
sigs.forEach(sig => {
|
||||||
});
|
map[sig.signature] = { sig, vindex };
|
||||||
return map;
|
});
|
||||||
}, {});
|
return map;
|
||||||
|
}, {});
|
||||||
|
|
||||||
if (!tx['_interestingSignatures']) {
|
if (!tx['_interestingSignatures']) {
|
||||||
tx['_interestingSignatures'] = tx['_sigs'].some(sigs => sigs.some(sig => this.sigIsInteresting(sig)));
|
tx['_interestingSignatures'] = tx['_sigs'].some(sigs => sigs.some(sig => this.sigIsInteresting(sig)))
|
||||||
|
|| tx['_sigs'].every(sigs => !sigs?.length);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tx['_showSignatures'] = this.shouldShowSignatures(tx);
|
tx['_showSignatures'] = this.shouldShowSignatures(tx);
|
||||||
}
|
}
|
||||||
|
@@ -335,7 +335,7 @@ export class StateService {
|
|||||||
this.blocksSubject$.next([]);
|
this.blocksSubject$.next([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.signaturesMode$ = new BehaviorSubject<SignaturesMode>(this.storageService.getValue('signatures-enabled') as SignaturesMode || null);
|
this.signaturesMode$ = new BehaviorSubject<SignaturesMode>(this.storageService.getValue('signatures-mode') as SignaturesMode || null);
|
||||||
|
|
||||||
this.blockVSize = this.env.BLOCK_WEIGHT_UNITS / 4;
|
this.blockVSize = this.env.BLOCK_WEIGHT_UNITS / 4;
|
||||||
|
|
||||||
|
@@ -235,7 +235,7 @@ export function processInputSignatures(vin: Vin): SigInfo[] {
|
|||||||
signatures = extractDERSignaturesWitness(vin.witness || []);
|
signatures = extractDERSignaturesWitness(vin.witness || []);
|
||||||
break;
|
break;
|
||||||
case 'v1_p2tr': {
|
case 'v1_p2tr': {
|
||||||
const hasAnnex = vin.witness[vin.witness.length - 1].startsWith('50');
|
const hasAnnex = vin.witness.length > 1 &&vin.witness[vin.witness.length - 1].startsWith('50');
|
||||||
const isKeyspend = vin.witness.length === (hasAnnex ? 2 : 1);
|
const isKeyspend = vin.witness.length === (hasAnnex ? 2 : 1);
|
||||||
if (isKeyspend) {
|
if (isKeyspend) {
|
||||||
signatures = extractSchnorrSignatures(vin.witness);
|
signatures = extractSchnorrSignatures(vin.witness);
|
||||||
|
Reference in New Issue
Block a user