CPFP support (#395)

* CPFP support.

fixes #5
fixes #353
fixes #360

* Use effectiveFeePerVsize for mempool statistics.

* Renaming endpoint cpfp-info to just cpfp.

* Renaming decended to BestDescendant.

* Updating language file with new strings.
This commit is contained in:
softsimon
2021-03-18 23:47:40 +07:00
committed by GitHub
parent f633adef84
commit 58402c008f
19 changed files with 487 additions and 289 deletions

View File

@@ -40,6 +40,10 @@
<td class="nowrap"><a href="{{ network.val === '' ? '' : '/' + network.val }}/api/v1/fees/mempool-blocks" target="_blank">GET {{ network.val === '' ? '' : '/' + network.val }}/api/v1/fees/mempool-blocks</a></td>
<td i18n="api-docs.fees.mempool-blocks|API Docs for /api/v1/fees/mempool-blocks">Returns current mempool as projected blocks.</td>
</tr>
<tr>
<td class="nowrap"><a href="{{ network.val === '' ? '' : '/' + network.val }}/api/v1/cpfp/TXID" target="_blank">GET {{ network.val === '' ? '' : '/' + network.val }}/api/v1/cpfp/:txid</a></td>
<td i18n="api-docs.fees.cpfp|API Docs for /api/v1/fees/cpfp">Returns the ancestors and the best descendant fees for a transaction.</td>
</tr>
</table>
</ng-template>

View File

@@ -73,22 +73,7 @@
</table>
</div>
<div class="col-sm">
<table class="table table-borderless table-striped">
<tbody>
<tr>
<td class="td-width" i18n="transaction.fee|Transaction fee">Fee</td>
<td>{{ tx.fee | number }} <span i18n="transaction.fee.sat|Transaction Fee sat">sat</span> (<app-fiat [value]="tx.fee"></app-fiat>)</td>
</tr>
<tr>
<td i18n="transaction.fee-per-vbyte|Transaction fee">Fee per vByte</td>
<td>
{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} <span i18n="shared.sat-vbyte|sat/vB">sat/vB</span>
&nbsp;
<app-tx-fee-rating *ngIf="tx.fee" [tx]="tx"></app-tx-fee-rating>
</td>
</tr>
</tbody>
</table>
<ng-container *ngTemplateOutlet="feeTable"></ng-container>
</div>
</div>
@@ -146,18 +131,7 @@
</table>
</div>
<div class="col-sm">
<table class="table table-borderless table-striped">
<tbody>
<tr>
<td class="td-width" i18n="transaction.fee|Transaction Fee">Fee</td>
<td>{{ tx.fee | number }} <span i18n="transaction.fee.sat|Transaction Fee sat">sat</span> (<app-fiat [value]="tx.fee"></app-fiat>)</td>
</tr>
<tr>
<td i18n="transaction.fee-per-vbyte|Transaction fee">Fee per vByte</td>
<td>{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} <span i18n="shared.sat-vbyte|sat/vB">sat/vB</span></td>
</tr>
</tbody>
</table>
<ng-container *ngTemplateOutlet="feeTable"></ng-container>
</div>
</div>
</div>
@@ -295,4 +269,36 @@
<ng-template let-i #nextBlockEta i18n="mempool-blocks.eta-of-next-block|Block Frequency">In ~{{ i }} minute</ng-template>
<ng-template #blocksSingular let-i i18n="shared.block">{{ i }} block</ng-template>
<ng-template #blocksPlural let-i i18n="shared.blocks">{{ i }} blocks</ng-template>
<ng-template #blocksPlural let-i i18n="shared.blocks">{{ i }} blocks</ng-template>
<ng-template #feeTable>
<table class="table table-borderless table-striped">
<tbody>
<tr>
<td class="td-width" i18n="transaction.fee|Transaction fee">Fee</td>
<td>{{ tx.fee | number }} <span i18n="transaction.fee.sat|Transaction Fee sat">sat</span> (<app-fiat [value]="tx.fee"></app-fiat>)</td>
</tr>
<tr>
<td i18n="transaction.fee-per-vbyte|Transaction fee">Fee per vByte</td>
<td>
{{ tx.fee / (tx.weight / 4) | number : '1.1-1' }} <span i18n="shared.sat-vbyte|sat/vB">sat/vB</span>
<ng-template [ngIf]="tx.status.confirmed">
&nbsp;
<app-tx-fee-rating *ngIf="tx.fee && (!tx.effectiveFeePerVsize || tx.effectiveFeePerVsize === tx.fee / (tx.weight / 4))" [tx]="tx"></app-tx-fee-rating>
</ng-template>
</td>
</tr>
<tr *ngIf="tx.effectiveFeePerVsize && tx.effectiveFeePerVsize !== tx.fee / (tx.weight / 4)">
<td i18n="transaction.effective-fee|Effective transaction fee">Effective fee</td>
<td>
{{ tx.effectiveFeePerVsize | number : '1.1-1' }} <span i18n="shared.sat-vbyte|sat/vB">sat/vB</span>
<ng-template [ngIf]="tx.status.confirmed">
&nbsp;
<app-tx-fee-rating *ngIf="tx.fee" [tx]="tx"></app-tx-fee-rating>
</ng-template>
</td>
</tr>
</tbody>
</table>
</ng-template>

View File

@@ -91,10 +91,28 @@ export class TransactionComponent implements OnInit, OnDestroy {
this.getTransactionTime();
}
}
if (this.tx.status.confirmed) {
this.stateService.markBlock$.next({ blockHeight: tx.status.block_height });
} else {
this.stateService.markBlock$.next({ txFeePerVSize: tx.fee / (tx.weight / 4) });
if (tx.effectiveFeePerVsize) {
this.stateService.markBlock$.next({ txFeePerVSize: tx.effectiveFeePerVsize });
} else {
this.apiService.getCpfpinfo$(this.tx.txid)
.subscribe((cpfpInfo) => {
let totalWeight = tx.weight + cpfpInfo.ancestors.reduce((prev, val) => prev + val.weight, 0);
let totalFees = tx.fee + cpfpInfo.ancestors.reduce((prev, val) => prev + val.fee, 0);
if (cpfpInfo.bestDescendant) {
totalWeight += cpfpInfo.bestDescendant.weight;
totalFees += cpfpInfo.bestDescendant.fee;
}
const effectiveFeePerVsize = totalFees / (totalWeight / 4);
this.tx.effectiveFeePerVsize = effectiveFeePerVsize;
this.stateService.markBlock$.next({ txFeePerVSize: effectiveFeePerVsize });
});
}
}
},
(error) => {
@@ -139,7 +157,7 @@ export class TransactionComponent implements OnInit, OnDestroy {
return;
}
const txFeePerVSize = this.tx.fee / (this.tx.weight / 4);
const txFeePerVSize = this.tx.effectiveFeePerVsize || this.tx.fee / (this.tx.weight / 4);
for (const block of mempoolBlocks) {
for (let i = 0; i < block.feeRange.length - 1; i++) {

View File

@@ -52,7 +52,7 @@ export class TxFeeRatingComponent implements OnInit, OnChanges, OnDestroy {
}
calculateRatings(block: Block) {
const feePervByte = this.tx.fee / (this.tx.weight / 4);
const feePervByte = this.tx.effectiveFeePerVsize || this.tx.fee / (this.tx.weight / 4);
this.medianFeeNeeded = block.medianFee;
// Block not filled

View File

@@ -11,6 +11,7 @@ export interface Transaction {
// Custom properties
firstSeen?: number;
effectiveFeePerVsize?: number;
}
export interface Recent {

View File

@@ -8,3 +8,20 @@ export interface OptimizedMempoolStats {
mempool_byte_weight: number;
vsizes: number[] | string[];
}
interface Ancestor {
txid: string;
weight: number;
fee: number;
}
interface BestDescendant {
txid: string;
weight: number;
fee: number;
}
export interface CpfpInfo {
ancestors: Ancestor[];
bestDescendant: BestDescendant | null;
}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { OptimizedMempoolStats } from '../interfaces/node-api.interface';
import { CpfpInfo, OptimizedMempoolStats } from '../interfaces/node-api.interface';
import { Observable } from 'rxjs';
import { StateService } from './state.service';
import { WebsocketResponse } from '../interfaces/websocket.interface';
@@ -88,4 +88,8 @@ export class ApiService {
getInitData$(): Observable<WebsocketResponse> {
return this.httpClient.get<WebsocketResponse>(this.apiBaseUrl + this.apiBasePath + '/api/v1/init-data');
}
getCpfpinfo$(txid: string): Observable<CpfpInfo> {
return this.httpClient.get<CpfpInfo>(this.apiBaseUrl + this.apiBasePath + '/api/v1/cpfp/' + txid);
}
}

View File

@@ -97,7 +97,7 @@
<source>Inputs &amp; Outputs</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">168</context>
<context context-type="linenumber">142</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
@@ -114,7 +114,7 @@
<source>Details</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">170</context>
<context context-type="linenumber">144</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -123,11 +123,11 @@
<source>Details</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">176</context>
<context context-type="linenumber">150</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">252</context>
<context context-type="linenumber">226</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
@@ -143,7 +143,7 @@
<source>Size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">181</context>
<context context-type="linenumber">155</context>
</context-group>
<note priority="1" from="description">Transaction Size</note>
<note priority="1" from="meaning">transaction.size</note>
@@ -152,7 +152,7 @@
<source>Virtual size</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">159</context>
</context-group>
<note priority="1" from="description">Transaction Virtual Size</note>
<note priority="1" from="meaning">transaction.vsize</note>
@@ -161,7 +161,7 @@
<source>Weight</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">189</context>
<context context-type="linenumber">163</context>
</context-group>
<note priority="1" from="description">Transaction Weight</note>
<note priority="1" from="meaning">transaction.weight</note>
@@ -187,15 +187,156 @@
<note priority="1" from="description">Transaction Timestamp</note>
<note priority="1" from="meaning">transaction.timestamp</note>
</trans-unit>
<trans-unit id="0d6ed649666c5cdcf12be0216d82051bba3614b0" datatype="html">
<source>Included in block</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">55</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Transaction included in block</note>
<note priority="1" from="meaning">transaction.included-in-block</note>
</trans-unit>
<trans-unit id="bfa87f9724434e4245b30f2bdd11d97477048cd1" datatype="html">
<source>Confirmed</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<note priority="1" from="description">Transaction Confirmed state</note>
<note priority="1" from="meaning">transaction.confirmed</note>
</trans-unit>
<trans-unit id="7917764f923dd6b723b1cff254c7f5b837d1c48a" datatype="html">
<source>After <x id="START_TAG_APP_TIMESPAN" ctype="x-app_timespan" equiv-text="&lt;app-timespan [time]=&quot;tx.status.block_time - transactionTime&quot;&gt;"/><x id="CLOSE_TAG_APP_TIMESPAN" ctype="x-app_timespan" equiv-text="&lt;/app-timespan&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Transaction confirmed after</note>
<note priority="1" from="meaning">transaction.confirmed.after</note>
</trans-unit>
<trans-unit id="885666551418fd59011ceb09d5c481095940193b" datatype="html">
<source>Features</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">67</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">125</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Transaction features</note>
<note priority="1" from="meaning">transaction.features</note>
</trans-unit>
<trans-unit id="4e738ef3d2b4878f17f43002204f7b31aabb8e87" datatype="html">
<source>ETA</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">104</context>
</context-group>
<note priority="1" from="description">Transaction ETA</note>
<note priority="1" from="meaning">transaction.eta</note>
</trans-unit>
<trans-unit id="1bc4a5de56ea48a832e32294c124009867b478d0" datatype="html">
<source>First seen</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">98</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
</trans-unit>
<trans-unit id="f9bad781ea9c5192160516ca55ddc5edc307ef07" datatype="html">
<source>In several hours (or more)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">111</context>
</context-group>
<note priority="1" from="description">Transaction ETA in several hours or more</note>
<note priority="1" from="meaning">transaction.eta.in-several-hours</note>
</trans-unit>
<trans-unit id="c9d9612bcd520103486b5fc84d84c9476a1b7f78" datatype="html">
<source>Transaction not found.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">251</context>
</context-group>
<note priority="1" from="description">transaction.error.transaction-not-found</note>
</trans-unit>
<trans-unit id="66b65556acb90d8764fe166a260af0309671698c" datatype="html">
<source>Waiting for it to appear in the mempool...</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">252</context>
</context-group>
<note priority="1" from="description">transaction.error.waiting-for-it-to-appear</note>
</trans-unit>
<trans-unit id="02c35681bc187cde4d0d3a98a3a1f2035dfe7398" datatype="html">
<source>In ~<x id="INTERPOLATION" equiv-text="{{ i }}"/> minutes</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">267</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">41</context>
</context-group>
<note priority="1" from="description">Block Frequency (plural)</note>
<note priority="1" from="meaning">mempool-blocks.eta-of-next-block-plural</note>
</trans-unit>
<trans-unit id="e8b52d333f9395e1ae9c541d45dfb8c1cd017424" datatype="html">
<source>In ~<x id="INTERPOLATION" equiv-text="{{ i }}"/> minute</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">269</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<note priority="1" from="description">Block Frequency</note>
<note priority="1" from="meaning">mempool-blocks.eta-of-next-block</note>
</trans-unit>
<trans-unit id="3aef75db6f65e1371d54d8bed1767299de9457d8" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> block</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">271</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">22</context>
</context-group>
<note priority="1" from="description">shared.block</note>
</trans-unit>
<trans-unit id="588930712875bfa0834655249093d99eaa3d162e" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> blocks</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">272</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
<note priority="1" from="description">shared.blocks</note>
</trans-unit>
<trans-unit id="cb1b52c13b95fa29ea4044f2bbe0ac623b890c80" datatype="html">
<source>Fee</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">79</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">152</context>
<context context-type="linenumber">278</context>
</context-group>
<note priority="1" from="description">Transaction fee</note>
<note priority="1" from="meaning">transaction.fee</note>
@@ -204,11 +345,7 @@
<source>sat</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">80</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">279</context>
</context-group>
<note priority="1" from="description">Transaction Fee sat</note>
<note priority="1" from="meaning">transaction.fee.sat</note>
@@ -217,11 +354,7 @@
<source>Fee per vByte</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">83</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">156</context>
<context context-type="linenumber">282</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
@@ -234,11 +367,11 @@
<source>sat/vB</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">284</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">157</context>
<context context-type="linenumber">294</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transactions-list/transactions-list.component.html</context>
@@ -295,150 +428,14 @@
<note priority="1" from="description">sat/vB</note>
<note priority="1" from="meaning">shared.sat-vbyte</note>
</trans-unit>
<trans-unit id="0d6ed649666c5cdcf12be0216d82051bba3614b0" datatype="html">
<source>Included in block</source>
<trans-unit id="9f34e3c1751028c9bc6564547d07c927d7088fca" datatype="html">
<source>Effective fee</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">292</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
<context context-type="linenumber">36</context>
</context-group>
<note priority="1" from="description">Transaction included in block</note>
<note priority="1" from="meaning">transaction.included-in-block</note>
</trans-unit>
<trans-unit id="bfa87f9724434e4245b30f2bdd11d97477048cd1" datatype="html">
<source>Confirmed</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<note priority="1" from="description">Transaction Confirmed state</note>
<note priority="1" from="meaning">transaction.confirmed</note>
</trans-unit>
<trans-unit id="7917764f923dd6b723b1cff254c7f5b837d1c48a" datatype="html">
<source>After <x id="START_TAG_APP_TIMESPAN" ctype="x-app_timespan" equiv-text="&lt;app-timespan [time]=&quot;tx.status.block_time - transactionTime&quot;&gt;"/><x id="CLOSE_TAG_APP_TIMESPAN" ctype="x-app_timespan" equiv-text="&lt;/app-timespan&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">Transaction confirmed after</note>
<note priority="1" from="meaning">transaction.confirmed.after</note>
</trans-unit>
<trans-unit id="885666551418fd59011ceb09d5c481095940193b" datatype="html">
<source>Features</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">67</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">140</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
<context context-type="linenumber">42</context>
</context-group>
<note priority="1" from="description">Transaction features</note>
<note priority="1" from="meaning">transaction.features</note>
</trans-unit>
<trans-unit id="4e738ef3d2b4878f17f43002204f7b31aabb8e87" datatype="html">
<source>ETA</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">119</context>
</context-group>
<note priority="1" from="description">Transaction ETA</note>
<note priority="1" from="meaning">transaction.eta</note>
</trans-unit>
<trans-unit id="1bc4a5de56ea48a832e32294c124009867b478d0" datatype="html">
<source>First seen</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">113</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
</trans-unit>
<trans-unit id="f9bad781ea9c5192160516ca55ddc5edc307ef07" datatype="html">
<source>In several hours (or more)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">126</context>
</context-group>
<note priority="1" from="description">Transaction ETA in several hours or more</note>
<note priority="1" from="meaning">transaction.eta.in-several-hours</note>
</trans-unit>
<trans-unit id="c9d9612bcd520103486b5fc84d84c9476a1b7f78" datatype="html">
<source>Transaction not found.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">277</context>
</context-group>
<note priority="1" from="description">transaction.error.transaction-not-found</note>
</trans-unit>
<trans-unit id="66b65556acb90d8764fe166a260af0309671698c" datatype="html">
<source>Waiting for it to appear in the mempool...</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">278</context>
</context-group>
<note priority="1" from="description">transaction.error.waiting-for-it-to-appear</note>
</trans-unit>
<trans-unit id="02c35681bc187cde4d0d3a98a3a1f2035dfe7398" datatype="html">
<source>In ~<x id="INTERPOLATION" equiv-text="{{ i }}"/> minutes</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">293</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">41</context>
</context-group>
<note priority="1" from="description">Block Frequency (plural)</note>
<note priority="1" from="meaning">mempool-blocks.eta-of-next-block-plural</note>
</trans-unit>
<trans-unit id="e8b52d333f9395e1ae9c541d45dfb8c1cd017424" datatype="html">
<source>In ~<x id="INTERPOLATION" equiv-text="{{ i }}"/> minute</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">295</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">43</context>
</context-group>
<note priority="1" from="description">Block Frequency</note>
<note priority="1" from="meaning">mempool-blocks.eta-of-next-block</note>
</trans-unit>
<trans-unit id="3aef75db6f65e1371d54d8bed1767299de9457d8" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> block</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">297</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">22</context>
</context-group>
<note priority="1" from="description">shared.block</note>
</trans-unit>
<trans-unit id="588930712875bfa0834655249093d99eaa3d162e" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> blocks</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-blocks/mempool-blocks.component.html</context>
<context context-type="linenumber">30</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">23</context>
</context-group>
<note priority="1" from="description">shared.blocks</note>
<note priority="1" from="description">Effective transaction fee</note>
<note priority="1" from="meaning">transaction.effective-fee</note>
</trans-unit>
<trans-unit id="7e06b8dd9f29261827018351cd71efe1c87839de" datatype="html">
<source>Coinbase</source>
@@ -929,7 +926,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">75</context>
<context context-type="linenumber">79</context>
</context-group>
</trans-unit>
<trans-unit id="8a7b4bd44c0ac71b2e72de0398b303257f7d2f54" datatype="html">
@@ -1060,7 +1057,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">38</context>
<context context-type="linenumber">40</context>
</context-group>
<note priority="1" from="description">master-page.about</note>
</trans-unit>
@@ -1199,15 +1196,23 @@
<source>Community Alliances</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">255</context>
<context context-type="linenumber">276</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
<trans-unit id="2dd9b8a8997a6b57413ca3cd32dd38cef9fa39c2" datatype="html">
<source>Project Contributors</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">292</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
<trans-unit id="d177262e3a43b2a7221183812daf0ada97659436" datatype="html">
<source>Project Maintainers</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">271</context>
<context context-type="linenumber">310</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1215,7 +1220,7 @@
<source>Terms of Service</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">295</context>
<context context-type="linenumber">357</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
@@ -1223,7 +1228,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">284</context>
<context context-type="linenumber">288</context>
</context-group>
<note priority="1" from="description">Terms of Service</note>
<note priority="1" from="meaning">shared.terms-of-service</note>
@@ -1847,27 +1852,27 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">54</context>
<context context-type="linenumber">58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">80</context>
<context context-type="linenumber">84</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">134</context>
<context context-type="linenumber">138</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">188</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">218</context>
<context context-type="linenumber">222</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">243</context>
<context context-type="linenumber">247</context>
</context-group>
<note priority="1" from="description">API Docs Endpoint</note>
<note priority="1" from="meaning">api-docs.shared.endpoint</note>
@@ -1884,27 +1889,27 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">55</context>
<context context-type="linenumber">59</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">81</context>
<context context-type="linenumber">85</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">135</context>
<context context-type="linenumber">139</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">185</context>
<context context-type="linenumber">189</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">219</context>
<context context-type="linenumber">223</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">244</context>
<context context-type="linenumber">248</context>
</context-group>
<note priority="1" from="description">API Docs Description</note>
<note priority="1" from="meaning">api-docs.shared.description</note>
@@ -1944,11 +1949,20 @@
<note priority="1" from="description">API Docs for /api/v1/fees/mempool-blocks</note>
<note priority="1" from="meaning">api-docs.fees.mempool-blocks</note>
</trans-unit>
<trans-unit id="4ebf8d4a2433cca5a8a933ef8ccef1b01e45acef" datatype="html">
<source>Returns the ancestors and the best descendant fees for a transaction.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">45</context>
</context-group>
<note priority="1" from="description">API Docs for /api/v1/fees/cpfp</note>
<note priority="1" from="meaning">api-docs.fees.cpfp</note>
</trans-unit>
<trans-unit id="19a8d63607ead7ba08364fe9f64aa3c503dff6c4" datatype="html">
<source>Mempool</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">49</context>
<context context-type="linenumber">53</context>
</context-group>
<note priority="1" from="description">API Docs tab for Mempool</note>
<note priority="1" from="meaning">api-docs.tab.mempool</note>
@@ -1957,7 +1971,7 @@
<source>Returns current mempool backlog statistics.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">59</context>
<context context-type="linenumber">63</context>
</context-group>
<note priority="1" from="description">API Docs for /api/mempool</note>
<note priority="1" from="meaning">api-docs.mempool.mempool</note>
@@ -1966,7 +1980,7 @@
<source>Get the full list of txids in the mempool as an array. The order of the txids is arbitrary and does not match bitcoind.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">63</context>
<context context-type="linenumber">67</context>
</context-group>
<note priority="1" from="description">API Docs for /api/mempool/txids</note>
<note priority="1" from="meaning">api-docs.mempool.txids</note>
@@ -1975,7 +1989,7 @@
<source>Get a list of the last 10 transactions to enter the mempool. Each transaction object contains simplified overview data, with the following fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>fee<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>vsize<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>value<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">71</context>
</context-group>
<note priority="1" from="description">API Docs for /api/mempool/recent</note>
<note priority="1" from="meaning">api-docs.mempool.recent</note>
@@ -1984,77 +1998,77 @@
<source>Returns the confirmation status of a block. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>in_best_chain<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (boolean, false for orphaned blocks), <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>next_best<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (the hash of the next block, only available for blocks in the best chain).</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">89</context>
<context context-type="linenumber">93</context>
</context-group>
</trans-unit>
<trans-unit id="1126cb2e03d0371d03b57047052d4ff1b6556753" datatype="html">
<source>Returns a list of transactions in the block (up to 25 transactions beginning at <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>start_index<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/>). Transactions returned here do not have the <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>status<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> field, since all the transactions share the same block and confirmation status.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">93</context>
<context context-type="linenumber">97</context>
</context-group>
</trans-unit>
<trans-unit id="3846f2527c3c9a50bb84b2c941a876f66797449b" datatype="html">
<source>Returns a list of all txids in the block.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">97</context>
<context context-type="linenumber">101</context>
</context-group>
</trans-unit>
<trans-unit id="3e08815110b2e5ce8aa7256ed05a2faf6dbb7077" datatype="html">
<source>Returns the transaction at index <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>:index<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> within the specified block.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">101</context>
<context context-type="linenumber">105</context>
</context-group>
</trans-unit>
<trans-unit id="6d5aacdd7e6c375570a88c25bfd0be82beba4c7b" datatype="html">
<source>Returns the raw block representation in binary.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">105</context>
<context context-type="linenumber">109</context>
</context-group>
</trans-unit>
<trans-unit id="36df9865e9099d98537ea69c9cfdc035d1b64116" datatype="html">
<source>Returns the hash of the block currently at <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>:height<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">109</context>
<context context-type="linenumber">113</context>
</context-group>
</trans-unit>
<trans-unit id="f8380186899495340cbfe7fb836ba664fb4b52af" datatype="html">
<source>Returns the 10 newest blocks starting at the tip or at <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>:start_height<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> if specified.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">113</context>
<context context-type="linenumber">117</context>
</context-group>
</trans-unit>
<trans-unit id="4767bdd2059533d5eed7f3fe7cf0be5c260cdb00" datatype="html">
<source>Returns the height of the last block.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">117</context>
<context context-type="linenumber">121</context>
</context-group>
</trans-unit>
<trans-unit id="940153d58769f1a8f50dba2458693142675a5dcb" datatype="html">
<source>Returns the hash of the last block.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">121</context>
<context context-type="linenumber">125</context>
</context-group>
</trans-unit>
<trans-unit id="194d480219559b855b01ea58459066e3c63acdb2" datatype="html">
<source>Returns details about a block. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>id<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>height<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>version<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>timestamp<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>bits<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>nonce<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>merkle_root<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>tx_count<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>size<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>weight<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>,<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;network.val === &apos;liquid&apos;&quot;&gt; "/><x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>proof<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>,<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container&gt; "/> and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>previousblockhash<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">85</context>
<context context-type="linenumber">89</context>
</context-group>
</trans-unit>
<trans-unit id="8a4a4b8f308aaaeae782f7c9847013348d969c2d" datatype="html">
<source>Transactions</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">129</context>
<context context-type="linenumber">133</context>
</context-group>
<note priority="1" from="description">API Docs tab for Transactions</note>
<note priority="1" from="meaning">api-docs.tab.transactions</note>
@@ -2063,70 +2077,70 @@
<source>Returns details about a transaction. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>version<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>locktime<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>size<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>weight<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>fee<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>vin<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>vout<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>status<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">139</context>
<context context-type="linenumber">143</context>
</context-group>
</trans-unit>
<trans-unit id="7e784cfa5833e7b54d4dfc723fabde94f66ebde3" datatype="html">
<source>Returns the confirmation status of a transaction. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>confirmed<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (boolean), <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>block_height<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (optional), and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>block_hash<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (optional).</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">143</context>
<context context-type="linenumber">147</context>
</context-group>
</trans-unit>
<trans-unit id="34c21c242665d87bf22645c90f571bd5078eac93" datatype="html">
<source>Returns a transaction serialized as hex.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">147</context>
<context context-type="linenumber">151</context>
</context-group>
</trans-unit>
<trans-unit id="fd42ee72bb64b93578d7d2142ae50796d0056d7a" datatype="html">
<source>Returns a transaction as binary data.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">151</context>
<context context-type="linenumber">155</context>
</context-group>
</trans-unit>
<trans-unit id="a57953199686e9980df838cb25edb51691941ac5" datatype="html">
<source>Returns a merkle inclusion proof for the transaction using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://electrumx.readthedocs.io/en/latest/protocol-methods.html#blockchain-transaction-get-merkle&quot;&gt;"/>Electrum&apos;s blockchain.transaction.get_merkle format.<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">159</context>
<context context-type="linenumber">163</context>
</context-group>
</trans-unit>
<trans-unit id="fe9a40b2ff9674b4ab7d82624ffed340c9ee5b89" datatype="html">
<source>Returns the spending status of a transaction output. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>spent<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (boolean), <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (optional), <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>vin<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (optional), and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>status<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (optional, the status of the spending tx).</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">163</context>
<context context-type="linenumber">167</context>
</context-group>
</trans-unit>
<trans-unit id="0358265aa88614843e1f5e887b94c673808c84f1" datatype="html">
<source>Returns the spending status of all transaction outputs.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">167</context>
<context context-type="linenumber">171</context>
</context-group>
</trans-unit>
<trans-unit id="01723473ecc53cab60ef1b37dc39d8941994d56f" datatype="html">
<source>Broadcast a raw transaction to the network. The transaction should be provided as hex in the request body. The <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> will be returned on success.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">171</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="d51106cc898981e9862d35a4db40796f0cf464f8" datatype="html">
<source>Returns a merkle inclusion proof for the transaction using <x id="START_LINK" ctype="x-a" equiv-text="&lt;a href=&quot;https://bitcoin.org/en/glossary/merkle-block&quot;&gt;"/>bitcoind&apos;s merkleblock<x id="CLOSE_LINK" ctype="x-a" equiv-text="&lt;/a&gt; "/> format.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">155</context>
<context context-type="linenumber">159</context>
</context-group>
</trans-unit>
<trans-unit id="9885457131a86be85a59c5366767e82c12d0a288" datatype="html">
<source>Addresses</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">179</context>
<context context-type="linenumber">183</context>
</context-group>
<note priority="1" from="description">API Docs tab for Addresses</note>
<note priority="1" from="meaning">api-docs.tab.addresses</note>
@@ -2135,42 +2149,42 @@
<source>Returns details about an address. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>address<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>chain_stats<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>mempool_stats<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>. <x id="INTERPOLATION" equiv-text="{{ &apos;{&apos; }}"/>chain,mempool<x id="INTERPOLATION_1" equiv-text="{{ &apos;}&apos; }}"/>_stats each contain an object with <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>tx_count<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>funded_txo_count<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>funded_txo_sum<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>spent_txo_count<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>spent_txo_sum<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">189</context>
<context context-type="linenumber">193</context>
</context-group>
</trans-unit>
<trans-unit id="bdc501d28e02e07f692859977fdaee8c52eea401" datatype="html">
<source>Get transaction history for the specified address/scripthash, sorted with newest first. Returns up to 50 mempool transactions plus the first 25 confirmed transactions. You can request more confirmed transactions using <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>:last_seen_txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt; "/> (see below). </source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">193,194</context>
<context context-type="linenumber">197,198</context>
</context-group>
</trans-unit>
<trans-unit id="5676910aa3ffb568079a7499b366744fe3fd87ea" datatype="html">
<source>Get confirmed transaction history for the specified address/scripthash, sorted with newest first. Returns 25 transactions per page. More can be requested by specifying the last txid seen by the previous query.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">197</context>
<context context-type="linenumber">201</context>
</context-group>
</trans-unit>
<trans-unit id="f10009779c64e19e20414fae506f27118420aa33" datatype="html">
<source>Get unconfirmed transaction history for the specified address/scripthash. Returns up to 50 transactions (no paging).</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">201</context>
<context context-type="linenumber">205</context>
</context-group>
</trans-unit>
<trans-unit id="4eb50557085c85bfca995b6ee0de56ec3f5e97eb" datatype="html">
<source>Get the list of unspent transaction outputs associated with the address/scripthash. Available fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>txid<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>vout<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>value<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>status<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/> (with the status of the funding tx).<x id="START_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;ng-container *ngIf=&quot;network.val === &apos;liquid&apos;&quot;&gt;"/>There is also a <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>valuecommitment<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/> field that may appear in place of <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>value<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, plus the following additional fields: <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>asset<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>/<x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>assetcommitment<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>nonce<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>/<x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>noncecommitment<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>surjection_proof<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>, and <x id="START_TAG_CODE" ctype="x-code" equiv-text="&lt;code&gt;"/>range_proof<x id="CLOSE_TAG_CODE" ctype="x-code" equiv-text="&lt;/code&gt;"/>.<x id="CLOSE_TAG_NG_CONTAINER" ctype="x-ng_container" equiv-text="&lt;/ng-container&gt;"/></source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">205</context>
<context context-type="linenumber">209</context>
</context-group>
</trans-unit>
<trans-unit id="b861fd11d5aa8772acc40c5412621b6dd52378e8" datatype="html">
<source>Assets</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">217</context>
</context-group>
<note priority="1" from="description">API Docs tab for Assets</note>
<note priority="1" from="meaning">api-docs.tab.assets</note>
@@ -2179,28 +2193,28 @@
<source>Returns information about a Liquid asset.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">223</context>
<context context-type="linenumber">227</context>
</context-group>
</trans-unit>
<trans-unit id="4a0bf20cf26a4f4a387bed5c3d47c23294cb606e" datatype="html">
<source>Returns transactions associated with the specified Liquid asset. For the network&apos;s native asset, returns a list of peg in, peg out, and burn transactions. For user-issued assets, returns a list of issuance, reissuance, and burn transactions. Does not include regular transactions transferring this asset.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">227</context>
<context context-type="linenumber">231</context>
</context-group>
</trans-unit>
<trans-unit id="44a238eb28145f904f3a5bbfd4050987668f78d0" datatype="html">
<source>Get the current total supply of the specified asset. For the native asset (L-BTC), this is calculated as [chain,mempool]_stats.peg_in_amount - [chain,mempool]_stats.peg_out_amount - [chain,mempool]_stats.burned_amount. For issued assets, this is calculated as [chain,mempool]_stats.issued_amount - [chain,mempool]_stats.burned_amount. Not available for assets with blinded issuances. If /decimal is specified, returns the supply as a decimal according to the asset&apos;s divisibility. Otherwise, returned in base units.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">231</context>
<context context-type="linenumber">235</context>
</context-group>
</trans-unit>
<trans-unit id="a29245620333b4788dee4c478c327d99846513c6" datatype="html">
<source>BSQ</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">238</context>
<context context-type="linenumber">242</context>
</context-group>
<note priority="1" from="description">API Docs tab for BSQ</note>
<note priority="1" from="meaning">api-docs.tab.bsq</note>
@@ -2209,49 +2223,49 @@
<source>Returns statistics about all Bisq transactions.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">248</context>
<context context-type="linenumber">252</context>
</context-group>
</trans-unit>
<trans-unit id="5d67fbdf2986058351024c16d526c444475ead37" datatype="html">
<source>Returns details about a Bisq transaction.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">252</context>
<context context-type="linenumber">256</context>
</context-group>
</trans-unit>
<trans-unit id="e9a58657c410cf65dba4c3cdfb1af7099dedb241" datatype="html">
<source>Returns :length of latest Bisq transactions, starting from :index.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">256</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="e7e7c97535181ba299bc0ad02904f851088a0dd5" datatype="html">
<source>Returns all Bisq transactions that exist in a Bitcoin block.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">260</context>
<context context-type="linenumber">264</context>
</context-group>
</trans-unit>
<trans-unit id="6fdafaace68cb298c6281e89eedc704f3d8f3f6a" datatype="html">
<source>Returns :length Bitcoin blocks that contain Bisq transactions, starting from :index.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">264</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="ac234ff46c8f499399a20fb5d74005094de7cdcd" datatype="html">
<source>Returns the most recently processed Bitcoin block height processed by Bisq.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">268</context>
<context context-type="linenumber">272</context>
</context-group>
</trans-unit>
<trans-unit id="9604b870a64e6635062828425fcb801371e716ad" datatype="html">
<source>Returns all Bisq transactions belonging to a Bitcoin address, with &apos;B&apos; prefixed in front of the address.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/api-docs/api-docs.component.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="clipboard.copied-message" datatype="html">