2020-03-05 16:13:46 +07:00
|
|
|
<div class="container-xl">
|
2020-02-16 22:15:07 +07:00
|
|
|
|
2020-02-19 23:50:23 +07:00
|
|
|
<div class="title-block">
|
2020-06-08 18:55:53 +07:00
|
|
|
<div *ngIf="rbfTransaction" class="alert alert-mempool" role="alert">
|
|
|
|
This transaction has been replaced by:
|
|
|
|
<a class="alert-link" [routerLink]="['/tx/' | relativeUrl, rbfTransaction.txid]" [state]="{ data: rbfTransaction }">
|
|
|
|
<span class="d-inline d-lg-none">{{ rbfTransaction.txid | shortenString : 24 }}</span>
|
|
|
|
<span class="d-none d-lg-inline">{{ rbfTransaction.txid }}</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
|
2020-03-25 02:55:26 +07:00
|
|
|
<h1 class="float-left mr-3 mb-md-3">Transaction</h1>
|
2020-03-10 14:46:12 +07:00
|
|
|
|
|
|
|
<ng-template [ngIf]="tx?.status?.confirmed">
|
2020-03-25 02:55:26 +07:00
|
|
|
<button *ngIf="latestBlock" type="button" class="btn btn-sm btn-success float-right mr-2 mt-1 mt-md-3">{{ latestBlock.height - tx.status.block_height + 1 }} confirmation<ng-container *ngIf="latestBlock.height - tx.status.block_height + 1 > 1">s</ng-container></button>
|
2020-02-23 05:23:24 +07:00
|
|
|
</ng-template>
|
2020-03-10 14:46:12 +07:00
|
|
|
<ng-template [ngIf]="tx && !tx?.status.confirmed">
|
2020-03-25 02:55:26 +07:00
|
|
|
<button type="button" class="btn btn-sm btn-danger float-right mr-2 mt-1 mt-md-3">Unconfirmed</button>
|
2020-02-23 05:23:24 +07:00
|
|
|
</ng-template>
|
2020-03-10 14:46:12 +07:00
|
|
|
|
|
|
|
<div>
|
2020-05-09 20:37:50 +07:00
|
|
|
<a [routerLink]="['/tx/' | relativeUrl, txId]" style="line-height: 56px;">
|
2020-03-10 14:46:12 +07:00
|
|
|
<span class="d-inline d-lg-none">{{ txId | shortenString : 24 }}</span>
|
|
|
|
<span class="d-none d-lg-inline">{{ txId }}</span>
|
|
|
|
</a>
|
|
|
|
<app-clipboard [text]="txId"></app-clipboard>
|
|
|
|
</div>
|
2020-03-23 04:07:31 +07:00
|
|
|
<div class="clearfix"></div>
|
2020-02-19 23:50:23 +07:00
|
|
|
</div>
|
2020-03-25 02:55:26 +07:00
|
|
|
<div class="clearfix"></div>
|
2020-02-16 22:15:07 +07:00
|
|
|
|
|
|
|
<ng-template [ngIf]="!isLoadingTx && !error">
|
|
|
|
|
|
|
|
<ng-template [ngIf]="tx.status.confirmed" [ngIfElse]="unconfirmedTemplate">
|
|
|
|
|
|
|
|
<div class="box">
|
2020-03-23 04:07:31 +07:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td class="td-width">Included in block</td>
|
|
|
|
<td>
|
2020-05-09 20:37:50 +07:00
|
|
|
<a [routerLink]="['/block/' | relativeUrl, tx.status.block_hash]" [state]="{ data: { blockHeight: tx.status.block_height } }">{{ tx.status.block_height }}</a>
|
2020-03-23 04:07:31 +07:00
|
|
|
<i> (<app-time-since [time]="tx.status.block_time" [fastRender]="true"></app-time-since> ago)</i>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
<ng-template [ngIf]="transactionTime > 0">
|
|
|
|
<tr>
|
|
|
|
<td>Confirmed</td>
|
|
|
|
<td>After <app-timespan [time]="tx.status.block_time - transactionTime"></app-timespan></td>
|
|
|
|
</tr>
|
|
|
|
</ng-template>
|
2020-07-19 14:54:42 +07:00
|
|
|
<tr *ngIf="network !== 'liquid'">
|
|
|
|
<td class="td-width">Features</td>
|
|
|
|
<td>
|
|
|
|
<app-tx-features [tx]="tx"></app-tx-features>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-03-23 04:07:31 +07:00
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
2020-07-22 13:41:50 +07:00
|
|
|
<tr>
|
|
|
|
<td class="td-width">Fee</td>
|
|
|
|
<td>{{ tx.fee | number }} sat (<app-fiat [value]="tx.fee"></app-fiat>)</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Fee per vByte</td>
|
|
|
|
<td>
|
|
|
|
{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} sat/vB
|
|
|
|
|
|
|
|
<app-tx-fee-rating *ngIf="tx.fee" [tx]="tx"></app-tx-fee-rating>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-03-23 04:07:31 +07:00
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</ng-template>
|
|
|
|
|
|
|
|
<ng-template #unconfirmedTemplate>
|
|
|
|
|
|
|
|
<div class="box">
|
2020-03-23 04:07:31 +07:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<ng-template [ngIf]="transactionTime !== 0">
|
|
|
|
<tr *ngIf="transactionTime === -1; else firstSeenTmpl">
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
<ng-template #firstSeenTmpl>
|
|
|
|
<tr>
|
|
|
|
<td>First seen</td>
|
|
|
|
<td><i><app-time-since [time]="transactionTime" [fastRender]="true"></app-time-since> ago</i></td>
|
|
|
|
</tr>
|
|
|
|
</ng-template>
|
|
|
|
</ng-template>
|
2020-02-28 01:09:07 +07:00
|
|
|
<tr>
|
2020-03-23 04:07:31 +07:00
|
|
|
<td class="td-width">ETA</td>
|
|
|
|
<td>
|
|
|
|
<ng-template [ngIf]="txInBlockIndex === undefined" [ngIfElse]="estimationTmpl">
|
|
|
|
<span class="skeleton-loader"></span>
|
|
|
|
</ng-template>
|
|
|
|
<ng-template #estimationTmpl>
|
2020-05-24 00:25:04 +07:00
|
|
|
<ng-template [ngIf]="txInBlockIndex >= 7" [ngIfElse]="belowBlockLimit">
|
|
|
|
In several hours (or more)
|
2020-03-25 21:29:40 +07:00
|
|
|
</ng-template>
|
2020-05-24 00:25:04 +07:00
|
|
|
<ng-template #belowBlockLimit>
|
|
|
|
<ng-template [ngIf]="network === 'liquid'" [ngIfElse]="timeEstimateDefault">
|
|
|
|
< {{ 1 * txInBlockIndex + 1 }} minutes <i>({{ txInBlockIndex + 1 }} block{{ txInBlockIndex > 0 ? 's' : '' }})</i>
|
|
|
|
</ng-template>
|
|
|
|
<ng-template #timeEstimateDefault>
|
|
|
|
|
|
|
|
~{{ 10 * txInBlockIndex + 10 }} minutes <i>({{ txInBlockIndex + 1 }} block{{ txInBlockIndex > 0 ? 's' : '' }})</i>
|
|
|
|
</ng-template>
|
2020-03-25 21:29:40 +07:00
|
|
|
</ng-template>
|
2020-03-23 04:07:31 +07:00
|
|
|
</ng-template>
|
|
|
|
</td>
|
2020-02-28 01:09:07 +07:00
|
|
|
</tr>
|
2020-07-19 14:54:42 +07:00
|
|
|
<tr *ngIf="network !== 'liquid'">
|
|
|
|
<td class="td-width">Features</td>
|
|
|
|
<td>
|
|
|
|
<app-tx-features [tx]="tx"></app-tx-features>
|
|
|
|
</td>
|
|
|
|
</tr>
|
2020-03-23 04:07:31 +07:00
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td class="td-width">Fee</td>
|
2020-04-11 23:23:39 +07:00
|
|
|
<td>{{ tx.fee | number }} sat (<app-fiat [value]="tx.fee"></app-fiat>)</td>
|
2020-03-23 04:07:31 +07:00
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Fee per vByte</td>
|
2020-04-11 23:23:39 +07:00
|
|
|
<td>{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} sat/vB</td>
|
2020-03-23 04:07:31 +07:00
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
|
|
|
</ng-template>
|
|
|
|
|
2020-04-13 01:26:53 +07:00
|
|
|
<br>
|
|
|
|
|
2020-02-16 22:15:07 +07:00
|
|
|
<h2>Inputs & Outputs</h2>
|
|
|
|
|
|
|
|
<app-transactions-list [transactions]="[tx]" [transactionPage]="true"></app-transactions-list>
|
|
|
|
|
|
|
|
<h2>Details</h2>
|
|
|
|
<div class="box">
|
2020-03-11 16:06:11 +07:00
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td>Size</td>
|
|
|
|
<td>{{ tx.size | bytes: 2 }}</td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td>Weight</td>
|
|
|
|
<td>{{ tx.weight | wuBytes: 2 }}</td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
2020-02-16 22:15:07 +07:00
|
|
|
|
|
|
|
</ng-template>
|
|
|
|
|
|
|
|
<ng-template [ngIf]="isLoadingTx && !error">
|
|
|
|
|
2020-03-11 16:06:11 +07:00
|
|
|
<div class="box">
|
2020-03-23 04:07:31 +07:00
|
|
|
<div class="row">
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td class="td-width"><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<div class="col-sm">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td class="td-width"><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-03-11 16:06:11 +07:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
<h2>Inputs & Outputs</h2>
|
|
|
|
|
|
|
|
<div class="box">
|
|
|
|
<div class="row">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<br>
|
|
|
|
|
|
|
|
<h2>Details</h2>
|
2020-02-16 22:15:07 +07:00
|
|
|
<div class="box">
|
|
|
|
<table class="table table-borderless table-striped">
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
<td><span class="skeleton-loader"></span></td>
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</ng-template>
|
|
|
|
|
|
|
|
<ng-template [ngIf]="error">
|
2020-04-13 01:26:53 +07:00
|
|
|
|
2020-07-16 16:18:35 +07:00
|
|
|
<div class="text-center" *ngIf="waitingForTransaction; else errorTemplate">
|
2020-04-13 01:26:53 +07:00
|
|
|
<h3>Transaction not found.</h3>
|
|
|
|
<h5>Waiting for it to appear in the mempool...</h5>
|
|
|
|
<div class="spinner-border text-light mt-2"></div>
|
2020-02-16 22:15:07 +07:00
|
|
|
</div>
|
2020-04-13 01:26:53 +07:00
|
|
|
|
|
|
|
<ng-template #errorTemplate>
|
|
|
|
<div class="text-center">
|
|
|
|
<h3>{{ error.error }}</h3>
|
|
|
|
</div>
|
|
|
|
</ng-template>
|
2020-02-16 22:15:07 +07:00
|
|
|
</ng-template>
|
2020-03-05 16:13:46 +07:00
|
|
|
|
|
|
|
</div>
|
2020-02-16 22:15:07 +07:00
|
|
|
|
|
|
|
<br>
|