From 1fc6e13bf87667a217c8f4c9bcf44a0bbb7480b4 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 13 Feb 2023 18:01:15 +0900 Subject: [PATCH 001/102] Fix node socket parsing with LND --- backend/src/api/common.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/src/api/common.ts b/backend/src/api/common.ts index 954c1a17d..9560bc0bf 100644 --- a/backend/src/api/common.ts +++ b/backend/src/api/common.ts @@ -244,7 +244,11 @@ export class Common { static findSocketNetwork(addr: string): {network: string | null, url: string} { let network: string | null = null; - let url = addr.split('://')[1]; + let url: string = addr; + + if (config.LIGHTNING.BACKEND === 'cln') { + url = addr.split('://')[1]; + } if (!url) { return { @@ -261,7 +265,7 @@ export class Common { } } else if (addr.indexOf('i2p') !== -1) { network = 'i2p'; - } else if (addr.indexOf('ipv4') !== -1) { + } else if (addr.indexOf('ipv4') !== -1 || (config.LIGHTNING.BACKEND === 'lnd' && isIP(url.split(':')[0]) === 4)) { const ipv = isIP(url.split(':')[0]); if (ipv === 4) { network = 'ipv4'; @@ -271,7 +275,7 @@ export class Common { url: addr, }; } - } else if (addr.indexOf('ipv6') !== -1) { + } else if (addr.indexOf('ipv6') !== -1 || (config.LIGHTNING.BACKEND === 'lnd' && url.indexOf(']:'))) { url = url.split('[')[1].split(']')[0]; const ipv = isIP(url); if (ipv === 6) { From 2ff930ef3e4c8ce0792e7eaaf788b9a4bd1c5cd9 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Tue, 21 Feb 2023 22:01:30 -0600 Subject: [PATCH 002/102] Ignore coinbase tx in block health calculation --- backend/src/api/audit.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/api/audit.ts b/backend/src/api/audit.ts index b6b36dbdc..5b67dc965 100644 --- a/backend/src/api/audit.ts +++ b/backend/src/api/audit.ts @@ -119,7 +119,8 @@ class Audit { } const numCensored = Object.keys(isCensored).length; - const score = matches.length > 0 ? (matches.length / (matches.length + numCensored)) : 0; + const numMatches = matches.length - 1; // adjust for coinbase tx + const score = numMatches > 0 ? (numMatches / (numMatches + numCensored)) : 0; return { censored: Object.keys(isCensored), From 51ac04f20716f7bd2269125941d33ddcfe892674 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 23 Feb 2023 18:19:47 +0900 Subject: [PATCH 003/102] Fix design for node liquidity ranking --- .../tx-bowtie-graph.component.ts | 10 +- .../lightning-dashboard.component.html | 2 +- .../top-nodes-per-capacity.component.html | 91 ++++++------- .../top-nodes-per-capacity.component.scss | 121 ++++++++---------- .../top-nodes-per-capacity.component.ts | 20 ++- .../top-nodes-per-channels.component.ts | 4 +- 6 files changed, 110 insertions(+), 138 deletions(-) diff --git a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts index cd1fc6855..49d97dd40 100644 --- a/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts +++ b/frontend/src/app/components/tx-bowtie-graph/tx-bowtie-graph.component.ts @@ -196,8 +196,8 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges { this.outputs = this.initLines('out', voutWithFee, totalValue, this.maxStrands); this.middle = { - path: `M ${(this.width / 2) - this.midWidth} ${(this.height / 2) + 0.25} L ${(this.width / 2) + this.midWidth} ${(this.height / 2) + 0.25}`, - style: `stroke-width: ${this.combinedWeight + 0.5}; stroke: ${this.gradient[1]}` + path: `M ${(this.width / 2) - this.midWidth} ${(this.height / 2) + 0.5} L ${(this.width / 2) + this.midWidth} ${(this.height / 2) + 0.5}`, + style: `stroke-width: ${this.combinedWeight + 1}; stroke: ${this.gradient[1]}` }; this.hasLine = this.inputs.reduce((line, put) => line || !put.zeroValue, false) @@ -254,7 +254,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges { const lineParams = weights.map((w, i) => { return { weight: w, - thickness: xputs[i].value === 0 ? this.zeroValueThickness : Math.min(this.combinedWeight + 0.5, Math.max(this.minWeight - 1, w) + 1), + thickness: xputs[i].value === 0 ? this.zeroValueThickness : Math.max(this.minWeight - 1, w) + 1, offset: 0, innerY: 0, outerY: 0, @@ -266,7 +266,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges { // bounds of the middle segment const innerTop = (this.height / 2) - (this.combinedWeight / 2); - const innerBottom = innerTop + this.combinedWeight + 0.5; + const innerBottom = innerTop + this.combinedWeight; // tracks the visual bottom of the endpoints of the previous line let lastOuter = 0; let lastInner = innerTop; @@ -291,7 +291,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges { // set the vertical position of the (center of the) outer side of the line line.outerY = lastOuter + (line.thickness / 2); - line.innerY = Math.min(innerBottom - (line.thickness / 2), Math.max(innerTop + (line.thickness / 2), lastInner + (line.weight / 2))); + line.innerY = Math.min(innerBottom + (line.thickness / 2), Math.max(innerTop + (line.thickness / 2), lastInner + (line.weight / 2))); // special case to center single input/outputs if (xputs.length === 1) { diff --git a/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html b/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html index c12565d6d..c00a4be58 100644 --- a/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html +++ b/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html @@ -55,7 +55,7 @@ -
+
diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss index 59151f6b2..d177a8b01 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss @@ -1,91 +1,70 @@ +.spinner-border { + height: 25px; + width: 25px; + margin-top: 13px; +} + .container-xl { max-width: 1400px; - padding-bottom: 100px; - @media (min-width: 960px) { - padding-left: 50px; - padding-right: 50px; - } +} +.container-xl.widget { + padding-right: 0px; + padding-left: 0px; + padding-bottom: 0px; +} +.container-xl.legacy { + max-width: 1140px; } -.table td, .table th { - padding: 0.5rem; +.container { + max-width: 100%; } -.full .rank { - width: 5%; -} -.widget .rank { - @media (min-width: 960px) { - width: 13%; - } - @media (max-width: 960px) { - padding-left: 0px; - padding-right: 0px; - } +tr, td, th { + border: 0px; + padding-top: 0.65rem !important; + padding-bottom: 0.7rem !important; } -.full .alias { - width: 20%; +.clear-link { + color: white; +} + +.disabled { + pointer-events: none; + opacity: 0.5; +} + +.progress { + background-color: #2d3348; +} + +.pool { + width: 15%; + @media (max-width: 576px) { + width: 75%; + } overflow: hidden; text-overflow: ellipsis; - max-width: 350px; - @media (max-width: 960px) { - width: 40%; - max-width: 500px; - } + white-space: nowrap; + max-width: 160px; } -.widget .alias { - width: 60%; - overflow: hidden; +.pool-name { + display: inline-block; + vertical-align: text-top; text-overflow: ellipsis; - max-width: 350px; - @media (max-width: 960px) { - max-width: 175px; - } + overflow: hidden; } -.full .capacity { +.liquidity { width: 10%; - @media (max-width: 960px) { - width: 30%; - } -} -.widget .capacity { - width: 32%; - @media (max-width: 960px) { - padding-left: 0px; - padding-right: 0px; + @media (max-width: 576px) { + width: 25%; } } -.full .channels { +.fiat { width: 15%; - padding-right: 50px; - @media (max-width: 960px) { - display: none; - } + font-family: monospace; + font-size: 14px; } - -.full .timestamp-first { - width: 10%; - @media (max-width: 960px) { - display: none; - } -} - -.full .timestamp-update { - width: 10%; - @media (max-width: 960px) { - display: none; - } -} - -.full .location { - width: 15%; - @media (max-width: 960px) { - width: 30%; - } - @media (max-width: 600px) { - display: none; - } -} \ No newline at end of file diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts index 766e7f090..489ba9b21 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts @@ -1,5 +1,6 @@ -import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; -import { map, Observable } from 'rxjs'; +import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core'; +import { map, Observable, Subscription } from 'rxjs'; +import { StateService } from 'src/app/services/state.service'; import { INodesRanking, ITopNodesPerCapacity } from '../../../interfaces/node-api.interface'; import { SeoService } from '../../../services/seo.service'; import { isMobile } from '../../../shared/common.utils'; @@ -12,24 +13,31 @@ import { LightningApiService } from '../../lightning-api.service'; styleUrls: ['./top-nodes-per-capacity.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class TopNodesPerCapacity implements OnInit { +export class TopNodesPerCapacity implements OnInit, OnDestroy { @Input() nodes$: Observable; @Input() widget: boolean = false; topNodesPerCapacity$: Observable; skeletonRows: number[] = []; + currency$: Observable; constructor( private apiService: LightningApiService, - private seoService: SeoService + private seoService: SeoService, + private stateService: StateService, ) {} + ngOnDestroy(): void { + } + ngOnInit(): void { + this.currency$ = this.stateService.fiatCurrency$; + if (!this.widget) { this.seoService.setTitle($localize`:@@2d9883d230a47fbbb2ec969e32a186597ea27405:Liquidity Ranking`); } - for (let i = 1; i <= (this.widget ? (isMobile() ? 8 : 7) : 100); ++i) { + for (let i = 1; i <= (this.widget ? 6 : 100); ++i) { this.skeletonRows.push(i); } @@ -50,7 +58,7 @@ export class TopNodesPerCapacity implements OnInit { } else { this.topNodesPerCapacity$ = this.nodes$.pipe( map((ranking) => { - return ranking.topByCapacity.slice(0, isMobile() ? 8 : 7); + return ranking.topByCapacity.slice(0, 6); }) ); } diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index 2c88e4bae..ac67787e6 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -23,7 +23,7 @@ export class TopNodesPerChannels implements OnInit { ) {} ngOnInit(): void { - for (let i = 1; i <= (this.widget ? (isMobile() ? 8 : 7) : 100); ++i) { + for (let i = 1; i <= (this.widget ? (isMobile() ? 8 : 6) : 100); ++i) { this.skeletonRows.push(i); } @@ -44,7 +44,7 @@ export class TopNodesPerChannels implements OnInit { } else { this.topNodesPerChannels$ = this.nodes$.pipe( map((ranking) => { - return ranking.topByChannels.slice(0, isMobile() ? 8 : 7); + return ranking.topByChannels.slice(0, isMobile() ? 8 : 6); }) ); } From 50c3f834840239ed3520e2fafb43592559796e12 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 23 Feb 2023 18:36:13 +0900 Subject: [PATCH 004/102] Fix design for node channels ranking --- .../lightning-dashboard.component.html | 2 +- .../top-nodes-per-capacity.component.scss | 22 ----- .../top-nodes-per-capacity.component.ts | 10 +- .../top-nodes-per-channels.component.html | 89 +++++++---------- .../top-nodes-per-channels.component.scss | 99 ++++++------------- .../top-nodes-per-channels.component.ts | 5 + 6 files changed, 74 insertions(+), 153 deletions(-) diff --git a/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html b/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html index c00a4be58..b73d21bcd 100644 --- a/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html +++ b/frontend/src/app/lightning/lightning-dashboard/lightning-dashboard.component.html @@ -69,7 +69,7 @@
-
+
diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss index d177a8b01..b7ed8cf04 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss @@ -1,9 +1,3 @@ -.spinner-border { - height: 25px; - width: 25px; - margin-top: 13px; -} - .container-xl { max-width: 1400px; } @@ -12,13 +6,6 @@ padding-left: 0px; padding-bottom: 0px; } -.container-xl.legacy { - max-width: 1140px; -} - -.container { - max-width: 100%; -} tr, td, th { border: 0px; @@ -30,15 +17,6 @@ tr, td, th { color: white; } -.disabled { - pointer-events: none; - opacity: 0.5; -} - -.progress { - background-color: #2d3348; -} - .pool { width: 15%; @media (max-width: 576px) { diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts index 489ba9b21..4925256c0 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts @@ -1,9 +1,8 @@ -import { ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { map, Observable, Subscription } from 'rxjs'; +import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; +import { map, Observable } from 'rxjs'; import { StateService } from 'src/app/services/state.service'; import { INodesRanking, ITopNodesPerCapacity } from '../../../interfaces/node-api.interface'; import { SeoService } from '../../../services/seo.service'; -import { isMobile } from '../../../shared/common.utils'; import { GeolocationData } from '../../../shared/components/geolocation/geolocation.component'; import { LightningApiService } from '../../lightning-api.service'; @@ -13,7 +12,7 @@ import { LightningApiService } from '../../lightning-api.service'; styleUrls: ['./top-nodes-per-capacity.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, }) -export class TopNodesPerCapacity implements OnInit, OnDestroy { +export class TopNodesPerCapacity implements OnInit { @Input() nodes$: Observable; @Input() widget: boolean = false; @@ -27,9 +26,6 @@ export class TopNodesPerCapacity implements OnInit, OnDestroy { private stateService: StateService, ) {} - ngOnDestroy(): void { - } - ngOnInit(): void { this.currency$ = this.stateService.fiatCurrency$; diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html index 7d02e510f..ccb6a48fe 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html @@ -1,71 +1,56 @@ -
-

- Top 100 nodes connectivity ranking -

-
+ +
+

Liquidity Ranking

+ +
+ +
- - - - - - + + + + + + - - - + + - - - - + - - - + - - - - - - - - - - - - -
AliasChannelsLiquidityFirst seenLast updateLocationChannelsCapacity{{ currency$ | async }}First seenLast updateLocation
- {{ i + 1 }} +
+ - {{ node.alias }} - + {{ node.channels | number }} + + + + + +
- - - - - - - - - - - - - -
+ + +
+
+
-
\ No newline at end of file + +
diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss index 59151f6b2..b7ed8cf04 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss @@ -1,91 +1,48 @@ .container-xl { max-width: 1400px; - padding-bottom: 100px; - @media (min-width: 960px) { - padding-left: 50px; - padding-right: 50px; - } +} +.container-xl.widget { + padding-right: 0px; + padding-left: 0px; + padding-bottom: 0px; } -.table td, .table th { - padding: 0.5rem; +tr, td, th { + border: 0px; + padding-top: 0.65rem !important; + padding-bottom: 0.7rem !important; } -.full .rank { - width: 5%; -} -.widget .rank { - @media (min-width: 960px) { - width: 13%; - } - @media (max-width: 960px) { - padding-left: 0px; - padding-right: 0px; - } +.clear-link { + color: white; } -.full .alias { - width: 20%; +.pool { + width: 15%; + @media (max-width: 576px) { + width: 75%; + } overflow: hidden; text-overflow: ellipsis; - max-width: 350px; - @media (max-width: 960px) { - width: 40%; - max-width: 500px; - } + white-space: nowrap; + max-width: 160px; } -.widget .alias { - width: 60%; - overflow: hidden; +.pool-name { + display: inline-block; + vertical-align: text-top; text-overflow: ellipsis; - max-width: 350px; - @media (max-width: 960px) { - max-width: 175px; - } + overflow: hidden; } -.full .capacity { +.liquidity { width: 10%; - @media (max-width: 960px) { - width: 30%; - } -} -.widget .capacity { - width: 32%; - @media (max-width: 960px) { - padding-left: 0px; - padding-right: 0px; + @media (max-width: 576px) { + width: 25%; } } -.full .channels { +.fiat { width: 15%; - padding-right: 50px; - @media (max-width: 960px) { - display: none; - } + font-family: monospace; + font-size: 14px; } - -.full .timestamp-first { - width: 10%; - @media (max-width: 960px) { - display: none; - } -} - -.full .timestamp-update { - width: 10%; - @media (max-width: 960px) { - display: none; - } -} - -.full .location { - width: 15%; - @media (max-width: 960px) { - width: 30%; - } - @media (max-width: 600px) { - display: none; - } -} \ No newline at end of file diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index ac67787e6..f1740e5bc 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -1,5 +1,6 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { map, Observable } from 'rxjs'; +import { StateService } from 'src/app/services/state.service'; import { INodesRanking, ITopNodesPerChannels } from '../../../interfaces/node-api.interface'; import { isMobile } from '../../../shared/common.utils'; import { GeolocationData } from '../../../shared/components/geolocation/geolocation.component'; @@ -17,12 +18,16 @@ export class TopNodesPerChannels implements OnInit { topNodesPerChannels$: Observable; skeletonRows: number[] = []; + currency$: Observable; constructor( private apiService: LightningApiService, + private stateService: StateService, ) {} ngOnInit(): void { + this.currency$ = this.stateService.fiatCurrency$; + for (let i = 1; i <= (this.widget ? (isMobile() ? 8 : 6) : 100); ++i) { this.skeletonRows.push(i); } From 7e913e4d34f417fb16248abad85cea4a30c160ee Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 23 Feb 2023 18:57:55 +0900 Subject: [PATCH 005/102] Show geolocation in node channels ranking widget --- backend/src/api/explorer/nodes.api.ts | 20 +++++++++++++++---- .../top-nodes-per-channels.component.html | 6 +++--- .../top-nodes-per-channels.component.scss | 3 +++ .../top-nodes-per-channels.component.ts | 13 ++++++++++-- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index b3f83faa6..6d1d8aa0a 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -228,7 +228,7 @@ class NodesApi { nodes.capacity FROM nodes ORDER BY capacity DESC - LIMIT 100 + LIMIT 6 `; [rows] = await DB.query(query); @@ -269,14 +269,26 @@ class NodesApi { let query: string; if (full === false) { query = ` - SELECT nodes.public_key as publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias, - nodes.channels + SELECT + nodes.public_key as publicKey, + IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias, + nodes.channels, + geo_names_city.names as city, geo_names_country.names as country, + geo_names_iso.names as iso_code, geo_names_subdivision.names as subdivision FROM nodes + LEFT JOIN geo_names geo_names_country ON geo_names_country.id = nodes.country_id AND geo_names_country.type = 'country' + LEFT JOIN geo_names geo_names_city ON geo_names_city.id = nodes.city_id AND geo_names_city.type = 'city' + LEFT JOIN geo_names geo_names_iso ON geo_names_iso.id = nodes.country_id AND geo_names_iso.type = 'country_iso_code' + LEFT JOIN geo_names geo_names_subdivision on geo_names_subdivision.id = nodes.subdivision_id AND geo_names_subdivision.type = 'division' ORDER BY channels DESC - LIMIT 100; + LIMIT 6; `; [rows] = await DB.query(query); + for (let i = 0; i < rows.length; ++i) { + rows[i].country = JSON.parse(rows[i].country); + rows[i].city = JSON.parse(rows[i].city); + } } else { query = ` SELECT nodes.public_key AS publicKey, IF(nodes.alias = '', SUBSTRING(nodes.public_key, 1, 20), alias) as alias, diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html index ccb6a48fe..538cae1c2 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html @@ -8,13 +8,13 @@
- + - + @@ -40,7 +40,7 @@ - diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss index b7ed8cf04..ffde7c479 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss @@ -33,6 +33,9 @@ tr, td, th { text-overflow: ellipsis; overflow: hidden; } +.pool.widget { + width: 45%; +} .liquidity { width: 10%; diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index f1740e5bc..79a6eb28f 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -28,7 +28,7 @@ export class TopNodesPerChannels implements OnInit { ngOnInit(): void { this.currency$ = this.stateService.fiatCurrency$; - for (let i = 1; i <= (this.widget ? (isMobile() ? 8 : 6) : 100); ++i) { + for (let i = 1; i <= (this.widget ? 6 : 100); ++i) { this.skeletonRows.push(i); } @@ -49,7 +49,16 @@ export class TopNodesPerChannels implements OnInit { } else { this.topNodesPerChannels$ = this.nodes$.pipe( map((ranking) => { - return ranking.topByChannels.slice(0, isMobile() ? 8 : 6); + for (const i in ranking.topByChannels) { + ranking.topByChannels[i].geolocation = { + country: ranking.topByChannels[i].country?.en, + city: ranking.topByChannels[i].city?.en, + subdivision: ranking.topByChannels[i].subdivision?.en, + iso: ranking.topByChannels[i].iso_code, + }; + console.log(ranking.topByChannels[i].geolocation); + } + return ranking.topByChannels; }) ); } From a26dc977ba0783bc6beb492741c2f1a007531e4e Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 14:20:16 +0900 Subject: [PATCH 006/102] Hide new columns when screen width is too small --- .../top-nodes-per-capacity.component.html | 4 ++-- .../top-nodes-per-capacity.component.scss | 3 +++ .../top-nodes-per-channels.component.html | 6 +++--- .../top-nodes-per-channels.component.scss | 10 +++++----- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html index a9e30705e..3efbc8594 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html @@ -10,7 +10,7 @@ - + @@ -28,7 +28,7 @@ - - + @@ -26,7 +26,7 @@ - diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss index ffde7c479..eba9afee9 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss @@ -44,8 +44,8 @@ tr, td, th { } } -.fiat { - width: 15%; - font-family: monospace; - font-size: 14px; -} +.geolocation { + @media (max-width: 991px) { + display: none !important; + } +} \ No newline at end of file From 7cee6df369533475c5ace2f043b25082f07115af Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 17:47:33 +0900 Subject: [PATCH 007/102] Remove console.log --- .../top-nodes-per-channels/top-nodes-per-channels.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index 79a6eb28f..cd5796664 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -56,7 +56,6 @@ export class TopNodesPerChannels implements OnInit { subdivision: ranking.topByChannels[i].subdivision?.en, iso: ranking.topByChannels[i].iso_code, }; - console.log(ranking.topByChannels[i].geolocation); } return ranking.topByChannels; }) From 98e709b739ab95bad3f78358549393f3c1441a85 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 17:49:06 +0900 Subject: [PATCH 008/102] Remove monospace from fiat amount --- .../top-nodes-per-capacity.component.scss | 2 -- .../top-nodes-per-channels/top-nodes-per-channels.component.ts | 1 - 2 files changed, 3 deletions(-) diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss index 452122d8e..787f64f30 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss @@ -43,8 +43,6 @@ tr, td, th { .fiat { width: 15%; - font-family: monospace; - font-size: 14px; @media (max-width: 991px) { display: none !important; } diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index cd5796664..62f461c6c 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -2,7 +2,6 @@ import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core import { map, Observable } from 'rxjs'; import { StateService } from 'src/app/services/state.service'; import { INodesRanking, ITopNodesPerChannels } from '../../../interfaces/node-api.interface'; -import { isMobile } from '../../../shared/common.utils'; import { GeolocationData } from '../../../shared/components/geolocation/geolocation.component'; import { LightningApiService } from '../../lightning-api.service'; From 92862939dace11804d366e48607b2ede15c49a29 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 20:25:28 +0900 Subject: [PATCH 009/102] Make sure we don't show more than 6 rows in channel ranking widget --- .../top-nodes-per-channels/top-nodes-per-channels.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts index 62f461c6c..ce6436ce3 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts @@ -56,7 +56,7 @@ export class TopNodesPerChannels implements OnInit { iso: ranking.topByChannels[i].iso_code, }; } - return ranking.topByChannels; + return ranking.topByChannels.slice(0, 6); }) ); } From b50e97357368c904c55a5f9c4a51c1267bc9969f Mon Sep 17 00:00:00 2001 From: wiz Date: Sat, 25 Feb 2023 12:14:07 +0900 Subject: [PATCH 010/102] ops: Enable CPFP indexing for mainnet --- production/mempool-config.mainnet.json | 1 + 1 file changed, 1 insertion(+) diff --git a/production/mempool-config.mainnet.json b/production/mempool-config.mainnet.json index 1258e62fb..658437edc 100644 --- a/production/mempool-config.mainnet.json +++ b/production/mempool-config.mainnet.json @@ -11,6 +11,7 @@ "INDEXING_BLOCKS_AMOUNT": -1, "BLOCKS_SUMMARIES_INDEXING": true, "AUDIT": true, + "CPFP_INDEXING": true, "ADVANCED_GBT_AUDIT": true, "ADVANCED_GBT_MEMPOOL": false, "USE_SECOND_NODE_FOR_MINFEE": true From 80e0ef8970d39617008c45487dfb91f099cf02fd Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 13:20:49 +0900 Subject: [PATCH 011/102] Improve responsiveness on single column layout --- .../top-nodes-per-capacity.component.scss | 9 ++++++--- .../top-nodes-per-channels.component.scss | 5 ++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss index 787f64f30..3547c447f 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss @@ -19,7 +19,7 @@ tr, td, th { .pool { width: 15%; - @media (max-width: 576px) { + @media (max-width: 575px) { width: 75%; } overflow: hidden; @@ -36,14 +36,17 @@ tr, td, th { .liquidity { width: 10%; - @media (max-width: 576px) { + @media (max-width: 575px) { width: 25%; } } .fiat { width: 15%; - @media (max-width: 991px) { + @media (min-width: 768px) and (max-width: 991px) { + display: none !important; + } + @media (max-width: 575px) { display: none !important; } } diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss index eba9afee9..a42599d69 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.scss @@ -45,7 +45,10 @@ tr, td, th { } .geolocation { - @media (max-width: 991px) { + @media (min-width: 768px) and (max-width: 991px) { + display: none !important; + } + @media (max-width: 575px) { display: none !important; } } \ No newline at end of file From 8df247626638347d65d83c34739acebaa738fdfc Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 13:38:09 +0900 Subject: [PATCH 012/102] Improve error handling on channel component --- .../lightning/channel/channel.component.html | 47 +++++++++---------- .../lightning/channel/channel.component.ts | 4 +- .../app/lightning/node/node.component.html | 23 +++++---- 3 files changed, 39 insertions(+), 35 deletions(-) diff --git a/frontend/src/app/lightning/channel/channel.component.html b/frontend/src/app/lightning/channel/channel.component.html index f52b85762..96af4ab67 100644 --- a/frontend/src/app/lightning/channel/channel.component.html +++ b/frontend/src/app/lightning/channel/channel.component.html @@ -1,25 +1,32 @@
-
Lightning channel
-
-

{{ channel.short_id }}

- - {{ channel.id }} - - -
-
- Inactive - Active - Closed - -
+ + +
Lightning channel
+
+

{{ channel.short_id }}

+ + {{ channel.id }} + + +
+
+ Inactive + Active + Closed + +
+
+
+ No channel found for short id "{{ channel.short_id }}" +
+ -
+
@@ -65,7 +72,7 @@
-
+
@@ -104,14 +111,6 @@
- -
- Error loading data. -

- {{ error.status }}: {{ error.error }} -
-
-
Lightning channel
diff --git a/frontend/src/app/lightning/channel/channel.component.ts b/frontend/src/app/lightning/channel/channel.component.ts index 379e8a005..d57aa3f01 100644 --- a/frontend/src/app/lightning/channel/channel.component.ts +++ b/frontend/src/app/lightning/channel/channel.component.ts @@ -38,7 +38,9 @@ export class ChannelComponent implements OnInit { }), catchError((err) => { this.error = err; - return of(null); + return [{ + short_id: params.get('short_id') + }]; }) ); }), diff --git a/frontend/src/app/lightning/node/node.component.html b/frontend/src/app/lightning/node/node.component.html index 575614c10..1519eb1da 100644 --- a/frontend/src/app/lightning/node/node.component.html +++ b/frontend/src/app/lightning/node/node.component.html @@ -1,15 +1,18 @@
-
Lightning node
-
-

{{ node.alias }}

- - - - - + + +
Lightning node
+
+

{{ node.alias }}

+ + + + + + - -
+
+
From 9a246c68de699675d3ddead751ef8d5c23d1ae57 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 13:43:48 +0900 Subject: [PATCH 013/102] Center wrapping error message on mobile --- frontend/src/app/lightning/channel/channel.component.html | 2 +- frontend/src/app/lightning/node/node.component.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/lightning/channel/channel.component.html b/frontend/src/app/lightning/channel/channel.component.html index 96af4ab67..951cb8090 100644 --- a/frontend/src/app/lightning/channel/channel.component.html +++ b/frontend/src/app/lightning/channel/channel.component.html @@ -20,7 +20,7 @@
- No channel found for short id "{{ channel.short_id }}" + No channel found for short id "{{ channel.short_id }}"
- No node found for public key "{{ node.public_key | shortenString : 12}}" + No node found for public key "{{ node.public_key | shortenString : 12}}"
From c44896f53e46a7725ced8e9239d7cce9580bd337 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 16 Feb 2023 15:36:16 +0900 Subject: [PATCH 014/102] Get blocks data set by bulk (non indexed) --- backend/src/api/bitcoin/bitcoin.routes.ts | 28 +++++++++++ backend/src/api/blocks.ts | 58 ++++++++++++++++++++++- backend/src/rpc-api/commands.ts | 3 +- 3 files changed, 87 insertions(+), 2 deletions(-) diff --git a/backend/src/api/bitcoin/bitcoin.routes.ts b/backend/src/api/bitcoin/bitcoin.routes.ts index ea8154206..0ff30376c 100644 --- a/backend/src/api/bitcoin/bitcoin.routes.ts +++ b/backend/src/api/bitcoin/bitcoin.routes.ts @@ -95,6 +95,8 @@ class BitcoinRoutes { .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/summary', this.getStrippedBlockTransactions) .get(config.MEMPOOL.API_URL_PREFIX + 'block/:hash/audit-summary', this.getBlockAuditSummary) .post(config.MEMPOOL.API_URL_PREFIX + 'psbt/addparents', this.postPsbtCompletion) + .get(config.MEMPOOL.API_URL_PREFIX + 'blocks-bulk/:from', this.getBlocksByBulk.bind(this)) + .get(config.MEMPOOL.API_URL_PREFIX + 'blocks-bulk/:from/:to', this.getBlocksByBulk.bind(this)) ; if (config.MEMPOOL.BACKEND !== 'esplora') { @@ -402,6 +404,32 @@ class BitcoinRoutes { } } + private async getBlocksByBulk(req: Request, res: Response) { + try { + if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { // Liquid, Bisq - Not implemented + return res.status(404).send(`Not implemented`); + } + + const from = parseInt(req.params.from, 10); + if (!from) { + return res.status(400).send(`Parameter 'from' must be a block height (integer)`); + } + const to = req.params.to === undefined ? await bitcoinApi.$getBlockHeightTip() : parseInt(req.params.to, 10); + if (!to) { + return res.status(400).send(`Parameter 'to' must be a block height (integer)`); + } + if (from > to) { + return res.status(400).send(`Parameter 'to' must be a higher block height than 'from'`); + } + + res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); + res.json(await blocks.$getBlocksByBulk(from, to)); + + } catch (e) { + res.status(500).send(e instanceof Error ? e.message : e); + } + } + private async getLegacyBlocks(req: Request, res: Response) { try { const returnBlocks: IEsploraApi.Block[] = []; diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index d110186f5..5c8884c71 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -688,7 +688,6 @@ class Blocks { } public async $getBlocks(fromHeight?: number, limit: number = 15): Promise { - let currentHeight = fromHeight !== undefined ? fromHeight : this.currentBlockHeight; if (currentHeight > this.currentBlockHeight) { limit -= currentHeight - this.currentBlockHeight; @@ -728,6 +727,63 @@ class Blocks { return returnBlocks; } + public async $getBlocksByBulk(start: number, end: number) { + start = Math.max(1, start); + + const blocks: any[] = []; + for (let i = end; i >= start; --i) { + const blockHash = await bitcoinApi.$getBlockHash(i); + const coreBlock = await bitcoinClient.getBlock(blockHash); + const electrsBlock = await bitcoinApi.$getBlock(blockHash); + const txs = await this.$getTransactionsExtended(blockHash, i, true); + const stats = await bitcoinClient.getBlockStats(blockHash); + const header = await bitcoinClient.getBlockHeader(blockHash, false); + const txoutset = await bitcoinClient.getTxoutSetinfo('none', i); + + const formatted = { + blockhash: coreBlock.id, + blockheight: coreBlock.height, + prev_blockhash: coreBlock.previousblockhash, + timestamp: coreBlock.timestamp, + median_timestamp: coreBlock.mediantime, + // @ts-ignore + blocktime: coreBlock.time, + orphaned: null, + header: header, + version: coreBlock.version, + difficulty: coreBlock.difficulty, + merkle_root: coreBlock.merkle_root, + bits: coreBlock.bits, + nonce: coreBlock.nonce, + coinbase_scriptsig: txs[0].vin[0].scriptsig, + coinbase_address: txs[0].vout[0].scriptpubkey_address, + coinbase_signature: txs[0].vout[0].scriptpubkey_asm, + size: coreBlock.size, + virtual_size: coreBlock.weight / 4.0, + weight: coreBlock.weight, + utxoset_size: txoutset.txouts, + utxoset_change: stats.utxo_increase, + total_txs: coreBlock.tx_count, + avg_tx_size: Math.round(stats.total_size / stats.txs * 100) * 0.01, + total_inputs: stats.ins, + total_outputs: stats.outs, + total_input_amt: Math.round(txoutset.block_info.prevout_spent * 100000000), + total_output_amt: stats.total_out, + block_subsidy: txs[0].vout.reduce((acc, curr) => acc + curr.value, 0), + total_fee: stats.totalfee, + avg_feerate: stats.avgfeerate, + feerate_percentiles: [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(), + avg_fee: stats.avgfee, + fee_percentiles: null, + segwit_total_txs: stats.swtxs, + segwit_total_size: stats.swtotal_size, + segwit_total_weight: stats.swtotal_weight, + }; + blocks.push(formatted); + } + return blocks; + } + public async $getBlockAuditSummary(hash: string): Promise { let summary; if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { diff --git a/backend/src/rpc-api/commands.ts b/backend/src/rpc-api/commands.ts index ea9bd7bf0..5905a2bb6 100644 --- a/backend/src/rpc-api/commands.ts +++ b/backend/src/rpc-api/commands.ts @@ -88,5 +88,6 @@ module.exports = { verifyTxOutProof: 'verifytxoutproof', // bitcoind v0.11.0+ walletLock: 'walletlock', walletPassphrase: 'walletpassphrase', - walletPassphraseChange: 'walletpassphrasechange' + walletPassphraseChange: 'walletpassphrasechange', + getTxoutSetinfo: 'gettxoutsetinfo' } From 73f76474dd7fa0d8f95e8fd02af8c923b6b7fa86 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 17 Feb 2023 21:21:21 +0900 Subject: [PATCH 015/102] Implemented coinstatsindex indexing --- backend/src/api/bitcoin/bitcoin.routes.ts | 7 +- .../src/api/bitcoin/esplora-api.interface.ts | 1 + backend/src/api/blocks.ts | 158 ++++++++++-------- backend/src/api/database-migration.ts | 29 +++- backend/src/api/mining/mining.ts | 41 ++++- backend/src/api/transaction-utils.ts | 1 + backend/src/index.ts | 1 + backend/src/indexer.ts | 76 ++++++++- backend/src/mempool.interfaces.ts | 21 +++ backend/src/repositories/BlocksRepository.ts | 107 +++++++++--- backend/src/rpc-api/commands.ts | 5 +- 11 files changed, 330 insertions(+), 117 deletions(-) diff --git a/backend/src/api/bitcoin/bitcoin.routes.ts b/backend/src/api/bitcoin/bitcoin.routes.ts index 0ff30376c..6d145e854 100644 --- a/backend/src/api/bitcoin/bitcoin.routes.ts +++ b/backend/src/api/bitcoin/bitcoin.routes.ts @@ -407,7 +407,10 @@ class BitcoinRoutes { private async getBlocksByBulk(req: Request, res: Response) { try { if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { // Liquid, Bisq - Not implemented - return res.status(404).send(`Not implemented`); + return res.status(404).send(`This API is only available for Bitcoin networks`); + } + if (!Common.indexingEnabled()) { + return res.status(404).send(`Indexing is required for this API`); } const from = parseInt(req.params.from, 10); @@ -423,7 +426,7 @@ class BitcoinRoutes { } res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); - res.json(await blocks.$getBlocksByBulk(from, to)); + res.json(await blocks.$getBlocksBetweenHeight(from, to)); } catch (e) { res.status(500).send(e instanceof Error ? e.message : e); diff --git a/backend/src/api/bitcoin/esplora-api.interface.ts b/backend/src/api/bitcoin/esplora-api.interface.ts index 39f8cfd6f..eaf6476f4 100644 --- a/backend/src/api/bitcoin/esplora-api.interface.ts +++ b/backend/src/api/bitcoin/esplora-api.interface.ts @@ -88,6 +88,7 @@ export namespace IEsploraApi { size: number; weight: number; previousblockhash: string; + medianTime?: number; } export interface Address { diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 5c8884c71..d950a9bd3 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -165,33 +165,75 @@ class Blocks { * @returns BlockExtended */ private async $getBlockExtended(block: IEsploraApi.Block, transactions: TransactionExtended[]): Promise { - const blockExtended: BlockExtended = Object.assign({ extras: {} }, block); - blockExtended.extras.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0); - blockExtended.extras.coinbaseTx = transactionUtils.stripCoinbaseTransaction(transactions[0]); - blockExtended.extras.coinbaseRaw = blockExtended.extras.coinbaseTx.vin[0].scriptsig; - blockExtended.extras.usd = priceUpdater.latestPrices.USD; + const blk: BlockExtended = Object.assign({ extras: {} }, block); + blk.extras.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0); + blk.extras.coinbaseTx = transactionUtils.stripCoinbaseTransaction(transactions[0]); + blk.extras.coinbaseRaw = blk.extras.coinbaseTx.vin[0].scriptsig; + blk.extras.usd = priceUpdater.latestPrices.USD; if (block.height === 0) { - blockExtended.extras.medianFee = 0; // 50th percentiles - blockExtended.extras.feeRange = [0, 0, 0, 0, 0, 0, 0]; - blockExtended.extras.totalFees = 0; - blockExtended.extras.avgFee = 0; - blockExtended.extras.avgFeeRate = 0; + blk.extras.medianFee = 0; // 50th percentiles + blk.extras.feeRange = [0, 0, 0, 0, 0, 0, 0]; + blk.extras.totalFees = 0; + blk.extras.avgFee = 0; + blk.extras.avgFeeRate = 0; + blk.extras.utxoSetChange = 0; + blk.extras.avgTxSize = 0; + blk.extras.totalInputs = 0; + blk.extras.totalOutputs = 1; + blk.extras.totalOutputAmt = 0; + blk.extras.segwitTotalTxs = 0; + blk.extras.segwitTotalSize = 0; + blk.extras.segwitTotalWeight = 0; } else { - const stats = await bitcoinClient.getBlockStats(block.id, [ - 'feerate_percentiles', 'minfeerate', 'maxfeerate', 'totalfee', 'avgfee', 'avgfeerate' - ]); - blockExtended.extras.medianFee = stats.feerate_percentiles[2]; // 50th percentiles - blockExtended.extras.feeRange = [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(); - blockExtended.extras.totalFees = stats.totalfee; - blockExtended.extras.avgFee = stats.avgfee; - blockExtended.extras.avgFeeRate = stats.avgfeerate; + const stats = await bitcoinClient.getBlockStats(block.id); + blk.extras.medianFee = stats.feerate_percentiles[2]; // 50th percentiles + blk.extras.feeRange = [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(); + blk.extras.totalFees = stats.totalfee; + blk.extras.avgFee = stats.avgfee; + blk.extras.avgFeeRate = stats.avgfeerate; + blk.extras.utxoSetChange = stats.utxo_increase; + blk.extras.avgTxSize = Math.round(stats.total_size / stats.txs * 100) * 0.01; + blk.extras.totalInputs = stats.ins; + blk.extras.totalOutputs = stats.outs; + blk.extras.totalOutputAmt = stats.total_out; + blk.extras.segwitTotalTxs = stats.swtxs; + blk.extras.segwitTotalSize = stats.swtotal_size; + blk.extras.segwitTotalWeight = stats.swtotal_weight; + } + + blk.extras.feePercentiles = [], // TODO + blk.extras.medianFeeAmt = 0; // TODO + blk.extras.medianTimestamp = block.medianTime; // TODO + blk.extras.blockTime = 0; // TODO + blk.extras.orphaned = false; // TODO + + blk.extras.virtualSize = block.weight / 4.0; + if (blk.extras.coinbaseTx.vout.length > 0) { + blk.extras.coinbaseAddress = blk.extras.coinbaseTx.vout[0].scriptpubkey_address ?? null; + blk.extras.coinbaseSignature = blk.extras.coinbaseTx.vout[0].scriptpubkey_asm ?? null; + } else { + blk.extras.coinbaseAddress = null; + blk.extras.coinbaseSignature = null; + } + + const header = await bitcoinClient.getBlockHeader(block.id, false); + blk.extras.header = header; + + const coinStatsIndex = indexer.isCoreIndexReady('coinstatsindex'); + if (coinStatsIndex !== null && coinStatsIndex.best_block_height >= block.height) { + const txoutset = await bitcoinClient.getTxoutSetinfo('none', block.height); + blk.extras.utxoSetSize = txoutset.txouts, + blk.extras.totalInputAmt = Math.round(txoutset.block_info.prevout_spent * 100000000); + } else { + blk.extras.utxoSetSize = null; + blk.extras.totalInputAmt = null; } if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { let pool: PoolTag; - if (blockExtended.extras?.coinbaseTx !== undefined) { - pool = await this.$findBlockMiner(blockExtended.extras?.coinbaseTx); + if (blk.extras?.coinbaseTx !== undefined) { + pool = await this.$findBlockMiner(blk.extras?.coinbaseTx); } else { if (config.DATABASE.ENABLED === true) { pool = await poolsRepository.$getUnknownPool(); @@ -201,10 +243,10 @@ class Blocks { } if (!pool) { // We should never have this situation in practise - logger.warn(`Cannot assign pool to block ${blockExtended.height} and 'unknown' pool does not exist. ` + + logger.warn(`Cannot assign pool to block ${blk.height} and 'unknown' pool does not exist. ` + `Check your "pools" table entries`); } else { - blockExtended.extras.pool = { + blk.extras.pool = { id: pool.id, name: pool.name, slug: pool.slug, @@ -214,12 +256,12 @@ class Blocks { if (config.MEMPOOL.AUDIT) { const auditScore = await BlocksAuditsRepository.$getBlockAuditScore(block.id); if (auditScore != null) { - blockExtended.extras.matchRate = auditScore.matchRate; + blk.extras.matchRate = auditScore.matchRate; } } } - return blockExtended; + return blk; } /** @@ -727,60 +769,28 @@ class Blocks { return returnBlocks; } - public async $getBlocksByBulk(start: number, end: number) { - start = Math.max(1, start); + /** + * Used for bulk block data query + * + * @param fromHeight + * @param toHeight + */ + public async $getBlocksBetweenHeight(fromHeight: number, toHeight: number): Promise { + if (!Common.indexingEnabled()) { + return []; + } const blocks: any[] = []; - for (let i = end; i >= start; --i) { - const blockHash = await bitcoinApi.$getBlockHash(i); - const coreBlock = await bitcoinClient.getBlock(blockHash); - const electrsBlock = await bitcoinApi.$getBlock(blockHash); - const txs = await this.$getTransactionsExtended(blockHash, i, true); - const stats = await bitcoinClient.getBlockStats(blockHash); - const header = await bitcoinClient.getBlockHeader(blockHash, false); - const txoutset = await bitcoinClient.getTxoutSetinfo('none', i); - const formatted = { - blockhash: coreBlock.id, - blockheight: coreBlock.height, - prev_blockhash: coreBlock.previousblockhash, - timestamp: coreBlock.timestamp, - median_timestamp: coreBlock.mediantime, - // @ts-ignore - blocktime: coreBlock.time, - orphaned: null, - header: header, - version: coreBlock.version, - difficulty: coreBlock.difficulty, - merkle_root: coreBlock.merkle_root, - bits: coreBlock.bits, - nonce: coreBlock.nonce, - coinbase_scriptsig: txs[0].vin[0].scriptsig, - coinbase_address: txs[0].vout[0].scriptpubkey_address, - coinbase_signature: txs[0].vout[0].scriptpubkey_asm, - size: coreBlock.size, - virtual_size: coreBlock.weight / 4.0, - weight: coreBlock.weight, - utxoset_size: txoutset.txouts, - utxoset_change: stats.utxo_increase, - total_txs: coreBlock.tx_count, - avg_tx_size: Math.round(stats.total_size / stats.txs * 100) * 0.01, - total_inputs: stats.ins, - total_outputs: stats.outs, - total_input_amt: Math.round(txoutset.block_info.prevout_spent * 100000000), - total_output_amt: stats.total_out, - block_subsidy: txs[0].vout.reduce((acc, curr) => acc + curr.value, 0), - total_fee: stats.totalfee, - avg_feerate: stats.avgfeerate, - feerate_percentiles: [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(), - avg_fee: stats.avgfee, - fee_percentiles: null, - segwit_total_txs: stats.swtxs, - segwit_total_size: stats.swtotal_size, - segwit_total_weight: stats.swtotal_weight, - }; - blocks.push(formatted); + while (fromHeight <= toHeight) { + let block = await blocksRepository.$getBlockByHeight(fromHeight); + if (!block) { + block = await this.$indexBlock(fromHeight); + } + blocks.push(block); + fromHeight++; } + return blocks; } diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 6e4221857..2c6adfd1b 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -7,7 +7,7 @@ import cpfpRepository from '../repositories/CpfpRepository'; import { RowDataPacket } from 'mysql2'; class DatabaseMigration { - private static currentVersion = 54; + private static currentVersion = 55; private queryTimeout = 3600_000; private statisticsAddedIndexed = false; private uniqueLogs: string[] = []; @@ -483,6 +483,11 @@ class DatabaseMigration { } await this.updateToSchemaVersion(54); } + + if (databaseSchemaVersion < 55) { + await this.$executeQuery(this.getAdditionalBlocksDataQuery()); + await this.updateToSchemaVersion(55); + } } /** @@ -756,6 +761,28 @@ class DatabaseMigration { ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`; } + private getAdditionalBlocksDataQuery(): string { + return `ALTER TABLE blocks + ADD median_timestamp timestamp NOT NULL, + ADD block_time int unsigned NOT NULL, + ADD coinbase_address varchar(100) NULL, + ADD coinbase_signature varchar(500) NULL, + ADD avg_tx_size double unsigned NOT NULL, + ADD total_inputs int unsigned NOT NULL, + ADD total_outputs int unsigned NOT NULL, + ADD total_output_amt bigint unsigned NOT NULL, + ADD fee_percentiles longtext NULL, + ADD median_fee_amt int unsigned NOT NULL, + ADD segwit_total_txs int unsigned NOT NULL, + ADD segwit_total_size int unsigned NOT NULL, + ADD segwit_total_weight int unsigned NOT NULL, + ADD header varchar(160) NOT NULL, + ADD utxoset_change int NOT NULL, + ADD utxoset_size int unsigned NULL, + ADD total_input_amt bigint unsigned NULL + `; + } + private getCreateDailyStatsTableQuery(): string { return `CREATE TABLE IF NOT EXISTS hashrates ( hashrate_timestamp timestamp NOT NULL, diff --git a/backend/src/api/mining/mining.ts b/backend/src/api/mining/mining.ts index edcb5b2e5..f33a68dcb 100644 --- a/backend/src/api/mining/mining.ts +++ b/backend/src/api/mining/mining.ts @@ -172,7 +172,7 @@ class Mining { } /** - * [INDEXING] Generate weekly mining pool hashrate history + * Generate weekly mining pool hashrate history */ public async $generatePoolHashrateHistory(): Promise { const now = new Date(); @@ -279,7 +279,7 @@ class Mining { } /** - * [INDEXING] Generate daily hashrate data + * Generate daily hashrate data */ public async $generateNetworkHashrateHistory(): Promise { // We only run this once a day around midnight @@ -459,7 +459,7 @@ class Mining { /** * Create a link between blocks and the latest price at when they were mined */ - public async $indexBlockPrices() { + public async $indexBlockPrices(): Promise { if (this.blocksPriceIndexingRunning === true) { return; } @@ -520,6 +520,41 @@ class Mining { this.blocksPriceIndexingRunning = false; } + /** + * Index core coinstatsindex + */ + public async $indexCoinStatsIndex(): Promise { + let timer = new Date().getTime() / 1000; + let totalIndexed = 0; + + const blockchainInfo = await bitcoinClient.getBlockchainInfo(); + let currentBlockHeight = blockchainInfo.blocks; + + while (currentBlockHeight > 0) { + const indexedBlocks = await BlocksRepository.$getBlocksMissingCoinStatsIndex( + currentBlockHeight, currentBlockHeight - 10000); + + for (const block of indexedBlocks) { + const txoutset = await bitcoinClient.getTxoutSetinfo('none', block.height); + await BlocksRepository.$updateCoinStatsIndexData(block.hash, txoutset.txouts, + Math.round(txoutset.block_info.prevout_spent * 100000000)); + ++totalIndexed; + + const elapsedSeconds = Math.max(1, new Date().getTime() / 1000 - timer); + if (elapsedSeconds > 5) { + logger.info(`Indexing coinstatsindex data for block #${block.height}. Indexed ${totalIndexed} blocks.`, logger.tags.mining); + timer = new Date().getTime() / 1000; + } + } + + currentBlockHeight -= 10000; + } + + if (totalIndexed) { + logger.info(`Indexing missing coinstatsindex data completed`, logger.tags.mining); + } + } + private getDateMidnight(date: Date): Date { date.setUTCHours(0); date.setUTCMinutes(0); diff --git a/backend/src/api/transaction-utils.ts b/backend/src/api/transaction-utils.ts index fb5aeea42..fb69419fc 100644 --- a/backend/src/api/transaction-utils.ts +++ b/backend/src/api/transaction-utils.ts @@ -14,6 +14,7 @@ class TransactionUtils { vout: tx.vout .map((vout) => ({ scriptpubkey_address: vout.scriptpubkey_address, + scriptpubkey_asm: vout.scriptpubkey_asm, value: vout.value })) .filter((vout) => vout.value) diff --git a/backend/src/index.ts b/backend/src/index.ts index 919c039c3..d8d46fc9f 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -36,6 +36,7 @@ import bitcoinRoutes from './api/bitcoin/bitcoin.routes'; import fundingTxFetcher from './tasks/lightning/sync-tasks/funding-tx-fetcher'; import forensicsService from './tasks/lightning/forensics.service'; import priceUpdater from './tasks/price-updater'; +import mining from './api/mining/mining'; import { AxiosError } from 'axios'; class Server { diff --git a/backend/src/indexer.ts b/backend/src/indexer.ts index 22f3ce319..41c8024e0 100644 --- a/backend/src/indexer.ts +++ b/backend/src/indexer.ts @@ -8,18 +8,67 @@ import bitcoinClient from './api/bitcoin/bitcoin-client'; import priceUpdater from './tasks/price-updater'; import PricesRepository from './repositories/PricesRepository'; +export interface CoreIndex { + name: string; + synced: boolean; + best_block_height: number; +} + class Indexer { runIndexer = true; indexerRunning = false; tasksRunning: string[] = []; + coreIndexes: CoreIndex[] = []; - public reindex() { + /** + * Check which core index is available for indexing + */ + public async checkAvailableCoreIndexes(): Promise { + const updatedCoreIndexes: CoreIndex[] = []; + + const indexes: any = await bitcoinClient.getIndexInfo(); + for (const indexName in indexes) { + const newState = { + name: indexName, + synced: indexes[indexName].synced, + best_block_height: indexes[indexName].best_block_height, + }; + logger.info(`Core index '${indexName}' is ${indexes[indexName].synced ? 'synced' : 'not synced'}. Best block height is ${indexes[indexName].best_block_height}`); + updatedCoreIndexes.push(newState); + + if (indexName === 'coinstatsindex' && newState.synced === true) { + const previousState = this.isCoreIndexReady('coinstatsindex'); + // if (!previousState || previousState.synced === false) { + this.runSingleTask('coinStatsIndex'); + // } + } + } + + this.coreIndexes = updatedCoreIndexes; + } + + /** + * Return the best block height if a core index is available, or 0 if not + * + * @param name + * @returns + */ + public isCoreIndexReady(name: string): CoreIndex | null { + for (const index of this.coreIndexes) { + if (index.name === name && index.synced === true) { + return index; + } + } + return null; + } + + public reindex(): void { if (Common.indexingEnabled()) { this.runIndexer = true; } } - public async runSingleTask(task: 'blocksPrices') { + public async runSingleTask(task: 'blocksPrices' | 'coinStatsIndex'): Promise { if (!Common.indexingEnabled()) { return; } @@ -28,20 +77,27 @@ class Indexer { this.tasksRunning.push(task); const lastestPriceId = await PricesRepository.$getLatestPriceId(); if (priceUpdater.historyInserted === false || lastestPriceId === null) { - logger.debug(`Blocks prices indexer is waiting for the price updater to complete`) + logger.debug(`Blocks prices indexer is waiting for the price updater to complete`); setTimeout(() => { - this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask != task) + this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask !== task); this.runSingleTask('blocksPrices'); }, 10000); } else { - logger.debug(`Blocks prices indexer will run now`) + logger.debug(`Blocks prices indexer will run now`); await mining.$indexBlockPrices(); - this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask != task) + this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask !== task); } } + + if (task === 'coinStatsIndex' && !this.tasksRunning.includes(task)) { + this.tasksRunning.push(task); + logger.debug(`Indexing coinStatsIndex now`); + await mining.$indexCoinStatsIndex(); + this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask !== task); + } } - public async $run() { + public async $run(): Promise { if (!Common.indexingEnabled() || this.runIndexer === false || this.indexerRunning === true || mempool.hasPriority() ) { @@ -57,7 +113,9 @@ class Indexer { this.runIndexer = false; this.indexerRunning = true; - logger.debug(`Running mining indexer`); + logger.info(`Running mining indexer`); + + await this.checkAvailableCoreIndexes(); try { await priceUpdater.$run(); @@ -93,7 +151,7 @@ class Indexer { setTimeout(() => this.reindex(), runEvery); } - async $resetHashratesIndexingState() { + async $resetHashratesIndexingState(): Promise { try { await HashratesRepository.$setLatestRun('last_hashrates_indexing', 0); await HashratesRepository.$setLatestRun('last_weekly_hashrates_indexing', 0); diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index 6b258c173..a1a9e1687 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -64,6 +64,7 @@ interface VinStrippedToScriptsig { interface VoutStrippedToScriptPubkey { scriptpubkey_address: string | undefined; + scriptpubkey_asm: string | undefined; value: number; } @@ -160,6 +161,26 @@ export interface BlockExtension { avgFeeRate?: number; coinbaseRaw?: string; usd?: number | null; + medianTimestamp?: number; + blockTime?: number; + orphaned?: boolean; + coinbaseAddress?: string | null; + coinbaseSignature?: string | null; + virtualSize?: number; + avgTxSize?: number; + totalInputs?: number; + totalOutputs?: number; + totalOutputAmt?: number; + medianFeeAmt?: number; + feePercentiles?: number[], + segwitTotalTxs?: number; + segwitTotalSize?: number; + segwitTotalWeight?: number; + header?: string; + utxoSetChange?: number; + // Requires coinstatsindex, will be set to NULL otherwise + utxoSetSize?: number | null; + totalInputAmt?: number | null; } export interface BlockExtended extends IEsploraApi.Block { diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index df98719b9..baaea38d9 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -18,17 +18,27 @@ class BlocksRepository { public async $saveBlockInDatabase(block: BlockExtended) { try { const query = `INSERT INTO blocks( - height, hash, blockTimestamp, size, - weight, tx_count, coinbase_raw, difficulty, - pool_id, fees, fee_span, median_fee, - reward, version, bits, nonce, - merkle_root, previous_block_hash, avg_fee, avg_fee_rate + height, hash, blockTimestamp, size, + weight, tx_count, coinbase_raw, difficulty, + pool_id, fees, fee_span, median_fee, + reward, version, bits, nonce, + merkle_root, previous_block_hash, avg_fee, avg_fee_rate, + median_timestamp, block_time, header, coinbase_address, + coinbase_signature, utxoset_size, utxoset_change, avg_tx_size, + total_inputs, total_outputs, total_input_amt, total_output_amt, + fee_percentiles, segwit_total_txs, segwit_total_size, segwit_total_weight, + median_fee_amt ) VALUE ( ?, ?, FROM_UNIXTIME(?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - ?, ?, ?, ? + ?, ?, ?, ?, + ?, ?, ?, ?, + ?, ?, ?, ?, + ?, ?, ?, ?, + ?, ?, ?, ?, + ? )`; const params: any[] = [ @@ -52,6 +62,23 @@ class BlocksRepository { block.previousblockhash, block.extras.avgFee, block.extras.avgFeeRate, + block.extras.medianTimestamp, + block.extras.blockTime, + block.extras.header, + block.extras.coinbaseAddress, + block.extras.coinbaseSignature, + block.extras.utxoSetSize, + block.extras.utxoSetChange, + block.extras.avgTxSize, + block.extras.totalInputs, + block.extras.totalOutputs, + block.extras.totalInputAmt, + block.extras.totalOutputAmt, + JSON.stringify(block.extras.feePercentiles), + block.extras.segwitTotalTxs, + block.extras.segwitTotalSize, + block.extras.segwitTotalWeight, + block.extras.medianFeeAmt, ]; await DB.query(query, params); @@ -65,6 +92,33 @@ class BlocksRepository { } } + /** + * Save newly indexed data from core coinstatsindex + * + * @param utxoSetSize + * @param totalInputAmt + */ + public async $updateCoinStatsIndexData(blockHash: string, utxoSetSize: number, + totalInputAmt: number + ) : Promise { + try { + const query = ` + UPDATE blocks + SET utxoset_size = ?, total_input_amt = ? + WHERE hash = ? + `; + const params: any[] = [ + utxoSetSize, + totalInputAmt, + blockHash + ]; + await DB.query(query, params); + } catch (e: any) { + logger.err('Cannot update indexed block coinstatsindex. Reason: ' + (e instanceof Error ? e.message : e)); + throw e; + } + } + /** * Get all block height that have not been indexed between [startHeight, endHeight] */ @@ -310,32 +364,16 @@ class BlocksRepository { public async $getBlockByHeight(height: number): Promise { try { const [rows]: any[] = await DB.query(`SELECT - blocks.height, - hash, + blocks.*, hash as id, UNIX_TIMESTAMP(blocks.blockTimestamp) as blockTimestamp, - size, - weight, - tx_count, - coinbase_raw, - difficulty, pools.id as pool_id, pools.name as pool_name, pools.link as pool_link, pools.slug as pool_slug, pools.addresses as pool_addresses, pools.regexes as pool_regexes, - fees, - fee_span, - median_fee, - reward, - version, - bits, - nonce, - merkle_root, - previous_block_hash as previousblockhash, - avg_fee, - avg_fee_rate + previous_block_hash as previousblockhash FROM blocks JOIN pools ON blocks.pool_id = pools.id WHERE blocks.height = ${height} @@ -694,7 +732,6 @@ class BlocksRepository { logger.err('Cannot fetch CPFP unindexed blocks. Reason: ' + (e instanceof Error ? e.message : e)); throw e; } - return []; } /** @@ -741,7 +778,7 @@ class BlocksRepository { try { let query = `INSERT INTO blocks_prices(height, price_id) VALUES`; for (const price of blockPrices) { - query += ` (${price.height}, ${price.priceId}),` + query += ` (${price.height}, ${price.priceId}),`; } query = query.slice(0, -1); await DB.query(query); @@ -754,6 +791,24 @@ class BlocksRepository { } } } + + /** + * Get all indexed blocsk with missing coinstatsindex data + */ + public async $getBlocksMissingCoinStatsIndex(maxHeight: number, minHeight: number): Promise { + try { + const [blocks] = await DB.query(` + SELECT height, hash + FROM blocks + WHERE height >= ${minHeight} AND height <= ${maxHeight} AND + (utxoset_size IS NULL OR total_input_amt IS NULL) + `); + return blocks; + } catch (e) { + logger.err(`Cannot get blocks with missing coinstatsindex. Reason: ` + (e instanceof Error ? e.message : e)); + throw e; + } + } } export default new BlocksRepository(); diff --git a/backend/src/rpc-api/commands.ts b/backend/src/rpc-api/commands.ts index 5905a2bb6..78f5e12f4 100644 --- a/backend/src/rpc-api/commands.ts +++ b/backend/src/rpc-api/commands.ts @@ -89,5 +89,6 @@ module.exports = { walletLock: 'walletlock', walletPassphrase: 'walletpassphrase', walletPassphraseChange: 'walletpassphrasechange', - getTxoutSetinfo: 'gettxoutsetinfo' -} + getTxoutSetinfo: 'gettxoutsetinfo', + getIndexInfo: 'getindexinfo', +}; From 8612dd2d73cd173d02e8d01d640ddfb8c89f74c1 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 18 Feb 2023 08:28:59 +0900 Subject: [PATCH 016/102] Remove unescessary data from the blocks-bulk API --- backend/src/api/blocks.ts | 10 +++++++++- backend/src/repositories/BlocksRepository.ts | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index d950a9bd3..9c1c1d05b 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -783,10 +783,18 @@ class Blocks { const blocks: any[] = []; while (fromHeight <= toHeight) { - let block = await blocksRepository.$getBlockByHeight(fromHeight); + let block: any = await blocksRepository.$getBlockByHeight(fromHeight); if (!block) { block = await this.$indexBlock(fromHeight); } + + delete(block.hash); + delete(block.previous_block_hash); + delete(block.pool_name); + delete(block.pool_link); + delete(block.pool_addresses); + delete(block.pool_regexes); + blocks.push(block); fromHeight++; } diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index baaea38d9..cc6fdeb08 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -384,6 +384,7 @@ class BlocksRepository { } rows[0].fee_span = JSON.parse(rows[0].fee_span); + rows[0].fee_percentiles = JSON.parse(rows[0].fee_percentiles); return rows[0]; } catch (e) { logger.err(`Cannot get indexed block ${height}. Reason: ` + (e instanceof Error ? e.message : e)); From 8f716a1d8c7e5eeb4370e36119cc2446b37355b5 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 18 Feb 2023 08:42:38 +0900 Subject: [PATCH 017/102] Fix median timestamp field - Fix reponse format when block is indexed on the fly --- backend/src/api/blocks.ts | 9 +++++++-- backend/src/repositories/BlocksRepository.ts | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 9c1c1d05b..006d5f055 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -170,6 +170,7 @@ class Blocks { blk.extras.coinbaseTx = transactionUtils.stripCoinbaseTransaction(transactions[0]); blk.extras.coinbaseRaw = blk.extras.coinbaseTx.vin[0].scriptsig; blk.extras.usd = priceUpdater.latestPrices.USD; + blk.extras.medianTimestamp = block.medianTime; if (block.height === 0) { blk.extras.medianFee = 0; // 50th percentiles @@ -204,7 +205,6 @@ class Blocks { blk.extras.feePercentiles = [], // TODO blk.extras.medianFeeAmt = 0; // TODO - blk.extras.medianTimestamp = block.medianTime; // TODO blk.extras.blockTime = 0; // TODO blk.extras.orphaned = false; // TODO @@ -785,7 +785,11 @@ class Blocks { while (fromHeight <= toHeight) { let block: any = await blocksRepository.$getBlockByHeight(fromHeight); if (!block) { - block = await this.$indexBlock(fromHeight); + await this.$indexBlock(fromHeight); + block = await blocksRepository.$getBlockByHeight(fromHeight); + if (!block) { + continue; + } } delete(block.hash); @@ -794,6 +798,7 @@ class Blocks { delete(block.pool_link); delete(block.pool_addresses); delete(block.pool_regexes); + delete(block.median_timestamp); blocks.push(block); fromHeight++; diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index cc6fdeb08..d7811f601 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -367,6 +367,7 @@ class BlocksRepository { blocks.*, hash as id, UNIX_TIMESTAMP(blocks.blockTimestamp) as blockTimestamp, + UNIX_TIMESTAMP(blocks.median_timestamp) as medianTime, pools.id as pool_id, pools.name as pool_name, pools.link as pool_link, From 458f24c9f21a84269c4fd6e67ec57eef84ed4845 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 18 Feb 2023 11:26:13 +0900 Subject: [PATCH 018/102] Compute median fee and fee percentiles in sats --- backend/src/api/blocks.ts | 18 ++++++-- backend/src/api/database-migration.ts | 2 +- backend/src/mempool.interfaces.ts | 4 +- backend/src/repositories/BlocksRepository.ts | 19 +++++++++ .../repositories/BlocksSummariesRepository.ts | 42 +++++++++++++++++++ 5 files changed, 79 insertions(+), 6 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 006d5f055..ccf7bd2f4 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -203,10 +203,13 @@ class Blocks { blk.extras.segwitTotalWeight = stats.swtotal_weight; } - blk.extras.feePercentiles = [], // TODO - blk.extras.medianFeeAmt = 0; // TODO blk.extras.blockTime = 0; // TODO blk.extras.orphaned = false; // TODO + + blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); + if (blk.extras.feePercentiles !== null) { + blk.extras.medianFeeAmt = blk.extras.feePercentiles[3]; + } blk.extras.virtualSize = block.weight / 4.0; if (blk.extras.coinbaseTx.vout.length > 0) { @@ -791,7 +794,6 @@ class Blocks { continue; } } - delete(block.hash); delete(block.previous_block_hash); delete(block.pool_name); @@ -800,6 +802,16 @@ class Blocks { delete(block.pool_regexes); delete(block.median_timestamp); + // This requires `blocks_summaries` to be available. It takes a very long + // time to index this table so we just try to serve the data the best we can + if (block.fee_percentiles === null) { + block.fee_percentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); + if (block.fee_percentiles !== null) { + block.median_fee_amt = block.fee_percentiles[3]; + await blocksRepository.$saveFeePercentilesForBlockId(block.id, block.fee_percentiles); + } + } + blocks.push(block); fromHeight++; } diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 2c6adfd1b..352abfbfe 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -772,7 +772,7 @@ class DatabaseMigration { ADD total_outputs int unsigned NOT NULL, ADD total_output_amt bigint unsigned NOT NULL, ADD fee_percentiles longtext NULL, - ADD median_fee_amt int unsigned NOT NULL, + ADD median_fee_amt int unsigned NULL, ADD segwit_total_txs int unsigned NOT NULL, ADD segwit_total_size int unsigned NOT NULL, ADD segwit_total_weight int unsigned NOT NULL, diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index a1a9e1687..a7e7c4ec6 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -171,8 +171,8 @@ export interface BlockExtension { totalInputs?: number; totalOutputs?: number; totalOutputAmt?: number; - medianFeeAmt?: number; - feePercentiles?: number[], + medianFeeAmt?: number | null; + feePercentiles?: number[] | null, segwitTotalTxs?: number; segwitTotalSize?: number; segwitTotalWeight?: number; diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index d7811f601..cc0b43fe9 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -811,6 +811,25 @@ class BlocksRepository { throw e; } } + + /** + * Save indexed median fee to avoid recomputing it later + * + * @param id + * @param feePercentiles + */ + public async $saveFeePercentilesForBlockId(id: string, feePercentiles: number[]): Promise { + try { + await DB.query(` + UPDATE blocks SET fee_percentiles = ?, median_fee_amt = ? + WHERE hash = ?`, + [JSON.stringify(feePercentiles), feePercentiles[3], id] + ); + } catch (e) { + logger.err(`Cannot update block fee_percentiles. Reason: ` + (e instanceof Error ? e.message : e)); + throw e; + } + } } export default new BlocksRepository(); diff --git a/backend/src/repositories/BlocksSummariesRepository.ts b/backend/src/repositories/BlocksSummariesRepository.ts index 1406a1d07..ebc83b7dd 100644 --- a/backend/src/repositories/BlocksSummariesRepository.ts +++ b/backend/src/repositories/BlocksSummariesRepository.ts @@ -80,6 +80,48 @@ class BlocksSummariesRepository { logger.err('Cannot delete indexed blocks summaries. Reason: ' + (e instanceof Error ? e.message : e)); } } + + /** + * Get the fee percentiles if the block has already been indexed, [] otherwise + * + * @param id + */ + public async $getFeePercentilesByBlockId(id: string): Promise { + try { + const [rows]: any[] = await DB.query(` + SELECT transactions + FROM blocks_summaries + WHERE id = ?`, + [id] + ); + if (rows === null || rows.length === 0) { + return null; + } + + const transactions = JSON.parse(rows[0].transactions); + if (transactions === null) { + return null; + } + + transactions.shift(); // Ignore coinbase + transactions.sort((a: any, b: any) => a.fee - b.fee); + const fees = transactions.map((t: any) => t.fee); + + return [ + fees[0], // min + fees[Math.max(0, Math.floor(fees.length * 0.1) - 1)], // 10th + fees[Math.max(0, Math.floor(fees.length * 0.25) - 1)], // 25th + fees[Math.max(0, Math.floor(fees.length * 0.5) - 1)], // median + fees[Math.max(0, Math.floor(fees.length * 0.75) - 1)], // 75th + fees[Math.max(0, Math.floor(fees.length * 0.9) - 1)], // 90th + fees[fees.length - 1], // max + ]; + + } catch (e) { + logger.err(`Cannot get block summaries transactions. Reason: ` + (e instanceof Error ? e.message : e)); + return null; + } + } } export default new BlocksSummariesRepository(); From 281899f5514417224be4275873b4804a3323dd7e Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 18 Feb 2023 14:10:07 +0900 Subject: [PATCH 019/102] List orphaned blocks in the new blocks-bulk API --- backend/src/api/blocks.ts | 8 ++++- backend/src/api/chain-tips.ts | 53 +++++++++++++++++++++++++++++++ backend/src/index.ts | 2 ++ backend/src/mempool.interfaces.ts | 3 +- 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 backend/src/api/chain-tips.ts diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index ccf7bd2f4..25c199de9 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -25,6 +25,7 @@ import mining from './mining/mining'; import DifficultyAdjustmentsRepository from '../repositories/DifficultyAdjustmentsRepository'; import PricesRepository from '../repositories/PricesRepository'; import priceUpdater from '../tasks/price-updater'; +import chainTips from './chain-tips'; class Blocks { private blocks: BlockExtended[] = []; @@ -171,6 +172,7 @@ class Blocks { blk.extras.coinbaseRaw = blk.extras.coinbaseTx.vin[0].scriptsig; blk.extras.usd = priceUpdater.latestPrices.USD; blk.extras.medianTimestamp = block.medianTime; + blk.extras.orphans = chainTips.getOrphanedBlocksAtHeight(blk.height); if (block.height === 0) { blk.extras.medianFee = 0; // 50th percentiles @@ -204,7 +206,6 @@ class Blocks { } blk.extras.blockTime = 0; // TODO - blk.extras.orphaned = false; // TODO blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); if (blk.extras.feePercentiles !== null) { @@ -545,6 +546,7 @@ class Blocks { } else { this.currentBlockHeight++; logger.debug(`New block found (#${this.currentBlockHeight})!`); + await chainTips.updateOrphanedBlocks(); } const blockHash = await bitcoinApi.$getBlockHash(this.currentBlockHeight); @@ -812,6 +814,10 @@ class Blocks { } } + // Re-org can happen after indexing so we need to always get the + // latest state from core + block.orphans = chainTips.getOrphanedBlocksAtHeight(block.height); + blocks.push(block); fromHeight++; } diff --git a/backend/src/api/chain-tips.ts b/backend/src/api/chain-tips.ts new file mode 100644 index 000000000..5b0aa8a5c --- /dev/null +++ b/backend/src/api/chain-tips.ts @@ -0,0 +1,53 @@ +import logger from "../logger"; +import bitcoinClient from "./bitcoin/bitcoin-client"; + +export interface ChainTip { + height: number; + hash: string; + branchlen: number; + status: 'invalid' | 'active' | 'valid-fork' | 'valid-headers' | 'headers-only'; +}; + +export interface OrphanedBlock { + height: number; + hash: string; + status: 'valid-fork' | 'valid-headers' | 'headers-only'; +} + +class ChainTips { + private chainTips: ChainTip[] = []; + private orphanedBlocks: OrphanedBlock[] = []; + + public async updateOrphanedBlocks(): Promise { + this.chainTips = await bitcoinClient.getChainTips(); + this.orphanedBlocks = []; + + for (const chain of this.chainTips) { + if (chain.status === 'valid-fork' || chain.status === 'valid-headers' || chain.status === 'headers-only') { + let block = await bitcoinClient.getBlock(chain.hash); + while (block && block.confirmations === -1) { + this.orphanedBlocks.push({ + height: block.height, + hash: block.hash, + status: chain.status + }); + block = await bitcoinClient.getBlock(block.previousblockhash); + } + } + } + + logger.debug(`Updated orphaned blocks cache. Found ${this.orphanedBlocks.length} orphaned blocks`); + } + + public getOrphanedBlocksAtHeight(height: number): OrphanedBlock[] { + const orphans: OrphanedBlock[] = []; + for (const block of this.orphanedBlocks) { + if (block.height === height) { + orphans.push(block); + } + } + return orphans; + } +} + +export default new ChainTips(); \ No newline at end of file diff --git a/backend/src/index.ts b/backend/src/index.ts index d8d46fc9f..6ea3ddc43 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -37,6 +37,7 @@ import fundingTxFetcher from './tasks/lightning/sync-tasks/funding-tx-fetcher'; import forensicsService from './tasks/lightning/forensics.service'; import priceUpdater from './tasks/price-updater'; import mining from './api/mining/mining'; +import chainTips from './api/chain-tips'; import { AxiosError } from 'axios'; class Server { @@ -134,6 +135,7 @@ class Server { } priceUpdater.$run(); + await chainTips.updateOrphanedBlocks(); this.setUpHttpApiRoutes(); diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index a7e7c4ec6..e139bde8f 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -1,4 +1,5 @@ import { IEsploraApi } from './api/bitcoin/esplora-api.interface'; +import { OrphanedBlock } from './api/chain-tips'; import { HeapNode } from "./utils/pairing-heap"; export interface PoolTag { @@ -163,7 +164,7 @@ export interface BlockExtension { usd?: number | null; medianTimestamp?: number; blockTime?: number; - orphaned?: boolean; + orphans?: OrphanedBlock[] | null; coinbaseAddress?: string | null; coinbaseSignature?: string | null; virtualSize?: number; From e2fe39f241432ed6ec387952f5570071f7b81658 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 18 Feb 2023 14:53:21 +0900 Subject: [PATCH 020/102] Wrap orphaned blocks updater into try/catch --- backend/src/api/chain-tips.ts | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/backend/src/api/chain-tips.ts b/backend/src/api/chain-tips.ts index 5b0aa8a5c..92f148c8e 100644 --- a/backend/src/api/chain-tips.ts +++ b/backend/src/api/chain-tips.ts @@ -19,24 +19,28 @@ class ChainTips { private orphanedBlocks: OrphanedBlock[] = []; public async updateOrphanedBlocks(): Promise { - this.chainTips = await bitcoinClient.getChainTips(); - this.orphanedBlocks = []; + try { + this.chainTips = await bitcoinClient.getChainTips(); + this.orphanedBlocks = []; - for (const chain of this.chainTips) { - if (chain.status === 'valid-fork' || chain.status === 'valid-headers' || chain.status === 'headers-only') { - let block = await bitcoinClient.getBlock(chain.hash); - while (block && block.confirmations === -1) { - this.orphanedBlocks.push({ - height: block.height, - hash: block.hash, - status: chain.status - }); - block = await bitcoinClient.getBlock(block.previousblockhash); + for (const chain of this.chainTips) { + if (chain.status === 'valid-fork' || chain.status === 'valid-headers' || chain.status === 'headers-only') { + let block = await bitcoinClient.getBlock(chain.hash); + while (block && block.confirmations === -1) { + this.orphanedBlocks.push({ + height: block.height, + hash: block.hash, + status: chain.status + }); + block = await bitcoinClient.getBlock(block.previousblockhash); + } } } - } - logger.debug(`Updated orphaned blocks cache. Found ${this.orphanedBlocks.length} orphaned blocks`); + logger.debug(`Updated orphaned blocks cache. Found ${this.orphanedBlocks.length} orphaned blocks`); + } catch (e) { + logger.err(`Cannot get fetch orphaned blocks. Reason: ${e instanceof Error ? e.message : e}`); + } } public getOrphanedBlocksAtHeight(height: number): OrphanedBlock[] { From 6965c8f41ba3d2a358f17f27294f12fd0798bca8 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 19 Feb 2023 18:38:23 +0900 Subject: [PATCH 021/102] Fix median time indexing --- backend/src/api/bitcoin/bitcoin-api.ts | 1 + backend/src/repositories/BlocksRepository.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/api/bitcoin/bitcoin-api.ts b/backend/src/api/bitcoin/bitcoin-api.ts index cad11aeda..117245ef8 100644 --- a/backend/src/api/bitcoin/bitcoin-api.ts +++ b/backend/src/api/bitcoin/bitcoin-api.ts @@ -28,6 +28,7 @@ class BitcoinApi implements AbstractBitcoinApi { size: block.size, weight: block.weight, previousblockhash: block.previousblockhash, + medianTime: block.mediantime, }; } diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index cc0b43fe9..20331897c 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -34,7 +34,7 @@ class BlocksRepository { ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - ?, ?, ?, ?, + FROM_UNIXTIME(?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, From eceedf0bdfa6fd806596d2f707bc3f437de94c9d Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 19 Feb 2023 19:17:51 +0900 Subject: [PATCH 022/102] Dont compute fee percentile / median fee when indexing is disabled because we need summaries --- backend/src/api/blocks.ts | 8 +++++--- backend/src/database.ts | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 25c199de9..8a11bccc5 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -207,9 +207,11 @@ class Blocks { blk.extras.blockTime = 0; // TODO - blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); - if (blk.extras.feePercentiles !== null) { - blk.extras.medianFeeAmt = blk.extras.feePercentiles[3]; + if (Common.indexingEnabled()) { + blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); + if (blk.extras.feePercentiles !== null) { + blk.extras.medianFeeAmt = blk.extras.feePercentiles[3]; + } } blk.extras.virtualSize = block.weight / 4.0; diff --git a/backend/src/database.ts b/backend/src/database.ts index c2fb0980b..a504eb0fa 100644 --- a/backend/src/database.ts +++ b/backend/src/database.ts @@ -24,7 +24,8 @@ import { FieldPacket, OkPacket, PoolOptions, ResultSetHeader, RowDataPacket } fr private checkDBFlag() { if (config.DATABASE.ENABLED === false) { - logger.err('Trying to use DB feature but config.DATABASE.ENABLED is set to false, please open an issue'); + const stack = new Error().stack; + logger.err(`Trying to use DB feature but config.DATABASE.ENABLED is set to false, please open an issue.\nStack trace: ${stack}}`); } } From b2eaa7efb1636ddcfb37fc3ab1c7671c82be91d1 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 20 Feb 2023 11:59:38 +0900 Subject: [PATCH 023/102] Fix fee percentiles indexing --- backend/src/repositories/BlocksRepository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index 20331897c..1f244d7cd 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -74,7 +74,7 @@ class BlocksRepository { block.extras.totalOutputs, block.extras.totalInputAmt, block.extras.totalOutputAmt, - JSON.stringify(block.extras.feePercentiles), + block.extras.feePercentiles ? JSON.stringify(block.extras.feePercentiles) : null, block.extras.segwitTotalTxs, block.extras.segwitTotalSize, block.extras.segwitTotalWeight, From 75a99568bfff64d5192df21f9093bc3e412b07fd Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 23 Feb 2023 08:50:30 +0900 Subject: [PATCH 024/102] Index coinbase signature in ascii --- backend/src/api/blocks.ts | 2 ++ backend/src/api/database-migration.ts | 1 + backend/src/mempool.interfaces.ts | 1 + backend/src/repositories/BlocksRepository.ts | 5 +++-- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 8a11bccc5..3d33642ce 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -218,9 +218,11 @@ class Blocks { if (blk.extras.coinbaseTx.vout.length > 0) { blk.extras.coinbaseAddress = blk.extras.coinbaseTx.vout[0].scriptpubkey_address ?? null; blk.extras.coinbaseSignature = blk.extras.coinbaseTx.vout[0].scriptpubkey_asm ?? null; + blk.extras.coinbaseSignatureAscii = transactionUtils.hex2ascii(blk.extras.coinbaseTx.vin[0].scriptsig) ?? null; } else { blk.extras.coinbaseAddress = null; blk.extras.coinbaseSignature = null; + blk.extras.coinbaseSignatureAscii = null; } const header = await bitcoinClient.getBlockHeader(block.id, false); diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 352abfbfe..c965ef420 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -767,6 +767,7 @@ class DatabaseMigration { ADD block_time int unsigned NOT NULL, ADD coinbase_address varchar(100) NULL, ADD coinbase_signature varchar(500) NULL, + ADD coinbase_signature_ascii varchar(500) NULL, ADD avg_tx_size double unsigned NOT NULL, ADD total_inputs int unsigned NOT NULL, ADD total_outputs int unsigned NOT NULL, diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index e139bde8f..cb95be98a 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -167,6 +167,7 @@ export interface BlockExtension { orphans?: OrphanedBlock[] | null; coinbaseAddress?: string | null; coinbaseSignature?: string | null; + coinbaseSignatureAscii?: string | null; virtualSize?: number; avgTxSize?: number; totalInputs?: number; diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index 1f244d7cd..e2362b67d 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -27,7 +27,7 @@ class BlocksRepository { coinbase_signature, utxoset_size, utxoset_change, avg_tx_size, total_inputs, total_outputs, total_input_amt, total_output_amt, fee_percentiles, segwit_total_txs, segwit_total_size, segwit_total_weight, - median_fee_amt + median_fee_amt, coinbase_signature_ascii ) VALUE ( ?, ?, FROM_UNIXTIME(?), ?, ?, ?, ?, ?, @@ -38,7 +38,7 @@ class BlocksRepository { ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - ? + ?, ? )`; const params: any[] = [ @@ -79,6 +79,7 @@ class BlocksRepository { block.extras.segwitTotalSize, block.extras.segwitTotalWeight, block.extras.medianFeeAmt, + block.extras.coinbaseSignatureAscii, ]; await DB.query(query, params); From 086ee68b520156e8b1fe6b63dc2cbe78ea4e2e5f Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 10:29:58 +0900 Subject: [PATCH 025/102] Remove `block_time` from indexed fields --- backend/src/api/blocks.ts | 2 -- backend/src/api/database-migration.ts | 1 - 2 files changed, 3 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 3d33642ce..ba3927ab7 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -205,8 +205,6 @@ class Blocks { blk.extras.segwitTotalWeight = stats.swtotal_weight; } - blk.extras.blockTime = 0; // TODO - if (Common.indexingEnabled()) { blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); if (blk.extras.feePercentiles !== null) { diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index c965ef420..6e6e6855f 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -764,7 +764,6 @@ class DatabaseMigration { private getAdditionalBlocksDataQuery(): string { return `ALTER TABLE blocks ADD median_timestamp timestamp NOT NULL, - ADD block_time int unsigned NOT NULL, ADD coinbase_address varchar(100) NULL, ADD coinbase_signature varchar(500) NULL, ADD coinbase_signature_ascii varchar(500) NULL, From a0488dba7664acc26e7517e3b019b8dd28d43324 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 11:33:36 +0900 Subject: [PATCH 026/102] Cleanup block before sending response in /blocks-bulk API Remove block_time Index summaries on the fly --- backend/src/api/blocks.ts | 70 +++++++++++++++----- backend/src/repositories/BlocksRepository.ts | 5 +- 2 files changed, 55 insertions(+), 20 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index ba3927ab7..459b3903e 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -205,7 +205,7 @@ class Blocks { blk.extras.segwitTotalWeight = stats.swtotal_weight; } - if (Common.indexingEnabled()) { + if (Common.blocksSummariesIndexingEnabled()) { blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); if (blk.extras.feePercentiles !== null) { blk.extras.medianFeeAmt = blk.extras.feePercentiles[3]; @@ -798,29 +798,65 @@ class Blocks { continue; } } - delete(block.hash); - delete(block.previous_block_hash); - delete(block.pool_name); - delete(block.pool_link); - delete(block.pool_addresses); - delete(block.pool_regexes); - delete(block.median_timestamp); - // This requires `blocks_summaries` to be available. It takes a very long - // time to index this table so we just try to serve the data the best we can - if (block.fee_percentiles === null) { - block.fee_percentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); - if (block.fee_percentiles !== null) { - block.median_fee_amt = block.fee_percentiles[3]; - await blocksRepository.$saveFeePercentilesForBlockId(block.id, block.fee_percentiles); + // Cleanup fields before sending the response + const cleanBlock: any = { + height: block.height ?? null, + hash: block.id ?? null, + timestamp: block.blockTimestamp ?? null, + median_timestamp: block.medianTime ?? null, + previousblockhash: block.previousblockhash ?? null, + difficulty: block.difficulty ?? null, + header: block.header ?? null, + version: block.version ?? null, + bits: block.bits ?? null, + nonce: block.nonce ?? null, + size: block.size ?? null, + weight: block.weight ?? null, + tx_count: block.tx_count ?? null, + merkle_root: block.merkle_root ?? null, + reward: block.reward ?? null, + total_fee_amt: block.fees ?? null, + avg_fee_amt: block.avg_fee ?? null, + median_fee_amt: block.median_fee_amt ?? null, + fee_amt_percentiles: block.fee_percentiles ?? null, + avg_fee_rate: block.avg_fee_rate ?? null, + median_fee_rate: block.median_fee ?? null, + fee_rate_percentiles: block.fee_span ?? null, + total_inputs: block.total_inputs ?? null, + total_input_amt: block.total_input_amt ?? null, + total_outputs: block.total_outputs ?? null, + total_output_amt: block.total_output_amt ?? null, + segwit_total_txs: block.segwit_total_txs ?? null, + segwit_total_size: block.segwit_total_size ?? null, + segwit_total_weight: block.segwit_total_weight ?? null, + avg_tx_size: block.avg_tx_size ?? null, + utxoset_change: block.utxoset_change ?? null, + utxoset_size: block.utxoset_size ?? null, + coinbase_raw: block.coinbase_raw ?? null, + coinbase_address: block.coinbase_address ?? null, + coinbase_signature: block.coinbase_signature ?? null, + pool_slug: block.pool_slug ?? null, + }; + + if (Common.blocksSummariesIndexingEnabled() && cleanBlock.fee_amt_percentiles === null) { + cleanBlock.fee_amt_percentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(cleanBlock.hash); + if (cleanBlock.fee_amt_percentiles === null) { + const block = await bitcoinClient.getBlock(cleanBlock.hash, 2); + const summary = this.summarizeBlock(block); + await BlocksSummariesRepository.$saveSummary({ height: block.height, mined: summary }); + cleanBlock.fee_amt_percentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(cleanBlock.hash); + } + if (cleanBlock.fee_amt_percentiles !== null) { + cleanBlock.median_fee_amt = cleanBlock.fee_amt_percentiles[3]; } } // Re-org can happen after indexing so we need to always get the // latest state from core - block.orphans = chainTips.getOrphanedBlocksAtHeight(block.height); + cleanBlock.orphans = chainTips.getOrphanedBlocksAtHeight(cleanBlock.height); - blocks.push(block); + blocks.push(cleanBlock); fromHeight++; } diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index e2362b67d..86dc006ff 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -23,7 +23,7 @@ class BlocksRepository { pool_id, fees, fee_span, median_fee, reward, version, bits, nonce, merkle_root, previous_block_hash, avg_fee, avg_fee_rate, - median_timestamp, block_time, header, coinbase_address, + median_timestamp, header, coinbase_address, coinbase_signature, utxoset_size, utxoset_change, avg_tx_size, total_inputs, total_outputs, total_input_amt, total_output_amt, fee_percentiles, segwit_total_txs, segwit_total_size, segwit_total_weight, @@ -34,7 +34,7 @@ class BlocksRepository { ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, - FROM_UNIXTIME(?), ?, ?, ?, + FROM_UNIXTIME(?), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, @@ -63,7 +63,6 @@ class BlocksRepository { block.extras.avgFee, block.extras.avgFeeRate, block.extras.medianTimestamp, - block.extras.blockTime, block.extras.header, block.extras.coinbaseAddress, block.extras.coinbaseSignature, From 0bf4d5218326373cdafb195ae3c08235419f76fd Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 11:41:54 +0900 Subject: [PATCH 027/102] Return zeroed out `fee_amt_percentiles` if there is no transaction --- .../src/repositories/BlocksSummariesRepository.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/backend/src/repositories/BlocksSummariesRepository.ts b/backend/src/repositories/BlocksSummariesRepository.ts index ebc83b7dd..2724ddcf5 100644 --- a/backend/src/repositories/BlocksSummariesRepository.ts +++ b/backend/src/repositories/BlocksSummariesRepository.ts @@ -108,13 +108,13 @@ class BlocksSummariesRepository { const fees = transactions.map((t: any) => t.fee); return [ - fees[0], // min - fees[Math.max(0, Math.floor(fees.length * 0.1) - 1)], // 10th - fees[Math.max(0, Math.floor(fees.length * 0.25) - 1)], // 25th - fees[Math.max(0, Math.floor(fees.length * 0.5) - 1)], // median - fees[Math.max(0, Math.floor(fees.length * 0.75) - 1)], // 75th - fees[Math.max(0, Math.floor(fees.length * 0.9) - 1)], // 90th - fees[fees.length - 1], // max + fees[0] ?? 0, // min + fees[Math.max(0, Math.floor(fees.length * 0.1) - 1)] ?? 0, // 10th + fees[Math.max(0, Math.floor(fees.length * 0.25) - 1)] ?? 0, // 25th + fees[Math.max(0, Math.floor(fees.length * 0.5) - 1)] ?? 0, // median + fees[Math.max(0, Math.floor(fees.length * 0.75) - 1)] ?? 0, // 75th + fees[Math.max(0, Math.floor(fees.length * 0.9) - 1)] ?? 0, // 90th + fees[fees.length - 1] ?? 0, // max ]; } catch (e) { From aa1114926c2296d79b9429a6e0ca47cb7b117c62 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 11:43:38 +0900 Subject: [PATCH 028/102] `previousblockhash` -> `previous_block_hash` --- backend/src/api/blocks.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 459b3903e..2a026a303 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -805,7 +805,7 @@ class Blocks { hash: block.id ?? null, timestamp: block.blockTimestamp ?? null, median_timestamp: block.medianTime ?? null, - previousblockhash: block.previousblockhash ?? null, + previous_block_hash: block.previousblockhash ?? null, difficulty: block.difficulty ?? null, header: block.header ?? null, version: block.version ?? null, From e19db4ae35e8d4f3a81c1a5b7c1ba5802d24bcd2 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 11:46:47 +0900 Subject: [PATCH 029/102] Add missing `coinbase_signature_ascii` --- backend/src/api/blocks.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 2a026a303..fb38e0d7e 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -836,6 +836,7 @@ class Blocks { coinbase_raw: block.coinbase_raw ?? null, coinbase_address: block.coinbase_address ?? null, coinbase_signature: block.coinbase_signature ?? null, + coinbase_signature_ascii: block.coinbase_signature_ascii ?? null, pool_slug: block.pool_slug ?? null, }; From ed8cf89fee51bf54a39f60421255711d0d981509 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 12:48:55 +0900 Subject: [PATCH 030/102] Format percentiles in a more verbose way --- backend/src/api/blocks.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index fb38e0d7e..204419496 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -853,6 +853,25 @@ class Blocks { } } + cleanBlock.fee_amt_percentiles = { + 'min': cleanBlock.fee_amt_percentiles[0], + 'perc_10': cleanBlock.fee_amt_percentiles[1], + 'perc_25': cleanBlock.fee_amt_percentiles[2], + 'perc_50': cleanBlock.fee_amt_percentiles[3], + 'perc_75': cleanBlock.fee_amt_percentiles[4], + 'perc_90': cleanBlock.fee_amt_percentiles[5], + 'max': cleanBlock.fee_amt_percentiles[6], + }; + cleanBlock.fee_rate_percentiles = { + 'min': cleanBlock.fee_rate_percentiles[0], + 'perc_10': cleanBlock.fee_rate_percentiles[1], + 'perc_25': cleanBlock.fee_rate_percentiles[2], + 'perc_50': cleanBlock.fee_rate_percentiles[3], + 'perc_75': cleanBlock.fee_rate_percentiles[4], + 'perc_90': cleanBlock.fee_rate_percentiles[5], + 'max': cleanBlock.fee_rate_percentiles[6], + }; + // Re-org can happen after indexing so we need to always get the // latest state from core cleanBlock.orphans = chainTips.getOrphanedBlocksAtHeight(cleanBlock.height); From 6c3a273e7588d53a495abfd3dccceaf0b9995ce7 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 14:24:47 +0900 Subject: [PATCH 031/102] Enabled coinstatsindex=1 --- production/bitcoin.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/production/bitcoin.conf b/production/bitcoin.conf index 46ab41b20..501f49f50 100644 --- a/production/bitcoin.conf +++ b/production/bitcoin.conf @@ -1,6 +1,7 @@ datadir=/bitcoin server=1 txindex=1 +coinstatsindex=1 listen=1 discover=1 par=16 From 822362c10584cc2eb4bc376685bd19e50be3b4cb Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 14:30:59 +0900 Subject: [PATCH 032/102] Increase cache schema version --- backend/src/api/disk-cache.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/disk-cache.ts b/backend/src/api/disk-cache.ts index cf40d6952..a75fd43cc 100644 --- a/backend/src/api/disk-cache.ts +++ b/backend/src/api/disk-cache.ts @@ -9,7 +9,7 @@ import { TransactionExtended } from '../mempool.interfaces'; import { Common } from './common'; class DiskCache { - private cacheSchemaVersion = 1; + private cacheSchemaVersion = 2; private static FILE_NAME = config.MEMPOOL.CACHE_DIR + '/cache.json'; private static FILE_NAMES = config.MEMPOOL.CACHE_DIR + '/cache{number}.json'; From ad4cbd60d5623dde7b8940065775dd3e24be79bc Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 14:40:28 +0900 Subject: [PATCH 033/102] Do not download orphaned block if `headers-only` --- backend/src/api/chain-tips.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/chain-tips.ts b/backend/src/api/chain-tips.ts index 92f148c8e..3384ebb19 100644 --- a/backend/src/api/chain-tips.ts +++ b/backend/src/api/chain-tips.ts @@ -24,7 +24,7 @@ class ChainTips { this.orphanedBlocks = []; for (const chain of this.chainTips) { - if (chain.status === 'valid-fork' || chain.status === 'valid-headers' || chain.status === 'headers-only') { + if (chain.status === 'valid-fork' || chain.status === 'valid-headers') { let block = await bitcoinClient.getBlock(chain.hash); while (block && block.confirmations === -1) { this.orphanedBlocks.push({ From 5d7c9f93153c501fe9d10080290510a877a146d7 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 15:06:47 +0900 Subject: [PATCH 034/102] Add config.MEMPOOOL.MAX_BLOCKS_BULK_QUERY parameter (default to 0, API disable) --- backend/src/__fixtures__/mempool-config.template.json | 3 ++- backend/src/__tests__/config.test.ts | 1 + backend/src/api/bitcoin/bitcoin.routes.ts | 10 ++++++++-- backend/src/config.ts | 2 ++ docker/README.md | 2 ++ docker/backend/mempool-config.json | 3 ++- docker/backend/start.sh | 2 ++ 7 files changed, 19 insertions(+), 4 deletions(-) diff --git a/backend/src/__fixtures__/mempool-config.template.json b/backend/src/__fixtures__/mempool-config.template.json index 9d8a7e900..fa7ea7d21 100644 --- a/backend/src/__fixtures__/mempool-config.template.json +++ b/backend/src/__fixtures__/mempool-config.template.json @@ -28,7 +28,8 @@ "AUDIT": "__MEMPOOL_AUDIT__", "ADVANCED_GBT_AUDIT": "__MEMPOOL_ADVANCED_GBT_AUDIT__", "ADVANCED_GBT_MEMPOOL": "__MEMPOOL_ADVANCED_GBT_MEMPOOL__", - "CPFP_INDEXING": "__MEMPOOL_CPFP_INDEXING__" + "CPFP_INDEXING": "__MEMPOOL_CPFP_INDEXING__", + "MAX_BLOCKS_BULK_QUERY": "__MEMPOOL_MAX_BLOCKS_BULK_QUERY__" }, "CORE_RPC": { "HOST": "__CORE_RPC_HOST__", diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 8b011d833..1e4c05ae3 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -41,6 +41,7 @@ describe('Mempool Backend Config', () => { ADVANCED_GBT_AUDIT: false, ADVANCED_GBT_MEMPOOL: false, CPFP_INDEXING: false, + MAX_BLOCKS_BULK_QUERY: 0, }); expect(config.ELECTRUM).toStrictEqual({ HOST: '127.0.0.1', PORT: 3306, TLS_ENABLED: true }); diff --git a/backend/src/api/bitcoin/bitcoin.routes.ts b/backend/src/api/bitcoin/bitcoin.routes.ts index 6d145e854..78d027663 100644 --- a/backend/src/api/bitcoin/bitcoin.routes.ts +++ b/backend/src/api/bitcoin/bitcoin.routes.ts @@ -409,21 +409,27 @@ class BitcoinRoutes { if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { // Liquid, Bisq - Not implemented return res.status(404).send(`This API is only available for Bitcoin networks`); } + if (config.MEMPOOL.MAX_BLOCKS_BULK_QUERY <= 0) { + return res.status(404).send(`This API is disabled. Set config.MEMPOOL.MAX_BLOCKS_BULK_QUERY to a positive number to enable it.`); + } if (!Common.indexingEnabled()) { return res.status(404).send(`Indexing is required for this API`); } const from = parseInt(req.params.from, 10); - if (!from) { + if (!req.params.from || from < 0) { return res.status(400).send(`Parameter 'from' must be a block height (integer)`); } const to = req.params.to === undefined ? await bitcoinApi.$getBlockHeightTip() : parseInt(req.params.to, 10); - if (!to) { + if (to < 0) { return res.status(400).send(`Parameter 'to' must be a block height (integer)`); } if (from > to) { return res.status(400).send(`Parameter 'to' must be a higher block height than 'from'`); } + if ((to - from + 1) > config.MEMPOOL.MAX_BLOCKS_BULK_QUERY) { + return res.status(400).send(`You can only query ${config.MEMPOOL.MAX_BLOCKS_BULK_QUERY} blocks at once.`); + } res.setHeader('Expires', new Date(Date.now() + 1000 * 60).toUTCString()); res.json(await blocks.$getBlocksBetweenHeight(from, to)); diff --git a/backend/src/config.ts b/backend/src/config.ts index 2cda8d85b..ecd5c80aa 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -32,6 +32,7 @@ interface IConfig { ADVANCED_GBT_AUDIT: boolean; ADVANCED_GBT_MEMPOOL: boolean; CPFP_INDEXING: boolean; + MAX_BLOCKS_BULK_QUERY: number; }; ESPLORA: { REST_API_URL: string; @@ -153,6 +154,7 @@ const defaults: IConfig = { 'ADVANCED_GBT_AUDIT': false, 'ADVANCED_GBT_MEMPOOL': false, 'CPFP_INDEXING': false, + 'MAX_BLOCKS_BULK_QUERY': 0, }, 'ESPLORA': { 'REST_API_URL': 'http://127.0.0.1:3000', diff --git a/docker/README.md b/docker/README.md index 69bb96030..168d4b1fa 100644 --- a/docker/README.md +++ b/docker/README.md @@ -111,6 +111,7 @@ Below we list all settings from `mempool-config.json` and the corresponding over "ADVANCED_GBT_AUDIT": false, "ADVANCED_GBT_MEMPOOL": false, "CPFP_INDEXING": false, + "MAX_BLOCKS_BULK_QUERY": 0, }, ``` @@ -141,6 +142,7 @@ Corresponding `docker-compose.yml` overrides: MEMPOOL_ADVANCED_GBT_AUDIT: "" MEMPOOL_ADVANCED_GBT_MEMPOOL: "" MEMPOOL_CPFP_INDEXING: "" + MAX_BLOCKS_BULK_QUERY: "" ... ``` diff --git a/docker/backend/mempool-config.json b/docker/backend/mempool-config.json index 904370f3e..d2aa75c69 100644 --- a/docker/backend/mempool-config.json +++ b/docker/backend/mempool-config.json @@ -25,7 +25,8 @@ "AUDIT": __MEMPOOL_AUDIT__, "ADVANCED_GBT_AUDIT": __MEMPOOL_ADVANCED_GBT_AUDIT__, "ADVANCED_GBT_MEMPOOL": __MEMPOOL_ADVANCED_GBT_MEMPOOL__, - "CPFP_INDEXING": __MEMPOOL_CPFP_INDEXING__ + "CPFP_INDEXING": __MEMPOOL_CPFP_INDEXING__, + "MAX_BLOCKS_BULK_QUERY": __MEMPOOL__MAX_BLOCKS_BULK_QUERY__ }, "CORE_RPC": { "HOST": "__CORE_RPC_HOST__", diff --git a/docker/backend/start.sh b/docker/backend/start.sh index 58b19898a..3ee542892 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -30,6 +30,7 @@ __MEMPOOL_AUDIT__=${MEMPOOL_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_AUDIT__=${MEMPOOL_ADVANCED_GBT_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_MEMPOOL__=${MEMPOOL_ADVANCED_GBT_MEMPOOL:=false} __MEMPOOL_CPFP_INDEXING__=${MEMPOOL_CPFP_INDEXING:=false} +__MEMPOOL_MAX_BLOCKS_BULK_QUERY__=${MEMPOOL_MAX_BLOCKS_BULK_QUERY:=0} # CORE_RPC __CORE_RPC_HOST__=${CORE_RPC_HOST:=127.0.0.1} @@ -142,6 +143,7 @@ sed -i "s!__MEMPOOL_AUDIT__!${__MEMPOOL_AUDIT__}!g" mempool-config.json sed -i "s!__MEMPOOL_ADVANCED_GBT_MEMPOOL__!${__MEMPOOL_ADVANCED_GBT_MEMPOOL__}!g" mempool-config.json sed -i "s!__MEMPOOL_ADVANCED_GBT_AUDIT__!${__MEMPOOL_ADVANCED_GBT_AUDIT__}!g" mempool-config.json sed -i "s!__MEMPOOL_CPFP_INDEXING__!${__MEMPOOL_CPFP_INDEXING__}!g" mempool-config.json +sed -i "s!__MEMPOOL_MAX_BLOCKS_BULK_QUERY__!${__MEMPOOL_MAX_BLOCKS_BULK_QUERY__}!g" mempool-config.json sed -i "s/__CORE_RPC_HOST__/${__CORE_RPC_HOST__}/g" mempool-config.json sed -i "s/__CORE_RPC_PORT__/${__CORE_RPC_PORT__}/g" mempool-config.json From 8d9568016ed63608719d720dcb66ee69da514599 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 15:14:35 +0900 Subject: [PATCH 035/102] Remove duplicated entry in backend/src/__fixtures__/mempool-config.template.json --- backend/src/__fixtures__/mempool-config.template.json | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/__fixtures__/mempool-config.template.json b/backend/src/__fixtures__/mempool-config.template.json index fa7ea7d21..9890654a5 100644 --- a/backend/src/__fixtures__/mempool-config.template.json +++ b/backend/src/__fixtures__/mempool-config.template.json @@ -3,7 +3,6 @@ "ENABLED": true, "NETWORK": "__MEMPOOL_NETWORK__", "BACKEND": "__MEMPOOL_BACKEND__", - "ENABLED": true, "BLOCKS_SUMMARIES_INDEXING": true, "HTTP_PORT": 1, "SPAWN_CLUSTER_PROCS": 2, From 210f939e653767a53e11ab4025ed088427da00f7 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 13:59:37 +0900 Subject: [PATCH 036/102] Add missing truncate blocks table --- backend/src/api/database-migration.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 6e6e6855f..e732d15a5 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -486,6 +486,8 @@ class DatabaseMigration { if (databaseSchemaVersion < 55) { await this.$executeQuery(this.getAdditionalBlocksDataQuery()); + this.uniqueLog(logger.notice, this.blocksTruncatedMessage); + await this.$executeQuery('TRUNCATE blocks;'); // Need to re-index await this.updateToSchemaVersion(55); } } From d3fdef256c422e5866815753b7345a5b749aeee5 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 2 Jan 2023 13:25:40 +0100 Subject: [PATCH 037/102] Rewrite mining pools parser - Re-index blocks table --- backend/src/api/database-migration.ts | 14 +- backend/src/api/pools-parser.ts | 309 +++++--------------- backend/src/repositories/PoolsRepository.ts | 129 +++++++- backend/src/tasks/pools-updater.ts | 27 +- 4 files changed, 231 insertions(+), 248 deletions(-) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index e732d15a5..6f9da8cc1 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -62,8 +62,8 @@ class DatabaseMigration { if (databaseSchemaVersion <= 2) { // Disable some spam logs when they're not relevant - this.uniqueLogs.push(this.blocksTruncatedMessage); - this.uniqueLogs.push(this.hashratesTruncatedMessage); + this.uniqueLog(logger.notice, this.blocksTruncatedMessage); + this.uniqueLog(logger.notice, this.hashratesTruncatedMessage); } logger.debug('MIGRATIONS: Current state.schema_version ' + databaseSchemaVersion); @@ -490,6 +490,16 @@ class DatabaseMigration { await this.$executeQuery('TRUNCATE blocks;'); // Need to re-index await this.updateToSchemaVersion(55); } + + if (databaseSchemaVersion < 56) { + await this.$executeQuery('ALTER TABLE pools ADD unique_id int NOT NULL DEFAULT -1'); + await this.$executeQuery('TRUNCATE TABLE `blocks`'); + this.uniqueLog(logger.notice, this.blocksTruncatedMessage); + await this.$executeQuery('DELETE FROM `pools`'); + await this.$executeQuery('ALTER TABLE pools AUTO_INCREMENT = 1'); + this.uniqueLog(logger.notice, '`pools` table has been truncated`'); + await this.updateToSchemaVersion(56); + } } /** diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index e37414bbe..4ba38876d 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -1,15 +1,8 @@ import DB from '../database'; import logger from '../logger'; import config from '../config'; -import BlocksRepository from '../repositories/BlocksRepository'; - -interface Pool { - name: string; - link: string; - regexes: string[]; - addresses: string[]; - slug: string; -} +import PoolsRepository from '../repositories/PoolsRepository'; +import { PoolTag } from '../mempool.interfaces'; class PoolsParser { miningPools: any[] = []; @@ -20,270 +13,118 @@ class PoolsParser { 'addresses': '[]', 'slug': 'unknown' }; - slugWarnFlag = false; + + public setMiningPools(pools): void { + this.miningPools = pools; + } /** - * Parse the pools.json file, consolidate the data and dump it into the database + * Populate our db with updated mining pool definition + * @param pools */ - public async migratePoolsJson(poolsJson: object): Promise { - if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { - return; - } + public async migratePoolsJson(pools: any[]): Promise { + await this.$insertUnknownPool(); - // First we save every entries without paying attention to pool duplication - const poolsDuplicated: Pool[] = []; - - const coinbaseTags = Object.entries(poolsJson['coinbase_tags']); - for (let i = 0; i < coinbaseTags.length; ++i) { - poolsDuplicated.push({ - 'name': (coinbaseTags[i][1]).name, - 'link': (coinbaseTags[i][1]).link, - 'regexes': [coinbaseTags[i][0]], - 'addresses': [], - 'slug': '' - }); - } - const addressesTags = Object.entries(poolsJson['payout_addresses']); - for (let i = 0; i < addressesTags.length; ++i) { - poolsDuplicated.push({ - 'name': (addressesTags[i][1]).name, - 'link': (addressesTags[i][1]).link, - 'regexes': [], - 'addresses': [addressesTags[i][0]], - 'slug': '' - }); - } - - // Then, we find unique mining pool names - const poolNames: string[] = []; - for (let i = 0; i < poolsDuplicated.length; ++i) { - if (poolNames.indexOf(poolsDuplicated[i].name) === -1) { - poolNames.push(poolsDuplicated[i].name); + for (const pool of pools) { + if (!pool.id) { + logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`); + continue; } - } - logger.debug(`Found ${poolNames.length} unique mining pools`, logger.tags.mining); - // Get existing pools from the db - let existingPools; - try { - if (config.DATABASE.ENABLED === true) { - [existingPools] = await DB.query({ sql: 'SELECT * FROM pools;', timeout: 120000 }); + const poolDB = await PoolsRepository.$getPoolByUniqueId(pool.id, false); + if (!poolDB) { + // New mining pool + const slug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase(); + logger.debug(`Inserting new mining pool ${pool.name}`); + await PoolsRepository.$insertNewMiningPool(pool, slug); } else { - existingPools = []; - } - } catch (e) { - logger.err('Cannot get existing pools from the database, skipping pools.json import', logger.tags.mining); - return; - } - - this.miningPools = []; - - // Finally, we generate the final consolidated pools data - const finalPoolDataAdd: Pool[] = []; - const finalPoolDataUpdate: Pool[] = []; - const finalPoolDataRename: Pool[] = []; - for (let i = 0; i < poolNames.length; ++i) { - let allAddresses: string[] = []; - let allRegexes: string[] = []; - const match = poolsDuplicated.filter((pool: Pool) => pool.name === poolNames[i]); - - for (let y = 0; y < match.length; ++y) { - allAddresses = allAddresses.concat(match[y].addresses); - allRegexes = allRegexes.concat(match[y].regexes); - } - - const finalPoolName = poolNames[i].replace(`'`, `''`); // To support single quote in names when doing db queries - - let slug: string | undefined; - try { - slug = poolsJson['slugs'][poolNames[i]]; - } catch (e) { - if (this.slugWarnFlag === false) { - logger.warn(`pools.json does not seem to contain the 'slugs' object`, logger.tags.mining); - this.slugWarnFlag = true; + if (poolDB.name !== pool.name) { + // Pool has been renamed + const newSlug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase(); + logger.warn(`Renaming ${poolDB.name} mining pool to ${pool.name}. Slug has been updated. Maybe you want to make a redirection from 'https://mempool.space/mining/pool/${poolDB.slug}' to 'https://mempool.space/mining/pool/${newSlug}`); + await PoolsRepository.$renameMiningPool(poolDB.id, newSlug, pool.name); } - } - - if (slug === undefined) { - // Only keep alphanumerical - slug = poolNames[i].replace(/[^a-z0-9]/gi, '').toLowerCase(); - logger.warn(`No slug found for '${poolNames[i]}', generating it => '${slug}'`, logger.tags.mining); - } - - const poolObj = { - 'name': finalPoolName, - 'link': match[0].link, - 'regexes': allRegexes, - 'addresses': allAddresses, - 'slug': slug - }; - - const existingPool = existingPools.find((pool) => pool.name === poolNames[i]); - if (existingPool !== undefined) { - // Check if any data was actually updated - const equals = (a, b) => - a.length === b.length && - a.every((v, i) => v === b[i]); - if (!equals(JSON.parse(existingPool.addresses), poolObj.addresses) || !equals(JSON.parse(existingPool.regexes), poolObj.regexes)) { - finalPoolDataUpdate.push(poolObj); + if (poolDB.link !== pool.link) { + // Pool link has changed + logger.debug(`Updating link for ${pool.name} mining pool`); + await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link); } - } else if (config.DATABASE.ENABLED) { - // Double check that if we're not just renaming a pool (same address same regex) - const [poolToRename]: any[] = await DB.query(` - SELECT * FROM pools - WHERE addresses = ? OR regexes = ?`, - [JSON.stringify(poolObj.addresses), JSON.stringify(poolObj.regexes)] - ); - if (poolToRename && poolToRename.length > 0) { - // We're actually renaming an existing pool - finalPoolDataRename.push({ - 'name': poolObj.name, - 'link': poolObj.link, - 'regexes': allRegexes, - 'addresses': allAddresses, - 'slug': slug - }); - logger.debug(`Rename '${poolToRename[0].name}' mining pool to ${poolObj.name}`, logger.tags.mining); - } else { - logger.debug(`Add '${finalPoolName}' mining pool`, logger.tags.mining); - finalPoolDataAdd.push(poolObj); + if (JSON.stringify(pool.addresses) !== poolDB.addresses || + JSON.stringify(pool.tags) !== poolDB.regexes) { + // Pool addresses changed or coinbase tags changed + logger.notice(`Updating addresses and/or coinbase tags for ${pool.name} mining pool. If 'AUTOMATIC_BLOCK_REINDEXING' is enabled, we will re-index its blocks and 'unknown' blocks`); + await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.tags); + await this.$deleteBlocksForPool(poolDB); } } - - this.miningPools.push({ - 'name': finalPoolName, - 'link': match[0].link, - 'regexes': JSON.stringify(allRegexes), - 'addresses': JSON.stringify(allAddresses), - 'slug': slug - }); - } - - if (config.DATABASE.ENABLED === false) { // Don't run db operations - logger.info('Mining pools.json import completed (no database)', logger.tags.mining); - return; - } - - if (finalPoolDataAdd.length > 0 || finalPoolDataUpdate.length > 0 || - finalPoolDataRename.length > 0 - ) { - logger.debug(`Update pools table now`, logger.tags.mining); - - // Add new mining pools into the database - let queryAdd: string = 'INSERT INTO pools(name, link, regexes, addresses, slug) VALUES '; - for (let i = 0; i < finalPoolDataAdd.length; ++i) { - queryAdd += `('${finalPoolDataAdd[i].name}', '${finalPoolDataAdd[i].link}', - '${JSON.stringify(finalPoolDataAdd[i].regexes)}', '${JSON.stringify(finalPoolDataAdd[i].addresses)}', - ${JSON.stringify(finalPoolDataAdd[i].slug)}),`; - } - queryAdd = queryAdd.slice(0, -1) + ';'; - - // Updated existing mining pools in the database - const updateQueries: string[] = []; - for (let i = 0; i < finalPoolDataUpdate.length; ++i) { - updateQueries.push(` - UPDATE pools - SET name='${finalPoolDataUpdate[i].name}', link='${finalPoolDataUpdate[i].link}', - regexes='${JSON.stringify(finalPoolDataUpdate[i].regexes)}', addresses='${JSON.stringify(finalPoolDataUpdate[i].addresses)}', - slug='${finalPoolDataUpdate[i].slug}' - WHERE name='${finalPoolDataUpdate[i].name}' - ;`); - } - - // Rename mining pools - const renameQueries: string[] = []; - for (let i = 0; i < finalPoolDataRename.length; ++i) { - renameQueries.push(` - UPDATE pools - SET name='${finalPoolDataRename[i].name}', link='${finalPoolDataRename[i].link}', - slug='${finalPoolDataRename[i].slug}' - WHERE regexes='${JSON.stringify(finalPoolDataRename[i].regexes)}' - AND addresses='${JSON.stringify(finalPoolDataRename[i].addresses)}' - ;`); - } - - try { - if (finalPoolDataAdd.length > 0 || updateQueries.length > 0) { - await this.$deleteBlocskToReindex(finalPoolDataUpdate); - } - - if (finalPoolDataAdd.length > 0) { - await DB.query({ sql: queryAdd, timeout: 120000 }); - } - for (const query of updateQueries) { - await DB.query({ sql: query, timeout: 120000 }); - } - for (const query of renameQueries) { - await DB.query({ sql: query, timeout: 120000 }); - } - await this.insertUnknownPool(); - logger.info('Mining pools.json import completed', logger.tags.mining); - } catch (e) { - logger.err(`Cannot import pools in the database`, logger.tags.mining); - throw e; - } } - try { - await this.insertUnknownPool(); - } catch (e) { - logger.err(`Cannot insert unknown pool in the database`, logger.tags.mining); - throw e; - } + logger.info('Mining pools.json import completed'); } /** * Manually add the 'unknown pool' */ - private async insertUnknownPool() { + public async $insertUnknownPool(): Promise { + if (!config.DATABASE.ENABLED) { + return; + } + try { const [rows]: any[] = await DB.query({ sql: 'SELECT name from pools where name="Unknown"', timeout: 120000 }); if (rows.length === 0) { await DB.query({ - sql: `INSERT INTO pools(name, link, regexes, addresses, slug) - VALUES("Unknown", "https://learnmeabitcoin.com/technical/coinbase-transaction", "[]", "[]", "unknown"); + sql: `INSERT INTO pools(name, link, regexes, addresses, slug, unique_id) + VALUES("${this.unknownPool.name}", "${this.unknownPool.link}", "[]", "[]", "${this.unknownPool.slug}", 0); `}); } else { await DB.query(`UPDATE pools - SET name='Unknown', link='https://learnmeabitcoin.com/technical/coinbase-transaction', + SET name='${this.unknownPool.name}', link='${this.unknownPool.link}', regexes='[]', addresses='[]', - slug='unknown' - WHERE name='Unknown' + slug='${this.unknownPool.slug}', + unique_id=0 + WHERE slug='${this.unknownPool.slug}' `); } } catch (e) { - logger.err('Unable to insert "Unknown" mining pool', logger.tags.mining); + logger.err(`Unable to insert or update "Unknown" mining pool. Reason: ${e instanceof Error ? e.message : e}`); } } /** - * Delete blocks which needs to be reindexed + * Delete indexed blocks for an updated mining pool + * + * @param pool */ - private async $deleteBlocskToReindex(finalPoolDataUpdate: any[]) { + private async $deleteBlocksForPool(pool: PoolTag): Promise { if (config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING === false) { return; } - const blockCount = await BlocksRepository.$blockCount(null, null); - if (blockCount === 0) { - return; - } - - for (const updatedPool of finalPoolDataUpdate) { - const [pool]: any[] = await DB.query(`SELECT id, name from pools where slug = "${updatedPool.slug}"`); - if (pool.length > 0) { - logger.notice(`Deleting blocks from ${pool[0].name} mining pool for future re-indexing`, logger.tags.mining); - await DB.query(`DELETE FROM blocks WHERE pool_id = ${pool[0].id}`); - } - } - - // Ignore early days of Bitcoin as there were not mining pool yet - logger.notice(`Deleting blocks with unknown mining pool from height 130635 for future re-indexing`, logger.tags.mining); + // Get oldest blocks mined by the pool and assume pools.json updates only concern most recent years + // Ignore early days of Bitcoin as there were no mining pool yet + const [oldestPoolBlock]: any[] = await DB.query(` + SELECT height + FROM blocks + WHERE pool_id = ? + ORDER BY height + LIMIT 1`, + [pool.id] + ); + const oldestBlockHeight = oldestPoolBlock.length ?? 0 > 0 ? oldestPoolBlock[0].height : 130635; const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); - await DB.query(`DELETE FROM blocks WHERE pool_id = ${unknownPool[0].id} AND height > 130635`); - - logger.notice(`Truncating hashrates for future re-indexing`, logger.tags.mining); - await DB.query(`DELETE FROM hashrates`); + logger.notice(`Deleting blocks with unknown mining pool from height ${oldestBlockHeight} for re-indexing`); + await DB.query(` + DELETE FROM blocks + WHERE pool_id = ? AND height >= ${oldestBlockHeight}`, + [unknownPool[0].id] + ); + logger.notice(`Deleting blocks from ${pool.name} mining pool for re-indexing`); + await DB.query(` + DELETE FROM blocks + WHERE pool_id = ?`, + [pool.id] + ); } } diff --git a/backend/src/repositories/PoolsRepository.ts b/backend/src/repositories/PoolsRepository.ts index 56cc2b3bc..35319157e 100644 --- a/backend/src/repositories/PoolsRepository.ts +++ b/backend/src/repositories/PoolsRepository.ts @@ -1,4 +1,5 @@ import { Common } from '../api/common'; +import poolsParser from '../api/pools-parser'; import config from '../config'; import DB from '../database'; import logger from '../logger'; @@ -17,7 +18,11 @@ class PoolsRepository { * Get unknown pool tagging info */ public async $getUnknownPool(): Promise { - const [rows] = await DB.query('SELECT id, name, slug FROM pools where name = "Unknown"'); + let [rows]: any[] = await DB.query('SELECT id, name, slug FROM pools where name = "Unknown"'); + if (rows && rows.length === 0 && config.DATABASE.ENABLED) { + await poolsParser.$insertUnknownPool(); + [rows] = await DB.query('SELECT id, name, slug FROM pools where name = "Unknown"'); + } return rows[0]; } @@ -59,7 +64,7 @@ class PoolsRepository { /** * Get basic pool info and block count between two timestamp */ - public async $getPoolsInfoBetween(from: number, to: number): Promise { + public async $getPoolsInfoBetween(from: number, to: number): Promise { const query = `SELECT COUNT(height) as blockCount, pools.id as poolId, pools.name as poolName FROM pools LEFT JOIN blocks on pools.id = blocks.pool_id AND blocks.blockTimestamp BETWEEN FROM_UNIXTIME(?) AND FROM_UNIXTIME(?) @@ -75,9 +80,9 @@ class PoolsRepository { } /** - * Get mining pool statistics for one pool + * Get a mining pool info */ - public async $getPool(slug: string): Promise { + public async $getPool(slug: string, parse: boolean = true): Promise { const query = ` SELECT * FROM pools @@ -90,10 +95,12 @@ class PoolsRepository { return null; } - rows[0].regexes = JSON.parse(rows[0].regexes); + if (parse) { + rows[0].regexes = JSON.parse(rows[0].regexes); + } if (['testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { rows[0].addresses = []; // pools.json only contains mainnet addresses - } else { + } else if (parse) { rows[0].addresses = JSON.parse(rows[0].addresses); } @@ -103,6 +110,116 @@ class PoolsRepository { throw e; } } + + /** + * Get a mining pool info by its unique id + */ + public async $getPoolByUniqueId(id: number, parse: boolean = true): Promise { + const query = ` + SELECT * + FROM pools + WHERE pools.unique_id = ?`; + + try { + const [rows]: any[] = await DB.query(query, [id]); + + if (rows.length < 1) { + return null; + } + + if (parse) { + rows[0].regexes = JSON.parse(rows[0].regexes); + } + if (['testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { + rows[0].addresses = []; // pools.json only contains mainnet addresses + } else if (parse) { + rows[0].addresses = JSON.parse(rows[0].addresses); + } + + return rows[0]; + } catch (e) { + logger.err('Cannot get pool from db. Reason: ' + (e instanceof Error ? e.message : e)); + throw e; + } + } + + /** + * Insert a new mining pool in the database + * + * @param pool + */ + public async $insertNewMiningPool(pool: any, slug: string): Promise { + try { + await DB.query(` + INSERT INTO pools + SET name = ?, link = ?, addresses = ?, regexes = ?, slug = ?, unique_id = ?`, + [pool.name, pool.link, JSON.stringify(pool.addresses), JSON.stringify(pool.tags), slug, pool.id] + ); + } catch (e: any) { + logger.err(`Cannot insert new mining pool into db. Reason: ` + (e instanceof Error ? e.message : e)); + } + } + + /** + * Rename an existing mining pool + * + * @param dbId + * @param newSlug + * @param newName + */ + public async $renameMiningPool(dbId: number, newSlug: string, newName: string): Promise { + try { + await DB.query(` + UPDATE pools + SET slug = ?, name = ? + WHERE id = ?`, + [newSlug, newName, dbId] + ); + } catch (e: any) { + logger.err(`Cannot rename mining pool id ${dbId}. Reason: ` + (e instanceof Error ? e.message : e)); + } + } + + /** + * Update an exisiting mining pool link + * + * @param dbId + * @param newLink + */ + public async $updateMiningPoolLink(dbId: number, newLink: string): Promise { + try { + await DB.query(` + UPDATE pools + SET link = ? + WHERE id = ?`, + [newLink, dbId] + ); + } catch (e: any) { + logger.err(`Cannot update link for mining pool id ${dbId}. Reason: ` + (e instanceof Error ? e.message : e)); + } + + } + + /** + * Update an existing mining pool addresses or coinbase tags + * + * @param dbId + * @param addresses + * @param regexes + */ + public async $updateMiningPoolTags(dbId: number, addresses: string, regexes: string): Promise { + try { + await DB.query(` + UPDATE pools + SET addresses = ?, regexes = ? + WHERE id = ?`, + [JSON.stringify(addresses), JSON.stringify(regexes), dbId] + ); + } catch (e: any) { + logger.err(`Cannot update mining pool id ${dbId}. Reason: ` + (e instanceof Error ? e.message : e)); + } + } + } export default new PoolsRepository(); diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 086a00cea..8e78c44e6 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -61,9 +61,24 @@ class PoolsUpdater { if (poolsJson === undefined) { return; } - await poolsParser.migratePoolsJson(poolsJson); - await this.updateDBSha(githubSha); - logger.notice(`PoolsUpdater completed`, logger.tags.mining); + poolsParser.setMiningPools(poolsJson); + + if (config.DATABASE.ENABLED === false) { // Don't run db operations + logger.info('Mining pools.json import completed (no database)'); + return; + } + + try { + await DB.query('START TRANSACTION;'); + await poolsParser.migratePoolsJson(poolsJson); + await this.updateDBSha(githubSha); + await DB.query('START TRANSACTION;'); + await DB.query('COMMIT;'); + } catch (e) { + logger.err(`Could not migrate mining pools, rolling back. Reason: ${e instanceof Error ? e.message : e}`); + await DB.query('ROLLBACK;'); + } + logger.notice('PoolsUpdater completed'); } catch (e) { this.lastRun = now - (oneWeek - oneDay); // Try again in 24h instead of waiting next week @@ -106,8 +121,8 @@ class PoolsUpdater { const response = await this.query(this.treeUrl); if (response !== undefined) { - for (const file of response['tree']) { - if (file['path'] === 'pools.json') { + for (const file of response) { + if (file['name'] === 'pool-list.json') { return file['sha']; } } @@ -120,7 +135,7 @@ class PoolsUpdater { /** * Http request wrapper */ - private async query(path): Promise { + private async query(path): Promise { type axiosOptions = { headers: { 'User-Agent': string From d87fb04a920bd4c630a58ec38c0ff016e8ec08ed Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 12 Feb 2023 22:15:24 +0900 Subject: [PATCH 038/102] Point to the new mining pool files pools-v2.json --- backend/src/config.ts | 2 +- backend/src/tasks/pools-updater.ts | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/backend/src/config.ts b/backend/src/config.ts index ecd5c80aa..8ccd7e2e4 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -148,7 +148,7 @@ const defaults: IConfig = { 'USER_AGENT': 'mempool', 'STDOUT_LOG_MIN_PRIORITY': 'debug', 'AUTOMATIC_BLOCK_REINDEXING': false, - 'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json', + 'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json', 'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/mempool/mining-pools/git/trees/master', 'AUDIT': false, 'ADVANCED_GBT_AUDIT': false, diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 8e78c44e6..a58e2177a 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -8,7 +8,7 @@ import { SocksProxyAgent } from 'socks-proxy-agent'; import * as https from 'https'; /** - * Maintain the most recent version of pools.json + * Maintain the most recent version of pools-v2.json */ class PoolsUpdater { lastRun: number = 0; @@ -38,7 +38,7 @@ class PoolsUpdater { } try { - const githubSha = await this.fetchPoolsSha(); // Fetch pools.json sha from github + const githubSha = await this.fetchPoolsSha(); // Fetch pools-v2.json sha from github if (githubSha === undefined) { return; } @@ -47,15 +47,15 @@ class PoolsUpdater { this.currentSha = await this.getShaFromDb(); } - logger.debug(`Pools.json sha | Current: ${this.currentSha} | Github: ${githubSha}`); + logger.debug(`pools-v2.json sha | Current: ${this.currentSha} | Github: ${githubSha}`); if (this.currentSha !== undefined && this.currentSha === githubSha) { return; } if (this.currentSha === undefined) { - logger.info(`Downloading pools.json for the first time from ${this.poolsUrl}`, logger.tags.mining); + logger.info(`Downloading pools-v2.json for the first time from ${this.poolsUrl}`, logger.tags.mining); } else { - logger.warn(`Pools.json is outdated, fetch latest from ${this.poolsUrl}`, logger.tags.mining); + logger.warn(`pools-v2.json is outdated, fetch latest from ${this.poolsUrl}`, logger.tags.mining); } const poolsJson = await this.query(this.poolsUrl); if (poolsJson === undefined) { @@ -64,7 +64,7 @@ class PoolsUpdater { poolsParser.setMiningPools(poolsJson); if (config.DATABASE.ENABLED === false) { // Don't run db operations - logger.info('Mining pools.json import completed (no database)'); + logger.info('Mining pools-v2.json import completed (no database)'); return; } @@ -87,7 +87,7 @@ class PoolsUpdater { } /** - * Fetch our latest pools.json sha from the db + * Fetch our latest pools-v2.json sha from the db */ private async updateDBSha(githubSha: string): Promise { this.currentSha = githubSha; @@ -96,39 +96,39 @@ class PoolsUpdater { await DB.query('DELETE FROM state where name="pools_json_sha"'); await DB.query(`INSERT INTO state VALUES('pools_json_sha', NULL, '${githubSha}')`); } catch (e) { - logger.err('Cannot save github pools.json sha into the db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining); + logger.err('Cannot save github pools-v2.json sha into the db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining); } } } /** - * Fetch our latest pools.json sha from the db + * Fetch our latest pools-v2.json sha from the db */ private async getShaFromDb(): Promise { try { const [rows]: any[] = await DB.query('SELECT string FROM state WHERE name="pools_json_sha"'); return (rows.length > 0 ? rows[0].string : undefined); } catch (e) { - logger.err('Cannot fetch pools.json sha from db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining); + logger.err('Cannot fetch pools-v2.json sha from db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining); return undefined; } } /** - * Fetch our latest pools.json sha from github + * Fetch our latest pools-v2.json sha from github */ private async fetchPoolsSha(): Promise { const response = await this.query(this.treeUrl); if (response !== undefined) { - for (const file of response) { - if (file['name'] === 'pool-list.json') { + for (const file of response['tree']) { + if (file['path'] === 'pools-v2.json') { return file['sha']; } } } - logger.err(`Cannot find "pools.json" in git tree (${this.treeUrl})`, logger.tags.mining); + logger.err(`Cannot find "pools-v2.json" in git tree (${this.treeUrl})`, logger.tags.mining); return undefined; } From 117aa1375d4570c14df319b7776aa44e97544219 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 12 Feb 2023 22:44:04 +0900 Subject: [PATCH 039/102] Disable mining pools update if AUTOMATIC_BLOCK_REINDEXING is not set - Re-index unknown blocks when a new pool is added --- backend/src/api/pools-parser.ts | 11 +++++++++++ backend/src/tasks/pools-updater.ts | 5 +++++ 2 files changed, 16 insertions(+) diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index 4ba38876d..7632f1207 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -37,6 +37,7 @@ class PoolsParser { const slug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase(); logger.debug(`Inserting new mining pool ${pool.name}`); await PoolsRepository.$insertNewMiningPool(pool, slug); + await this.$deleteUnknownBlocks(); } else { if (poolDB.name !== pool.name) { // Pool has been renamed @@ -126,6 +127,16 @@ class PoolsParser { [pool.id] ); } + + private async $deleteUnknownBlocks(): Promise { + const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); + logger.notice(`Deleting blocks with unknown mining pool from height 130635 for re-indexing`); + await DB.query(` + DELETE FROM blocks + WHERE pool_id = ? AND height >= 130635`, + [unknownPool[0].id] + ); + } } export default new PoolsParser(); diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index a58e2177a..cbe137163 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -17,6 +17,11 @@ class PoolsUpdater { treeUrl: string = config.MEMPOOL.POOLS_JSON_TREE_URL; public async updatePoolsJson(): Promise { + if (config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING === false) { + logger.info(`Not updating mining pools to avoid inconsistency because AUTOMATIC_BLOCK_REINDEXING is set to false`) + return; + } + if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { return; } From 6cd42cfc73b346daa64992201e8312dcb722f403 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 13 Feb 2023 10:16:41 +0900 Subject: [PATCH 040/102] Update missing POOLS_JSON_URL config --- backend/src/__tests__/config.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 1e4c05ae3..5717808dd 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -36,7 +36,7 @@ describe('Mempool Backend Config', () => { USER_AGENT: 'mempool', STDOUT_LOG_MIN_PRIORITY: 'debug', POOLS_JSON_TREE_URL: 'https://api.github.com/repos/mempool/mining-pools/git/trees/master', - POOLS_JSON_URL: 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json', + POOLS_JSON_URL: 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json', AUDIT: false, ADVANCED_GBT_AUDIT: false, ADVANCED_GBT_MEMPOOL: false, From c2f5cb95290a020fc7f72912c24e3916f5558e18 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 16 Feb 2023 09:09:14 +0900 Subject: [PATCH 041/102] Update pool parser to work with no database --- backend/src/api/pools-parser.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index 7632f1207..f322578cb 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -16,6 +16,11 @@ class PoolsParser { public setMiningPools(pools): void { this.miningPools = pools; + for (const pool of this.miningPools) { + pool.regexes = JSON.stringify(pool.tags); + pool.addresses = JSON.stringify(pool.addresses); + delete pool.tags; + } } /** From ad9e42db2640cb762e1635550ebd42c601a71210 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Fri, 24 Feb 2023 21:35:13 +0900 Subject: [PATCH 042/102] Use regexes instead of tags --- backend/src/api/pools-parser.ts | 30 +++++++++++++-------- backend/src/repositories/PoolsRepository.ts | 2 +- backend/src/tasks/pools-updater.ts | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index f322578cb..4e67ce98b 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -13,24 +13,32 @@ class PoolsParser { 'addresses': '[]', 'slug': 'unknown' }; + private uniqueLogs: string[] = []; + + private uniqueLog(loggerFunction: any, msg: string): void { + if (this.uniqueLogs.includes(msg)) { + return; + } + this.uniqueLogs.push(msg); + loggerFunction(msg); + } public setMiningPools(pools): void { - this.miningPools = pools; - for (const pool of this.miningPools) { - pool.regexes = JSON.stringify(pool.tags); - pool.addresses = JSON.stringify(pool.addresses); - delete pool.tags; + for (const pool of pools) { + pool.regexes = pool.tags; + delete(pool.tags); } + this.miningPools = pools; } /** * Populate our db with updated mining pool definition * @param pools */ - public async migratePoolsJson(pools: any[]): Promise { + public async migratePoolsJson(): Promise { await this.$insertUnknownPool(); - for (const pool of pools) { + for (const pool of this.miningPools) { if (!pool.id) { logger.info(`Mining pool ${pool.name} has no unique 'id' defined. Skipping.`); continue; @@ -56,10 +64,10 @@ class PoolsParser { await PoolsRepository.$updateMiningPoolLink(poolDB.id, pool.link); } if (JSON.stringify(pool.addresses) !== poolDB.addresses || - JSON.stringify(pool.tags) !== poolDB.regexes) { + JSON.stringify(pool.regexes) !== poolDB.regexes) { // Pool addresses changed or coinbase tags changed logger.notice(`Updating addresses and/or coinbase tags for ${pool.name} mining pool. If 'AUTOMATIC_BLOCK_REINDEXING' is enabled, we will re-index its blocks and 'unknown' blocks`); - await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.tags); + await PoolsRepository.$updateMiningPoolTags(poolDB.id, pool.addresses, pool.regexes); await this.$deleteBlocksForPool(poolDB); } } @@ -119,7 +127,7 @@ class PoolsParser { ); const oldestBlockHeight = oldestPoolBlock.length ?? 0 > 0 ? oldestPoolBlock[0].height : 130635; const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); - logger.notice(`Deleting blocks with unknown mining pool from height ${oldestBlockHeight} for re-indexing`); + this.uniqueLog(logger.notice, `Deleting blocks with unknown mining pool from height ${oldestBlockHeight} for re-indexing`); await DB.query(` DELETE FROM blocks WHERE pool_id = ? AND height >= ${oldestBlockHeight}`, @@ -135,7 +143,7 @@ class PoolsParser { private async $deleteUnknownBlocks(): Promise { const [unknownPool] = await DB.query(`SELECT id from pools where slug = "unknown"`); - logger.notice(`Deleting blocks with unknown mining pool from height 130635 for re-indexing`); + this.uniqueLog(logger.notice, `Deleting blocks with unknown mining pool from height 130635 for re-indexing`); await DB.query(` DELETE FROM blocks WHERE pool_id = ? AND height >= 130635`, diff --git a/backend/src/repositories/PoolsRepository.ts b/backend/src/repositories/PoolsRepository.ts index 35319157e..63bddd497 100644 --- a/backend/src/repositories/PoolsRepository.ts +++ b/backend/src/repositories/PoolsRepository.ts @@ -153,7 +153,7 @@ class PoolsRepository { await DB.query(` INSERT INTO pools SET name = ?, link = ?, addresses = ?, regexes = ?, slug = ?, unique_id = ?`, - [pool.name, pool.link, JSON.stringify(pool.addresses), JSON.stringify(pool.tags), slug, pool.id] + [pool.name, pool.link, JSON.stringify(pool.addresses), JSON.stringify(pool.regexes), slug, pool.id] ); } catch (e: any) { logger.err(`Cannot insert new mining pool into db. Reason: ` + (e instanceof Error ? e.message : e)); diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index cbe137163..6d5a86559 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -75,7 +75,7 @@ class PoolsUpdater { try { await DB.query('START TRANSACTION;'); - await poolsParser.migratePoolsJson(poolsJson); + await poolsParser.migratePoolsJson(); await this.updateDBSha(githubSha); await DB.query('START TRANSACTION;'); await DB.query('COMMIT;'); From 3d38064dbbc7e76e3204b0d339161575ef3d7b22 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 16:48:11 +0900 Subject: [PATCH 043/102] Increase db schema version to 56 --- backend/src/api/database-migration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 6f9da8cc1..3140ea358 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -7,7 +7,7 @@ import cpfpRepository from '../repositories/CpfpRepository'; import { RowDataPacket } from 'mysql2'; class DatabaseMigration { - private static currentVersion = 55; + private static currentVersion = 56; private queryTimeout = 3600_000; private statisticsAddedIndexed = false; private uniqueLogs: string[] = []; From 2363a397f1f4ea3ee366f395a8ad8aaae1576c20 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 17:05:58 +0900 Subject: [PATCH 044/102] Remove duplicated db transaction --- backend/src/tasks/pools-updater.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 6d5a86559..1ac87e695 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -77,7 +77,6 @@ class PoolsUpdater { await DB.query('START TRANSACTION;'); await poolsParser.migratePoolsJson(); await this.updateDBSha(githubSha); - await DB.query('START TRANSACTION;'); await DB.query('COMMIT;'); } catch (e) { logger.err(`Could not migrate mining pools, rolling back. Reason: ${e instanceof Error ? e.message : e}`); From 9395a5031e4742269f12e3c7e99b1fee099682d6 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sat, 25 Feb 2023 17:12:50 +0900 Subject: [PATCH 045/102] Log the whole exception in pool parser --- backend/src/tasks/pools-updater.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 1ac87e695..8aa73376f 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -79,14 +79,14 @@ class PoolsUpdater { await this.updateDBSha(githubSha); await DB.query('COMMIT;'); } catch (e) { - logger.err(`Could not migrate mining pools, rolling back. Reason: ${e instanceof Error ? e.message : e}`); + logger.err(`Could not migrate mining pools, rolling back. Exception: ${JSON.stringify(e)}`, logger.tags.mining); await DB.query('ROLLBACK;'); } logger.notice('PoolsUpdater completed'); } catch (e) { this.lastRun = now - (oneWeek - oneDay); // Try again in 24h instead of waiting next week - logger.err(`PoolsUpdater failed. Will try again in 24h. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.mining); + logger.err(`PoolsUpdater failed. Will try again in 24h. Exception: ${JSON.stringify(e)}`, logger.tags.mining); } } From 6d1e6a92ad5b120ea0c41a8709fec66872cf20ac Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 13 Feb 2023 14:23:32 +0900 Subject: [PATCH 046/102] [LND] Nullify zeroed timestamps --- backend/src/api/common.ts | 5 ++++- backend/src/api/database-migration.ts | 7 ++++++- backend/src/api/explorer/channels.api.ts | 11 +++++++++++ backend/src/api/explorer/nodes.api.ts | 5 +++++ backend/src/api/lightning/lightning-api.interface.ts | 6 +++--- backend/src/tasks/lightning/network-sync.service.ts | 2 +- 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/backend/src/api/common.ts b/backend/src/api/common.ts index 954c1a17d..77597eb0c 100644 --- a/backend/src/api/common.ts +++ b/backend/src/api/common.ts @@ -237,7 +237,10 @@ export class Common { ].join('x'); } - static utcDateToMysql(date?: number): string { + static utcDateToMysql(date?: number | null): string | null { + if (date === null) { + return null; + } const d = new Date((date || 0) * 1000); return d.toISOString().split('T')[0] + ' ' + d.toTimeString().split(' ')[0]; } diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 3140ea358..401fb0b2c 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -7,7 +7,7 @@ import cpfpRepository from '../repositories/CpfpRepository'; import { RowDataPacket } from 'mysql2'; class DatabaseMigration { - private static currentVersion = 56; + private static currentVersion = 57; private queryTimeout = 3600_000; private statisticsAddedIndexed = false; private uniqueLogs: string[] = []; @@ -500,6 +500,11 @@ class DatabaseMigration { this.uniqueLog(logger.notice, '`pools` table has been truncated`'); await this.updateToSchemaVersion(56); } + + if (databaseSchemaVersion < 57) { + await this.$executeQuery(`ALTER TABLE nodes MODIFY updated_at datetime NULL`); + await this.updateToSchemaVersion(57); + } } /** diff --git a/backend/src/api/explorer/channels.api.ts b/backend/src/api/explorer/channels.api.ts index 8314b3345..00d146770 100644 --- a/backend/src/api/explorer/channels.api.ts +++ b/backend/src/api/explorer/channels.api.ts @@ -559,6 +559,17 @@ class ChannelsApi { const policy1: Partial = channel.node1_policy || {}; const policy2: Partial = channel.node2_policy || {}; + // https://github.com/mempool/mempool/issues/3006 + if ((channel.last_update ?? 0) < 1514736061) { // January 1st 2018 + channel.last_update = null; + } + if ((policy1.last_update ?? 0) < 1514736061) { // January 1st 2018 + policy1.last_update = null; + } + if ((policy2.last_update ?? 0) < 1514736061) { // January 1st 2018 + policy2.last_update = null; + } + const query = `INSERT INTO channels ( id, diff --git a/backend/src/api/explorer/nodes.api.ts b/backend/src/api/explorer/nodes.api.ts index b3f83faa6..9e57e7802 100644 --- a/backend/src/api/explorer/nodes.api.ts +++ b/backend/src/api/explorer/nodes.api.ts @@ -630,6 +630,11 @@ class NodesApi { */ public async $saveNode(node: ILightningApi.Node): Promise { try { + // https://github.com/mempool/mempool/issues/3006 + if ((node.last_update ?? 0) < 1514736061) { // January 1st 2018 + node.last_update = null; + } + const sockets = (node.addresses?.map(a => a.addr).join(',')) ?? ''; const query = `INSERT INTO nodes( public_key, diff --git a/backend/src/api/lightning/lightning-api.interface.ts b/backend/src/api/lightning/lightning-api.interface.ts index 453e2fffc..cd5cb973d 100644 --- a/backend/src/api/lightning/lightning-api.interface.ts +++ b/backend/src/api/lightning/lightning-api.interface.ts @@ -21,7 +21,7 @@ export namespace ILightningApi { export interface Channel { channel_id: string; chan_point: string; - last_update: number; + last_update: number | null; node1_pub: string; node2_pub: string; capacity: string; @@ -36,11 +36,11 @@ export namespace ILightningApi { fee_rate_milli_msat: string; disabled: boolean; max_htlc_msat: string; - last_update: number; + last_update: number | null; } export interface Node { - last_update: number; + last_update: number | null; pub_key: string; alias: string; addresses: { diff --git a/backend/src/tasks/lightning/network-sync.service.ts b/backend/src/tasks/lightning/network-sync.service.ts index fdef7ecae..3e5ae1366 100644 --- a/backend/src/tasks/lightning/network-sync.service.ts +++ b/backend/src/tasks/lightning/network-sync.service.ts @@ -72,7 +72,7 @@ class NetworkSyncService { const graphNodesPubkeys: string[] = []; for (const node of nodes) { const latestUpdated = await channelsApi.$getLatestChannelUpdateForNode(node.pub_key); - node.last_update = Math.max(node.last_update, latestUpdated); + node.last_update = Math.max(node.last_update ?? 0, latestUpdated); await nodesApi.$saveNode(node); graphNodesPubkeys.push(node.pub_key); From 333aef5e94ce66360e2d6066b8e5de2eb2d33d74 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Sat, 25 Feb 2023 04:23:45 -0500 Subject: [PATCH 047/102] Update legal notices for 2023 --- LICENSE | 2 +- frontend/src/app/components/about/about.component.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index 966417847..ac267d120 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ The Mempool Open Source Project -Copyright (c) 2019-2022 The Mempool Open Source Project Developers +Copyright (c) 2019-2023 The Mempool Open Source Project Developers This program is free software; you can redistribute it and/or modify it under the terms of (at your option) either: diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html index 876bec028..03323b6ed 100644 --- a/frontend/src/app/components/about/about.component.html +++ b/frontend/src/app/components/about/about.component.html @@ -352,7 +352,7 @@ -
+

Enterprise Sponsors 🚀

-
+

Community Sponsors ❤️

@@ -187,7 +187,7 @@
-
+ -
+

Community Alliances

-
+

Project Translators

@@ -311,7 +311,7 @@ -
+

Project Contributors

@@ -323,7 +323,7 @@
-
+

Project Members

@@ -336,7 +336,7 @@
-
+

Project Maintainers

diff --git a/frontend/src/app/components/about/about.component.scss b/frontend/src/app/components/about/about.component.scss index 8390ce0ba..ae60e052e 100644 --- a/frontend/src/app/components/about/about.component.scss +++ b/frontend/src/app/components/about/about.component.scss @@ -46,6 +46,7 @@ .maintainers { margin-top: 68px; margin-bottom: 68px; + scroll-margin: 30px; } .maintainers { @@ -117,6 +118,7 @@ .project-translators, .community-integrations-sponsor, .maintainers { + scroll-margin: 30px; .wrapper { display: inline-block; a { diff --git a/frontend/src/app/components/about/about.component.ts b/frontend/src/app/components/about/about.component.ts index d26efb411..33c6ac5a2 100644 --- a/frontend/src/app/components/about/about.component.ts +++ b/frontend/src/app/components/about/about.component.ts @@ -5,7 +5,7 @@ import { StateService } from '../../services/state.service'; import { Observable } from 'rxjs'; import { ApiService } from '../../services/api.service'; import { IBackendInfo } from '../../interfaces/websocket.interface'; -import { Router } from '@angular/router'; +import { Router, ActivatedRoute } from '@angular/router'; import { map } from 'rxjs/operators'; import { ITranslators } from '../../interfaces/node-api.interface'; @@ -31,6 +31,7 @@ export class AboutComponent implements OnInit { public stateService: StateService, private apiService: ApiService, private router: Router, + private route: ActivatedRoute, @Inject(LOCALE_ID) public locale: string, ) { } @@ -60,6 +61,17 @@ export class AboutComponent implements OnInit { }) ); } + + ngAfterViewInit() { + const that = this; + setTimeout( () => { + if( this.route.snapshot.fragment ) { + if (document.getElementById( this.route.snapshot.fragment )) { + document.getElementById( this.route.snapshot.fragment ).scrollIntoView({behavior: "smooth", block: "center"}); + } + } + }, 1 ); + } sponsor(): void { if (this.officialMempoolSpace && this.stateService.env.BASE_MODULE === 'mempool') { From d3b681dca2d8b5ac931f592e443c1b9d67d0e3a1 Mon Sep 17 00:00:00 2001 From: softsimon Date: Sat, 25 Feb 2023 13:45:43 +0400 Subject: [PATCH 049/102] Localizing search box strings, channel tags fixes #3124 fixes #3128 fixes #3083 --- .../search-results.component.html | 24 +- .../closing-type/closing-type.component.ts | 8 +- .../channels-statistics.component.html | 4 +- frontend/src/locale/messages.xlf | 477 ++++++++++++------ 4 files changed, 335 insertions(+), 178 deletions(-) diff --git a/frontend/src/app/components/search-form/search-results/search-results.component.html b/frontend/src/app/components/search-form/search-results/search-results.component.html index a13228170..b0d043f53 100644 --- a/frontend/src/app/components/search-form/search-results/search-results.component.html +++ b/frontend/src/app/components/search-form/search-results/search-results.component.html @@ -1,30 +1,30 @@ + +Go to "{{ x }}" diff --git a/frontend/src/app/lightning/channel/closing-type/closing-type.component.ts b/frontend/src/app/lightning/channel/closing-type/closing-type.component.ts index 5aa6158d3..b6313250f 100644 --- a/frontend/src/app/lightning/channel/closing-type/closing-type.component.ts +++ b/frontend/src/app/lightning/channel/closing-type/closing-type.component.ts @@ -17,19 +17,19 @@ export class ClosingTypeComponent implements OnChanges { getLabelFromType(type: number): { label: string; class: string } { switch (type) { case 1: return { - label: 'Mutually closed', + label: $localize`Mutually closed`, class: 'success', }; case 2: return { - label: 'Force closed', + label: $localize`Force closed`, class: 'warning', }; case 3: return { - label: 'Force closed with penalty', + label: $localize`Force closed with penalty`, class: 'danger', }; default: return { - label: 'Unknown', + label: $localize`:@@e5d8bb389c702588877f039d72178f219453a72d:Unknown`, class: 'secondary', }; } diff --git a/frontend/src/app/lightning/channels-statistics/channels-statistics.component.html b/frontend/src/app/lightning/channels-statistics/channels-statistics.component.html index 44e19b8f6..31b4c33af 100644 --- a/frontend/src/app/lightning/channels-statistics/channels-statistics.component.html +++ b/frontend/src/app/lightning/channels-statistics/channels-statistics.component.html @@ -1,9 +1,9 @@
avg + [ngClass]="{'inactive': mode === 'avg'}">avg | med + [ngClass]="{'inactive': mode === 'med'}">med
diff --git a/frontend/src/locale/messages.xlf b/frontend/src/locale/messages.xlf index a4154cbcd..a8e49fbb2 100644 --- a/frontend/src/locale/messages.xlf +++ b/frontend/src/locale/messages.xlf @@ -323,11 +323,7 @@ src/app/components/block/block.component.html - 303,304 - - - src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 310,311 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -347,11 +343,7 @@ src/app/components/block/block.component.html - 304,305 - - - src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 311,312 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -550,7 +542,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -717,14 +709,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -734,14 +734,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -916,7 +924,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -960,7 +968,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -975,11 +983,11 @@ src/app/components/block/block.component.html - 245,246 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1028,7 +1036,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1056,7 +1064,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1067,10 +1075,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1082,11 +1086,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1112,11 +1116,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1132,11 +1136,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1153,7 +1157,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1171,7 +1175,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1186,7 +1190,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1454,7 +1458,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1470,7 +1474,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1897,7 +1901,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -1912,7 +1916,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -1923,7 +1927,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -1935,15 +1939,15 @@ Indexing blocks src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -1986,7 +1990,7 @@ src/app/components/transaction/transaction.component.html - 478 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2011,11 +2015,11 @@ src/app/components/transaction/transaction.component.html - 478,479 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2028,11 +2032,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 481,483 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2061,19 +2065,19 @@ src/app/components/block/block.component.html - 123,126 + 124,127 src/app/components/block/block.component.html - 127 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2113,27 +2117,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 483,486 + 477,480 src/app/components/transaction/transaction.component.html - 494,496 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2141,7 +2145,7 @@ src/app/dashboard/dashboard.component.html - 206,210 + 213,217 sat/vB shared.sat-vbyte @@ -2154,11 +2158,11 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize @@ -2261,7 +2265,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2289,11 +2293,11 @@ Size src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html @@ -2321,7 +2325,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2332,11 +2336,11 @@ Weight src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2348,7 +2352,18 @@ src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2381,7 +2396,7 @@ src/app/components/block/block.component.html - 126,127 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2397,11 +2412,11 @@ src/app/components/block/block.component.html - 131,133 + 138,140 src/app/components/block/block.component.html - 157,160 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2418,7 +2433,7 @@ src/app/components/block/block.component.html - 166,168 + 173,175 block.miner @@ -2430,7 +2445,7 @@ src/app/components/block/block.component.ts - 234 + 242 @@ -2479,6 +2494,14 @@ src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2501,7 +2524,7 @@ Fee span src/app/components/block/block.component.html - 122,123 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2513,7 +2536,7 @@ Based on average native segwit transaction of 140 vBytes src/app/components/block/block.component.html - 127,129 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2537,15 +2560,15 @@ Transaction fee tooltip - - Subsidy + fees: + + Subsidy + fees src/app/components/block/block.component.html - 146,149 + 153,156 src/app/components/block/block.component.html - 161,165 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees @@ -2554,7 +2577,7 @@ Expected src/app/components/block/block.component.html - 209 + 216 block.expected @@ -2562,11 +2585,11 @@ beta src/app/components/block/block.component.html - 209,210 + 216,217 src/app/components/block/block.component.html - 215,217 + 222,224 beta @@ -2574,7 +2597,7 @@ Actual src/app/components/block/block.component.html - 211,215 + 218,222 block.actual @@ -2582,7 +2605,7 @@ Expected Block src/app/components/block/block.component.html - 215 + 222 block.expected-block @@ -2590,7 +2613,7 @@ Actual Block src/app/components/block/block.component.html - 224 + 231 block.actual-block @@ -2598,7 +2621,7 @@ Bits src/app/components/block/block.component.html - 249,251 + 256,258 block.bits @@ -2606,7 +2629,7 @@ Merkle root src/app/components/block/block.component.html - 253,255 + 260,262 block.merkle-root @@ -2614,7 +2637,7 @@ Difficulty src/app/components/block/block.component.html - 264,267 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2642,7 +2665,7 @@ Nonce src/app/components/block/block.component.html - 268,270 + 275,277 block.nonce @@ -2650,7 +2673,7 @@ Block Header Hex src/app/components/block/block.component.html - 272,273 + 279,280 block.header @@ -2658,7 +2681,7 @@ Audit src/app/components/block/block.component.html - 290,294 + 297,301 Toggle Audit block.toggle-audit @@ -2667,11 +2690,11 @@ Details src/app/components/block/block.component.html - 297,301 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2692,11 +2715,11 @@ Error loading data. src/app/components/block/block.component.html - 316,318 + 323,325 src/app/components/block/block.component.html - 355,359 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2720,10 +2743,29 @@ Why is this block empty? src/app/components/block/block.component.html - 377,383 + 384,390 block.empty-block-explanation + + transaction + + src/app/components/blockchain-blocks/blockchain-blocks.component.html + 47 + + shared.transaction-count.singular + + + transactions + + src/app/components/blockchain-blocks/blockchain-blocks.component.html + 49 + + shared.transaction-count.plural + Pool @@ -2824,7 +2866,7 @@ src/app/dashboard/dashboard.component.html - 212,216 + 219,223 dashboard.txs @@ -3045,7 +3087,7 @@ src/app/dashboard/dashboard.component.html - 239,240 + 246,247 dashboard.incoming-transactions @@ -3057,7 +3099,7 @@ src/app/dashboard/dashboard.component.html - 242,245 + 249,252 dashboard.backend-is-synchronizing @@ -3069,7 +3111,7 @@ src/app/dashboard/dashboard.component.html - 247,252 + 254,259 vB/s shared.vbytes-per-second @@ -3082,7 +3124,7 @@ src/app/dashboard/dashboard.component.html - 210,211 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3428,6 +3470,31 @@ dashboard.adjustments + + Broadcast Transaction + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) @@ -3488,7 +3555,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3516,11 +3583,23 @@ mining.rank + + Avg Health + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3528,7 +3607,7 @@ All miners src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3536,7 +3615,7 @@ Pools Luck (1w) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3544,7 +3623,7 @@ Pools Count (1w) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3552,7 +3631,7 @@ Mining Pools src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3766,23 +3845,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,162 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex @@ -3791,7 +3853,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -3905,6 +3967,70 @@ search-form.search-title + + Bitcoin Block Height + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) @@ -4176,7 +4302,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4185,7 +4311,7 @@ First seen src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4218,7 +4344,7 @@ ETA src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4227,7 +4353,7 @@ In several hours (or more) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4236,11 +4362,11 @@ Descendant src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4249,7 +4375,7 @@ Ancestor src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4258,11 +4384,11 @@ Flow src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4271,7 +4397,7 @@ Hide diagram src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4279,7 +4405,7 @@ Show more src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4295,7 +4421,7 @@ Show less src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4307,7 +4433,7 @@ Show diagram src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4315,7 +4441,7 @@ Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4323,7 +4449,7 @@ Transaction not found. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4331,7 +4457,7 @@ Waiting for it to appear in the mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4339,7 +4465,7 @@ Effective fee rate src/app/components/transaction/transaction.component.html - 491,494 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4472,7 +4598,7 @@ Show more inputs to reveal fee data src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4480,7 +4606,7 @@ remaining src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4709,19 +4835,11 @@ dashboard.latest-transactions - - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee src/app/dashboard/dashboard.component.html - 203,204 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -4730,7 +4848,7 @@ Purging src/app/dashboard/dashboard.component.html - 204,205 + 211,212 Purgin below fee dashboard.purging @@ -4739,7 +4857,7 @@ Memory usage src/app/dashboard/dashboard.component.html - 216,217 + 223,224 Memory usage dashboard.memory-usage @@ -4748,7 +4866,7 @@ L-BTC in circulation src/app/dashboard/dashboard.component.html - 230,232 + 237,239 dashboard.lbtc-pegs-in-circulation @@ -5059,7 +5177,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5198,6 +5316,27 @@ 37 + + Mutually closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open @@ -5318,6 +5457,22 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity @@ -5434,11 +5589,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5506,11 +5661,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5674,11 +5829,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -5902,7 +6057,7 @@ No geolocation data available src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 From ba1cc05979ea187d0544dd77f94b5a344ddbf2c5 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Wed, 23 Nov 2022 04:08:42 -0500 Subject: [PATCH 050/102] Add i18n tag for big faq disclaimer --- frontend/src/app/docs/api-docs/api-docs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/docs/api-docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html index e7fb5af63..47332abc3 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.html +++ b/frontend/src/app/docs/api-docs/api-docs.component.html @@ -10,7 +10,7 @@
-
AliasAlias Channels Capacity {{ currency$ | async }} First seen Last updateLocationLocation
+
Alias Liquidity{{ currency$ | async }}{{ currency$ | async }} Channels First seen Last update + diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss index b7ed8cf04..452122d8e 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.scss @@ -45,4 +45,7 @@ tr, td, th { width: 15%; font-family: monospace; font-size: 14px; + @media (max-width: 991px) { + display: none !important; + } } diff --git a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html index 538cae1c2..4bab712a8 100644 --- a/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html +++ b/frontend/src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html @@ -14,7 +14,7 @@ {{ currency$ | async }} First seen Last updateLocationLocation
- {{ node.channels | number }} + {{ node.channels ? (node.channels | number) : '~' }} @@ -40,7 +40,7 @@ +

mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc.

For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).

+

mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc.

For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).

From 0b9c64483c220d380c00117b3793bb6c637b9107 Mon Sep 17 00:00:00 2001 From: softsimon Date: Sat, 25 Feb 2023 14:23:54 +0400 Subject: [PATCH 051/102] Extracting i18n with new faq disclaimer --- frontend/src/locale/messages.xlf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frontend/src/locale/messages.xlf b/frontend/src/locale/messages.xlf index a8e49fbb2..486faec90 100644 --- a/frontend/src/locale/messages.xlf +++ b/frontend/src/locale/messages.xlf @@ -4870,6 +4870,14 @@ dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service From 6b49096fa970cc29cdf2124f12b049658dd7aad8 Mon Sep 17 00:00:00 2001 From: softsimon Date: Sat, 25 Feb 2023 14:28:04 +0400 Subject: [PATCH 052/102] Fix for duplicate i18n strings --- .../blockchain-blocks.component.html | 6 ++--- frontend/src/locale/messages.xlf | 27 ++++++------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html index d5decd415..746c5fa5c 100644 --- a/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html +++ b/frontend/src/app/components/blockchain-blocks/blockchain-blocks.component.html @@ -43,10 +43,8 @@
- {{ i }} - transaction - {{ i }} - transactions + {{ i }} transaction + {{ i }} transactions
diff --git a/frontend/src/locale/messages.xlf b/frontend/src/locale/messages.xlf index 486faec90..181b860b3 100644 --- a/frontend/src/locale/messages.xlf +++ b/frontend/src/locale/messages.xlf @@ -325,6 +325,10 @@ src/app/components/block/block.component.html 310,311
+ + src/app/components/blockchain-blocks/blockchain-blocks.component.html + 46,47 + src/app/components/mempool-blocks/mempool-blocks.component.html 21,22 @@ -345,6 +349,10 @@ src/app/components/block/block.component.html 311,312 + + src/app/components/blockchain-blocks/blockchain-blocks.component.html + 47,48 + src/app/components/mempool-blocks/mempool-blocks.component.html 22,23 @@ -2747,25 +2755,6 @@ block.empty-block-explanation
- - transaction - - src/app/components/blockchain-blocks/blockchain-blocks.component.html - 47 - - shared.transaction-count.singular - - - transactions - - src/app/components/blockchain-blocks/blockchain-blocks.component.html - 49 - - shared.transaction-count.plural - Pool From f2e7dd51af3b653d318bebb0d83dc056b741640f Mon Sep 17 00:00:00 2001 From: softsimon Date: Sat, 25 Feb 2023 17:14:11 +0400 Subject: [PATCH 053/102] Fixing some i18n strings. --- .../block/block-preview.component.html | 2 +- .../node-fee-chart.component.ts | 8 ++--- frontend/src/locale/messages.xlf | 32 +++++++++++++------ 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/frontend/src/app/components/block/block-preview.component.html b/frontend/src/app/components/block/block-preview.component.html index 7300182f3..29da36373 100644 --- a/frontend/src/app/components/block/block-preview.component.html +++ b/frontend/src/app/components/block/block-preview.component.html @@ -8,7 +8,7 @@

Genesis - {{ blockHeight }} + {{ blockHeight }}

{{ blockHash.slice(0,32) }}

diff --git a/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts b/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts index f0370d3e1..242ecc6ed 100644 --- a/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts +++ b/frontend/src/app/lightning/node-fee-chart/node-fee-chart.component.ts @@ -167,7 +167,7 @@ export class NodeFeeChartComponent implements OnInit { padding: 10, data: [ { - name: 'Outgoing Fees', + name: $localize`Outgoing Fees`, inactiveColor: 'rgb(110, 112, 121)', textStyle: { color: 'white', @@ -175,7 +175,7 @@ export class NodeFeeChartComponent implements OnInit { icon: 'roundRect', }, { - name: 'Incoming Fees', + name: $localize`Incoming Fees`, inactiveColor: 'rgb(110, 112, 121)', textStyle: { color: 'white', @@ -205,7 +205,7 @@ export class NodeFeeChartComponent implements OnInit { series: outgoingData.length === 0 ? undefined : [ { zlevel: 0, - name: 'Outgoing Fees', + name: $localize`Outgoing Fees`, data: outgoingData.map(bucket => ({ value: bucket.capacity, label: bucket.label, @@ -219,7 +219,7 @@ export class NodeFeeChartComponent implements OnInit { }, { zlevel: 0, - name: 'Incoming Fees', + name: $localize`Incoming Fees`, data: incomingData.map(bucket => ({ value: -bucket.capacity, label: bucket.label, diff --git a/frontend/src/locale/messages.xlf b/frontend/src/locale/messages.xlf index 181b860b3..3e4c29cfe 100644 --- a/frontend/src/locale/messages.xlf +++ b/frontend/src/locale/messages.xlf @@ -2386,16 +2386,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee @@ -5818,6 +5808,28 @@ lightning.node-fee-distribution + + Outgoing Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week From 32733a30230ef8bea9c8d6afc97883f157d690a0 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 11:30:12 +0900 Subject: [PATCH 054/102] When we re-index blocks due to mining pools change, wipe the nodejs backend cache --- backend/src/api/disk-cache.ts | 1 + backend/src/api/pools-parser.ts | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/backend/src/api/disk-cache.ts b/backend/src/api/disk-cache.ts index a75fd43cc..e466982ad 100644 --- a/backend/src/api/disk-cache.ts +++ b/backend/src/api/disk-cache.ts @@ -62,6 +62,7 @@ class DiskCache { } wipeCache() { + logger.notice(`Wipping nodejs backend cache/cache*.json files`); fs.unlinkSync(DiskCache.FILE_NAME); for (let i = 1; i < DiskCache.CHUNK_FILES; i++) { fs.unlinkSync(DiskCache.FILE_NAMES.replace('{number}', i.toString())); diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index 4e67ce98b..d1705b829 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -3,6 +3,7 @@ import logger from '../logger'; import config from '../config'; import PoolsRepository from '../repositories/PoolsRepository'; import { PoolTag } from '../mempool.interfaces'; +import diskCache from './disk-cache'; class PoolsParser { miningPools: any[] = []; @@ -139,6 +140,10 @@ class PoolsParser { WHERE pool_id = ?`, [pool.id] ); + + // We also need to wipe the backend cache to make sure we don't serve blocks with + // the wrong mining pool (usually happen with unknown blocks) + diskCache.wipeCache(); } private async $deleteUnknownBlocks(): Promise { @@ -149,6 +154,10 @@ class PoolsParser { WHERE pool_id = ? AND height >= 130635`, [unknownPool[0].id] ); + + // We also need to wipe the backend cache to make sure we don't serve blocks with + // the wrong mining pool (usually happen with unknown blocks) + diskCache.wipeCache(); } } From 9a4a5ad94e0f1eed983de118a1f9ced4719dc5f5 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 11:37:57 +0900 Subject: [PATCH 055/102] Silence ENOENT exception when we wipe the nodejs backend cache --- backend/src/api/disk-cache.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/backend/src/api/disk-cache.ts b/backend/src/api/disk-cache.ts index e466982ad..c6af20e29 100644 --- a/backend/src/api/disk-cache.ts +++ b/backend/src/api/disk-cache.ts @@ -63,9 +63,23 @@ class DiskCache { wipeCache() { logger.notice(`Wipping nodejs backend cache/cache*.json files`); - fs.unlinkSync(DiskCache.FILE_NAME); + try { + fs.unlinkSync(DiskCache.FILE_NAME); + } catch (e: any) { + if (e?.code !== 'ENOENT') { + logger.err(`Cannot wipe cache file ${DiskCache.FILE_NAME}. Exception ${JSON.stringify(e)}`); + } + } + for (let i = 1; i < DiskCache.CHUNK_FILES; i++) { - fs.unlinkSync(DiskCache.FILE_NAMES.replace('{number}', i.toString())); + const filename = DiskCache.FILE_NAMES.replace('{number}', i.toString()); + try { + fs.unlinkSync(filename); + } catch (e: any) { + if (e?.code !== 'ENOENT') { + logger.err(`Cannot wipe cache file ${filename}. Exception ${JSON.stringify(e)}`); + } + } } } From 57fb305452446587d49299d47387522e87bc3b2b Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 13:54:43 +0900 Subject: [PATCH 056/102] Update missing "pools.json" -> "pools-v2.json" --- backend/README.md | 2 +- backend/mempool-config.sample.json | 2 +- backend/src/api/pools-parser.ts | 4 ++-- backend/src/repositories/PoolsRepository.ts | 2 +- docker/README.md | 4 ++-- docker/backend/start.sh | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/README.md b/backend/README.md index d00dc1812..2024e00b9 100644 --- a/backend/README.md +++ b/backend/README.md @@ -160,7 +160,7 @@ npm install -g ts-node nodemon Then, run the watcher: ``` -nodemon src/index.ts --ignore cache/ --ignore pools.json +nodemon src/index.ts --ignore cache/ ``` `nodemon` should be in npm's global binary folder. If needed, you can determine where that is with `npm -g bin`. diff --git a/backend/mempool-config.sample.json b/backend/mempool-config.sample.json index 5ebb25ea5..2369b64b5 100644 --- a/backend/mempool-config.sample.json +++ b/backend/mempool-config.sample.json @@ -22,7 +22,7 @@ "USER_AGENT": "mempool", "STDOUT_LOG_MIN_PRIORITY": "debug", "AUTOMATIC_BLOCK_REINDEXING": false, - "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json", + "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json", "POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master", "AUDIT": false, "ADVANCED_GBT_AUDIT": false, diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index 4e67ce98b..b34dcb7b8 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -73,7 +73,7 @@ class PoolsParser { } } - logger.info('Mining pools.json import completed'); + logger.info('Mining pools-v2.json import completed'); } /** @@ -115,7 +115,7 @@ class PoolsParser { return; } - // Get oldest blocks mined by the pool and assume pools.json updates only concern most recent years + // Get oldest blocks mined by the pool and assume pools-v2.json updates only concern most recent years // Ignore early days of Bitcoin as there were no mining pool yet const [oldestPoolBlock]: any[] = await DB.query(` SELECT height diff --git a/backend/src/repositories/PoolsRepository.ts b/backend/src/repositories/PoolsRepository.ts index 63bddd497..236955d65 100644 --- a/backend/src/repositories/PoolsRepository.ts +++ b/backend/src/repositories/PoolsRepository.ts @@ -99,7 +99,7 @@ class PoolsRepository { rows[0].regexes = JSON.parse(rows[0].regexes); } if (['testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { - rows[0].addresses = []; // pools.json only contains mainnet addresses + rows[0].addresses = []; // pools-v2.json only contains mainnet addresses } else if (parse) { rows[0].addresses = JSON.parse(rows[0].addresses); } diff --git a/docker/README.md b/docker/README.md index 168d4b1fa..468d8069b 100644 --- a/docker/README.md +++ b/docker/README.md @@ -102,11 +102,11 @@ Below we list all settings from `mempool-config.json` and the corresponding over "MEMPOOL_BLOCKS_AMOUNT": 8, "BLOCKS_SUMMARIES_INDEXING": false, "USE_SECOND_NODE_FOR_MINFEE": false, - "EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"], + "EXTERNAL_ASSETS": [], "STDOUT_LOG_MIN_PRIORITY": "info", "INDEXING_BLOCKS_AMOUNT": false, "AUTOMATIC_BLOCK_REINDEXING": false, - "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json", + "POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json", "POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master", "ADVANCED_GBT_AUDIT": false, "ADVANCED_GBT_MEMPOOL": false, diff --git a/docker/backend/start.sh b/docker/backend/start.sh index 3ee542892..ee5069386 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -24,7 +24,7 @@ __MEMPOOL_USER_AGENT__=${MEMPOOL_USER_AGENT:=mempool} __MEMPOOL_STDOUT_LOG_MIN_PRIORITY__=${MEMPOOL_STDOUT_LOG_MIN_PRIORITY:=info} __MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=false} __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__=${MEMPOOL_AUTOMATIC_BLOCK_REINDEXING:=false} -__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json} +__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=https://raw.githubusercontent.com/mempool/mining-pools/master/pools-v2.json} __MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=https://api.github.com/repos/mempool/mining-pools/git/trees/master} __MEMPOOL_AUDIT__=${MEMPOOL_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_AUDIT__=${MEMPOOL_ADVANCED_GBT_AUDIT:=false} From 7ad207766b0f8ebf522035061f43032bb4e67c59 Mon Sep 17 00:00:00 2001 From: wiz Date: Sun, 26 Feb 2023 13:54:45 +0900 Subject: [PATCH 057/102] ops: Update nginx-cache-warmer for new pool slugs API --- production/nginx-cache-warmer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production/nginx-cache-warmer b/production/nginx-cache-warmer index db025a137..cb742caee 100755 --- a/production/nginx-cache-warmer +++ b/production/nginx-cache-warmer @@ -1,6 +1,6 @@ #!/usr/bin/env zsh hostname=$(hostname) -slugs=(`curl -sSL https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json | jq -r '.slugs[]'`) +slugs=(`curl -sSL https://${hostname}/api/v1/mining/pools/3y|jq -r -S '(.pools[].slug)'`) warm() { From 7519eaf5d8d3d75605e4058f2db89a684ad8110b Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com> Date: Sat, 25 Feb 2023 21:06:34 -0800 Subject: [PATCH 058/102] Remove node 19 from the CI test matrix --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d0520f59c..2ff25b22f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ jobs: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" strategy: matrix: - node: ["16.16.0", "18.14.1", "19.6.1"] + node: ["16.16.0", "18.14.1"] flavor: ["dev", "prod"] fail-fast: false runs-on: "ubuntu-latest" @@ -55,7 +55,7 @@ jobs: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" strategy: matrix: - node: ["16.16.0", "18.14.1", "19.6.1"] + node: ["16.16.0", "18.14.1"] flavor: ["dev", "prod"] fail-fast: false runs-on: "ubuntu-latest" From d0d23035133248524ce0fa56a12a8aaa4eb1136e Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 14:19:10 +0900 Subject: [PATCH 059/102] Document `--update-pools` - Added some logs --- backend/README.md | 12 +++++++++++- backend/src/tasks/pools-updater.ts | 26 +++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/backend/README.md b/backend/README.md index d00dc1812..b77b835ba 100644 --- a/backend/README.md +++ b/backend/README.md @@ -219,6 +219,16 @@ Generate block at regular interval (every 10 seconds in this example): watch -n 10 "./src/bitcoin-cli -regtest -rpcport=8332 generatetoaddress 1 $address" ``` +### Mining pools update + +By default, mining pools will be not automatically updated regularly (`config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING` is set to `false`). + +To manually update your mining pools, you can use the `--update-pools` command line flag when you run the nodejs backend. For example `npm run start --update-pools`. This will trigger the mining pools update and automatically re-index appropriate blocks. + +You can enabled the automatic mining pools update by settings `config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING` to `true` in your `mempool-config.json`. + +When a `coinbase tag` or `coinbase address` change is detected, all blocks tagged to the `unknown` mining pools (starting from height 130635) will be deleted from the `blocks` table. Additionaly, all blocks which were tagged to the pool which has been updated will also be deleted from the `blocks` table. Of course, those blocks will be automatically reindexed. + ### Re-index tables You can manually force the nodejs backend to drop all data from a specified set of tables for future re-index. This is mostly useful for the mining dashboard and the lightning explorer. @@ -235,4 +245,4 @@ Feb 13 14:55:27 [63246] WARN: Indexed data for "hashrates" tables wi Feb 13 14:55:32 [63246] NOTICE: Table hashrates has been truncated ``` -Reference: https://github.com/mempool/mempool/pull/1269 \ No newline at end of file +Reference: https://github.com/mempool/mempool/pull/1269 diff --git a/backend/src/tasks/pools-updater.ts b/backend/src/tasks/pools-updater.ts index 8aa73376f..32de85f3a 100644 --- a/backend/src/tasks/pools-updater.ts +++ b/backend/src/tasks/pools-updater.ts @@ -17,11 +17,6 @@ class PoolsUpdater { treeUrl: string = config.MEMPOOL.POOLS_JSON_TREE_URL; public async updatePoolsJson(): Promise { - if (config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING === false) { - logger.info(`Not updating mining pools to avoid inconsistency because AUTOMATIC_BLOCK_REINDEXING is set to false`) - return; - } - if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { return; } @@ -36,12 +31,6 @@ class PoolsUpdater { this.lastRun = now; - if (config.SOCKS5PROXY.ENABLED) { - logger.info(`Updating latest mining pools from ${this.poolsUrl} over the Tor network`, logger.tags.mining); - } else { - logger.info(`Updating latest mining pools from ${this.poolsUrl} over clearnet`, logger.tags.mining); - } - try { const githubSha = await this.fetchPoolsSha(); // Fetch pools-v2.json sha from github if (githubSha === undefined) { @@ -57,10 +46,21 @@ class PoolsUpdater { return; } + // See backend README for more details about the mining pools update process + if (this.currentSha !== undefined && // If we don't have any mining pool, download it at least once + config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING !== true && // Automatic pools update is disabled + !process.env.npm_config_update_pools // We're not manually updating mining pool + ) { + logger.warn(`Updated mining pools data is available (${githubSha}) but AUTOMATIC_BLOCK_REINDEXING is disabled`); + logger.info(`You can update your mining pools using the --update-pools command flag. You may want to clear your nginx cache as well if applicable`); + return; + } + + const network = config.SOCKS5PROXY.ENABLED ? 'tor' : 'clearnet'; if (this.currentSha === undefined) { - logger.info(`Downloading pools-v2.json for the first time from ${this.poolsUrl}`, logger.tags.mining); + logger.info(`Downloading pools-v2.json for the first time from ${this.poolsUrl} over ${network}`, logger.tags.mining); } else { - logger.warn(`pools-v2.json is outdated, fetch latest from ${this.poolsUrl}`, logger.tags.mining); + logger.warn(`pools-v2.json is outdated, fetch latest from ${this.poolsUrl} over ${network}`, logger.tags.mining); } const poolsJson = await this.query(this.poolsUrl); if (poolsJson === undefined) { From 51bc74941550ed082b3d667146f585b0ae6d392e Mon Sep 17 00:00:00 2001 From: softsimon Date: Sun, 26 Feb 2023 09:46:21 +0400 Subject: [PATCH 060/102] Transifex pull 26/2 --- frontend/src/locale/messages.de.xlf | 520 ++++++++++++------ frontend/src/locale/messages.fa.xlf | 531 ++++++++++++------ frontend/src/locale/messages.hu.xlf | 797 +++++++++++++++++++-------- frontend/src/locale/messages.ro.xlf | 818 ++++++++++++++++++++-------- 4 files changed, 1866 insertions(+), 800 deletions(-) diff --git a/frontend/src/locale/messages.de.xlf b/frontend/src/locale/messages.de.xlf index 3af25e4a2..e22f0c7db 100644 --- a/frontend/src/locale/messages.de.xlf +++ b/frontend/src/locale/messages.de.xlf @@ -359,11 +359,11 @@ src/app/components/block/block.component.html - 303,304 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -384,11 +384,11 @@ src/app/components/block/block.component.html - 304,305 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -598,7 +598,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -777,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -795,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -990,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1038,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1054,11 +1070,11 @@ src/app/components/block/block.component.html - 245,246 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1108,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1130,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1142,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1158,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1190,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1211,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1233,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1253,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1269,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1569,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1585,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2049,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2065,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2077,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2090,15 +2102,15 @@ Blöcke am indizieren src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2143,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 478 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2169,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 478,479 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2187,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 481,483 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2221,19 +2233,19 @@ src/app/components/block/block.component.html - 123,126 + 124,127 src/app/components/block/block.component.html - 127 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2273,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 483,486 + 477,480 src/app/components/transaction/transaction.component.html - 494,496 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2301,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 206,210 + 213,217 sat/vB shared.sat-vbyte @@ -2315,11 +2327,11 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize @@ -2335,7 +2347,7 @@ Match - Treffer + Übereinstimmung src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2366,7 +2378,7 @@ Recently broadcasted - Jüngst ausgestrahlt + Kürzlich gesendet src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2432,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2462,11 +2474,11 @@ Größe src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html @@ -2494,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2506,11 +2518,11 @@ Gewicht src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2522,7 +2534,19 @@ src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Grösse nach Gewicht + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2538,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Mediangebühr @@ -2556,7 +2571,7 @@ src/app/components/block/block.component.html - 126,127 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2573,11 +2588,11 @@ src/app/components/block/block.component.html - 131,133 + 138,140 src/app/components/block/block.component.html - 157,160 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2595,7 +2610,7 @@ src/app/components/block/block.component.html - 166,168 + 173,175 block.miner @@ -2608,7 +2623,7 @@ src/app/components/block/block.component.ts - 234 + 242 @@ -2661,6 +2676,14 @@ src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2684,7 +2707,7 @@ Gebührenspanne src/app/components/block/block.component.html - 122,123 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2697,7 +2720,7 @@ Basierend auf einer durchschnittlichen nativen Segwit-Transaktion von 140 vByte src/app/components/block/block.component.html - 127,129 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2721,16 +2744,16 @@ Transaction fee tooltip - - Subsidy + fees: - Subvention + Gebühr + + Subsidy + fees + Subvention + Gebühren src/app/components/block/block.component.html - 146,149 + 153,156 src/app/components/block/block.component.html - 161,165 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees @@ -2740,7 +2763,7 @@ Erwartet src/app/components/block/block.component.html - 209 + 216 block.expected @@ -2749,11 +2772,11 @@ beta src/app/components/block/block.component.html - 209,210 + 216,217 src/app/components/block/block.component.html - 215,217 + 222,224 beta @@ -2762,7 +2785,7 @@ Tatsächlich src/app/components/block/block.component.html - 211,215 + 218,222 block.actual @@ -2771,7 +2794,7 @@ Erwarteter Block src/app/components/block/block.component.html - 215 + 222 block.expected-block @@ -2780,7 +2803,7 @@ Tatsächlicher Block src/app/components/block/block.component.html - 224 + 231 block.actual-block @@ -2789,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 249,251 + 256,258 block.bits @@ -2798,7 +2821,7 @@ Merkle root src/app/components/block/block.component.html - 253,255 + 260,262 block.merkle-root @@ -2807,7 +2830,7 @@ Schwierigkeit src/app/components/block/block.component.html - 264,267 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2836,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 268,270 + 275,277 block.nonce @@ -2845,7 +2868,7 @@ Block-Header Hex src/app/components/block/block.component.html - 272,273 + 279,280 block.header @@ -2854,7 +2877,7 @@ Prüfung src/app/components/block/block.component.html - 290,294 + 297,301 Toggle Audit block.toggle-audit @@ -2864,11 +2887,11 @@ Details src/app/components/block/block.component.html - 297,301 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2890,11 +2913,11 @@ Fehler beim Laden der Daten. src/app/components/block/block.component.html - 316,318 + 323,325 src/app/components/block/block.component.html - 355,359 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2919,7 +2942,7 @@ Weshalb dieser leere Block? src/app/components/block/block.component.html - 377,383 + 384,390 block.empty-block-explanation @@ -3028,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 212,216 + 219,223 dashboard.txs @@ -3267,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 239,240 + 246,247 dashboard.incoming-transactions @@ -3280,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 242,245 + 249,252 dashboard.backend-is-synchronizing @@ -3293,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 247,252 + 254,259 vB/s shared.vbytes-per-second @@ -3307,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 210,211 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3683,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Transaktion senden + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Poolglück (1 Woche) @@ -3750,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3780,12 +3829,25 @@ mining.rank + + Avg Health + Durchschn. Gesundheit + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Leere Blöcke src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3794,7 +3856,7 @@ Alle Miner src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3803,7 +3865,7 @@ Pools Glück (1w) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3812,7 +3874,7 @@ Anzahl der Pools (1w) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3821,7 +3883,7 @@ Mining Pools src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4048,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Transaktion senden - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,162 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Transaktion hex @@ -4075,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4200,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Bitcoin Blockhöhe + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Bitcoin Transaktion + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Bitcoin Adresse + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Bitcoin Adressen + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Lightning Kanäle + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Gehe zu &quot;&quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool in vBytes (sat/vByte) @@ -4484,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4494,7 +4610,7 @@ Zuerst gesehen src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4528,7 +4644,7 @@ Vorauss. Zeit bis Schürfung src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4538,7 +4654,7 @@ In mehreren Stunden (oder mehr) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4548,11 +4664,11 @@ Nachfahre src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4562,7 +4678,7 @@ Vorfahr src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4572,11 +4688,11 @@ Fluss src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4586,7 +4702,7 @@ Diagramm ausblenden src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4595,7 +4711,7 @@ Mehr anzeigen src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4612,7 +4728,7 @@ Weniger anzeigen src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4625,7 +4741,7 @@ Diagramm anzeigen src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4634,7 +4750,7 @@ Sperrzeit src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4643,7 +4759,7 @@ Transaktion nicht gefunden. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4652,7 +4768,7 @@ Warten bis sie im Mempool erscheint... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4661,7 +4777,7 @@ Effektiver Gebührensatz src/app/components/transaction/transaction.component.html - 491,494 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4810,7 +4926,7 @@ Mehr Inputs anzeigen, um Gebührendaten anzuzeigen src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4819,7 +4935,7 @@ verbleiben src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -5070,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Mindestgebühr src/app/dashboard/dashboard.component.html - 203,204 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5094,7 +5201,7 @@ Streichung src/app/dashboard/dashboard.component.html - 204,205 + 211,212 Purgin below fee dashboard.purging @@ -5104,7 +5211,7 @@ Speichernutzung src/app/dashboard/dashboard.component.html - 216,217 + 223,224 Memory usage dashboard.memory-usage @@ -5114,10 +5221,19 @@ L-BTC im Umlauf src/app/dashboard/dashboard.component.html - 230,232 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space liefert lediglich Daten zum Bitcoin Netzwerk. Es kann dir nicht helfen beim Geld holen, Transaktionbestätigung beschleunigen etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service REST-API-Dienst @@ -5452,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5599,6 +5715,30 @@ 37 + + Mutually closed + Gegenseitig geschlossen + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Zwangsgeschlossen + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Zwangsgeschlossen mit Strafzahlung + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open Offen @@ -5725,6 +5865,24 @@ shared.sats + + avg + durchschn. + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + mittel + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity Durchschnittskapazität @@ -5853,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5927,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6095,6 +6253,30 @@ lightning.node-fee-distribution + + Outgoing Fees + Ausgehende Gebühren + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Einkommende Gebühren + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week Prozentuale Änderung letzte Woche @@ -6104,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6356,7 +6538,7 @@ Keine Geolokationsdaten verfügbar src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 diff --git a/frontend/src/locale/messages.fa.xlf b/frontend/src/locale/messages.fa.xlf index 2fac31501..38a471409 100644 --- a/frontend/src/locale/messages.fa.xlf +++ b/frontend/src/locale/messages.fa.xlf @@ -359,11 +359,11 @@ src/app/components/block/block.component.html - 303,304 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -384,11 +384,11 @@ src/app/components/block/block.component.html - 304,305 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -598,7 +598,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -777,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -795,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -990,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1038,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1054,11 +1070,11 @@ src/app/components/block/block.component.html - 245,246 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1108,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1130,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1142,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1158,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1190,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1211,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1233,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1253,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1269,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1569,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1585,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2049,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2065,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2077,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2090,15 +2102,15 @@ فهرست‌بندی بلاک‌ها src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2143,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 478 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2169,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 478,479 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2187,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 481,483 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2221,19 +2233,19 @@ src/app/components/block/block.component.html - 123,126 + 124,127 src/app/components/block/block.component.html - 127 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2273,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 483,486 + 477,480 src/app/components/transaction/transaction.component.html - 494,496 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2301,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 206,210 + 213,217 sat/vB shared.sat-vbyte @@ -2315,18 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status - وضعیت رسیدگی + وضعیت بررسی src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2335,7 +2347,7 @@ Match - مطابق + همتا src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2417,7 +2429,7 @@ Match rate - نرخ برابری + نرخ همتایی src/app/components/block-prediction-graph/block-prediction-graph.component.ts 189,187 @@ -2432,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2462,11 +2474,11 @@ اندازه src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html @@ -2494,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2506,11 +2518,11 @@ وزن src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2522,7 +2534,19 @@ src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + اندازه بر وزن + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2538,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee کارمزد میانه @@ -2556,7 +2571,7 @@ src/app/components/block/block.component.html - 126,127 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2573,11 +2588,11 @@ src/app/components/block/block.component.html - 131,133 + 138,140 src/app/components/block/block.component.html - 157,160 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2595,7 +2610,7 @@ src/app/components/block/block.component.html - 166,168 + 173,175 block.miner @@ -2608,7 +2623,7 @@ src/app/components/block/block.component.ts - 234 + 242 @@ -2661,6 +2676,14 @@ src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2684,7 +2707,7 @@ بازه‌ی کارمزد src/app/components/block/block.component.html - 122,123 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2697,7 +2720,7 @@ بر اساس میانگین تراکنش سگویتی اصیل با اندازه 140 ساتوشی بر بایت مجازی src/app/components/block/block.component.html - 127,129 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2721,25 +2744,26 @@ Transaction fee tooltip - - Subsidy + fees: - یارانه بلاک + کارمزدها + + Subsidy + fees + یارانه + کارمزدها src/app/components/block/block.component.html - 146,149 + 153,156 src/app/components/block/block.component.html - 161,165 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees Expected + پیش‌بینی شده src/app/components/block/block.component.html - 209 + 216 block.expected @@ -2748,11 +2772,11 @@ آزمایشی src/app/components/block/block.component.html - 209,210 + 216,217 src/app/components/block/block.component.html - 215,217 + 222,224 beta @@ -2761,23 +2785,25 @@ واقعی src/app/components/block/block.component.html - 211,215 + 218,222 block.actual Expected Block + بلاک پیش‌بینی شده src/app/components/block/block.component.html - 215 + 222 block.expected-block Actual Block + بلاک واقعی src/app/components/block/block.component.html - 224 + 231 block.actual-block @@ -2786,7 +2812,7 @@ بیت src/app/components/block/block.component.html - 249,251 + 256,258 block.bits @@ -2795,7 +2821,7 @@ ریشه درخت مرکل src/app/components/block/block.component.html - 253,255 + 260,262 block.merkle-root @@ -2804,7 +2830,7 @@ سختی شبکه src/app/components/block/block.component.html - 264,267 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2833,7 +2859,7 @@ نانس src/app/components/block/block.component.html - 268,270 + 275,277 block.nonce @@ -2842,16 +2868,16 @@ سربرگ بلاک به صورت Hex src/app/components/block/block.component.html - 272,273 + 279,280 block.header Audit - رسیدگی + بررسی src/app/components/block/block.component.html - 290,294 + 297,301 Toggle Audit block.toggle-audit @@ -2861,11 +2887,11 @@ جزئیات src/app/components/block/block.component.html - 297,301 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2887,11 +2913,11 @@ خطا در بارگذاری داده‌ها. src/app/components/block/block.component.html - 316,318 + 323,325 src/app/components/block/block.component.html - 355,359 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2916,7 +2942,7 @@ چرا این بلاک خالی است؟ src/app/components/block/block.component.html - 377,383 + 384,390 block.empty-block-explanation @@ -3025,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 212,216 + 219,223 dashboard.txs @@ -3264,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 239,240 + 246,247 dashboard.incoming-transactions @@ -3277,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 242,245 + 249,252 dashboard.backend-is-synchronizing @@ -3290,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 247,252 + 254,259 vB/s shared.vbytes-per-second @@ -3304,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 210,211 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3554,7 +3580,7 @@ Graphs - گراف‌ها + نمودارها src/app/components/liquid-master-page/liquid-master-page.component.html 71,74 @@ -3680,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + انتشار تراکنش + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) شانس استخرها (1 هفته‌ای) @@ -3747,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3777,12 +3829,25 @@ mining.rank + + Avg Health + متوسط سلامت + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks بلاک‌های خالی src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3791,7 +3856,7 @@ همه ماینرها src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3800,7 +3865,7 @@ شانس استخرها (1 هفته) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3809,7 +3874,7 @@ تعداد استخرها (1 هفته) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3818,7 +3883,7 @@ استخرهای استخراج src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4045,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - انتشار تراکنش - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,162 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex تراکنش به صورت Hex @@ -4072,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4197,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + طول بلاک بیت‌کوین + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + تراکنش بیت‌کوین + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + آدرس بیت‌کوین + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + بلاک بیت‌کوین + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + آدرس بیت‌کوین + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + گره لایتنینگ + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + کانال لایتنینگ + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + برو به &quot;&quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) وضعیت ممپول به vByte (ساتوشی بر vByte) @@ -4481,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4491,7 +4610,7 @@ اولین زمان دیده‌شدن src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4525,7 +4644,7 @@ تخمین src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4535,7 +4654,7 @@ در چند (یا چندین) ساعت آینده src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4545,11 +4664,11 @@ نواده src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4559,7 +4678,7 @@ والد src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4569,11 +4688,11 @@ جریان src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4583,7 +4702,7 @@ پنهان‌کردن نمودار src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4592,7 +4711,7 @@ بیشتر src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4609,7 +4728,7 @@ کمتر src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4622,7 +4741,7 @@ نمایش نمودار src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4631,7 +4750,7 @@ قفل‌زمانی src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4640,7 +4759,7 @@ تراکنش پیدا نشد. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4649,7 +4768,7 @@ منتظر دیده‌شدن در mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4658,7 +4777,7 @@ نرخ کارمزد مؤثر src/app/components/transaction/transaction.component.html - 491,494 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4807,7 +4926,7 @@ نمایش ورودی‌های بیشتر برای افشای داده‌های کارمزد src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4816,7 +4935,7 @@ عدد باقی مانده است src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -5067,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee حداقل کارمزد src/app/dashboard/dashboard.component.html - 203,204 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5091,7 +5201,7 @@ آستانه حذف src/app/dashboard/dashboard.component.html - 204,205 + 211,212 Purgin below fee dashboard.purging @@ -5101,7 +5211,7 @@ حافظه مصرف‌شده src/app/dashboard/dashboard.component.html - 216,217 + 223,224 Memory usage dashboard.memory-usage @@ -5111,10 +5221,19 @@ مقدار L-BTC در گردش src/app/dashboard/dashboard.component.html - 230,232 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + ممپول صرفا داده‌هایی درباره شبکه بیت‌کوین ارائه می‌کند. نمی‌توانید از آن برای دریافت وجه، سریع‌ کردن تأیید شدن تراکنش‌هایتان یا چنین کارهایی استفاده کنید. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service خدمات REST API @@ -5449,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5596,6 +5715,30 @@ 37 + + Mutually closed + بسته‌شده با همکاری + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + بسته‌شده بدون همکاری + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + بسته‌شده بدون همکاری با جریمه + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open باز @@ -5722,6 +5865,24 @@ shared.sats + + avg + متوسط + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + میانه + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity متوسط ظرفیت @@ -5850,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5924,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6092,6 +6253,30 @@ lightning.node-fee-distribution + + Outgoing Fees + کارمزدهای خروجی + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + کارمزدهای ورودی + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week درصد تغییر هفته گذشته @@ -6101,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6353,7 +6538,7 @@ اطلاعات جغرافیایی در دسترس نیست src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6531,7 +6716,7 @@ Tor Capacity - ظرفیت Tor + ‏ظرفیت Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 diff --git a/frontend/src/locale/messages.hu.xlf b/frontend/src/locale/messages.hu.xlf index 979573d35..2cbb07923 100644 --- a/frontend/src/locale/messages.hu.xlf +++ b/frontend/src/locale/messages.hu.xlf @@ -11,6 +11,7 @@ Slide of + a oldal node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -737,6 +739,7 @@ View more » + Továbbiak » src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 92,97 @@ -774,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -792,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -987,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1035,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1051,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1105,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1127,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1139,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1155,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1187,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1208,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1230,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1250,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1266,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1459,6 +1474,7 @@ Community Integrations + Közösségi Integrációk src/app/components/about/about.component.html 191,193 @@ -1527,11 +1543,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + a -ből/ból Multisig src/app/components/address-labels/address-labels.component.ts 107 @@ -1563,7 +1580,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1579,7 +1596,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1605,6 +1622,7 @@ of transaction + a tranzakció src/app/components/address/address.component.html 59 @@ -1613,6 +1631,7 @@ of transactions + a tranzakciók src/app/components/address/address.component.html 60 @@ -1659,7 +1678,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1787,6 +1806,7 @@ Group of assets + Csoportnyi asset src/app/components/assets/asset-group/asset-group.component.html 8,9 @@ -1819,6 +1839,7 @@ Featured + Kiemelt src/app/components/assets/assets-nav/assets-nav.component.html 9 @@ -1879,7 +1900,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1892,7 +1913,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1905,7 +1926,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1914,7 +1935,7 @@ Hiba történt az assetok adainak betöltésekor. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2010,6 +2031,7 @@ Block Fee Rates + Blokk Díj Ráta src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.html 6,8 @@ -2026,6 +2048,7 @@ At block: + Blokknál: src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 188 @@ -2036,11 +2059,12 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 Around block: + blokk körül src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 190 @@ -2051,18 +2075,19 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 Block Fees + Blokk Díjjak src/app/components/block-fees-graph/block-fees-graph.component.html 6,7 src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2072,17 +2097,18 @@ Indexing blocks + Blokkok indexelése src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2107,6 +2133,7 @@ not available + nem elérhető src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2126,7 +2153,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2152,11 +2179,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2170,11 +2197,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2186,7 +2213,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2204,19 +2231,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2256,27 +2283,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2284,7 +2311,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2298,17 +2325,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Ellenőrzési állapot src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2317,6 +2345,7 @@ Match + Találat src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2325,6 +2354,7 @@ Removed + Eltávolítva src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2333,6 +2363,7 @@ Marginal fee rate + Legkissebb díj ráta src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2345,6 +2376,7 @@ Recently broadcasted + Nemrég közvetítve src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2353,6 +2385,7 @@ Added + Hozzáadva src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2361,6 +2394,7 @@ Block Prediction Accuracy + Blokk Előrejelzés Pontossága src/app/components/block-prediction-graph/block-prediction-graph.component.html 6,8 @@ -2377,6 +2411,7 @@ No data to display yet. Try again later. + Nincs megjeleníthető adat. Próbálkozz később. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2392,6 +2427,7 @@ Match rate + Találati ráta src/app/components/block-prediction-graph/block-prediction-graph.component.ts 189,187 @@ -2399,13 +2435,14 @@ Block Rewards + Blokk Jutalmak src/app/components/block-rewards-graph/block-rewards-graph.component.html 7,8 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2415,6 +2452,7 @@ Block Sizes and Weights + Blokk Méret és Súly src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.html 5,7 @@ -2434,15 +2472,15 @@ Méret src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2466,7 +2504,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2478,11 +2516,11 @@ Súly src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2490,15 +2528,27 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Blokk src/app/components/block/block-preview.component.html 3,7 @@ -2509,14 +2559,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Átlag díj @@ -2526,7 +2568,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2543,11 +2585,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2565,7 +2607,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2578,7 +2620,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2603,24 +2645,42 @@ Previous Block - - Block health + + Health + Állapot src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Ismeretlen src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2644,7 +2704,7 @@ Díj fesztáv src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2657,7 +2717,7 @@ Az átlag 140 vBájtnyi native segwit tranzakción alapulvéve src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2681,49 +2741,66 @@ Transaction fee tooltip - - Subsidy + fees: - Blokk támogatás + Díj: + + Subsidy + fees + Támogatás + Díjak src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Várható src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + béta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Aktuális src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Várt Blokk src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Aktuális Blokk src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2732,7 +2809,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2741,7 +2818,7 @@ Merkle törzs src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2750,7 +2827,7 @@ Nehézség src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2779,7 +2856,7 @@ Nounce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2788,20 +2865,30 @@ Blokk Fejcím Hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Ellenőrzés + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Részletek src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2820,13 +2907,14 @@ Error loading data. + Hiba történt az adatok betöltésekor. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2848,14 +2936,16 @@ Why is this block empty? + Miért üres ez a blokk? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation Pool + Pool src/app/components/blocks-list/blocks-list.component.html 14 @@ -2895,18 +2985,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Jutalom @@ -2970,7 +3048,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -2984,6 +3062,7 @@ Adjusted + Módosított src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html 6,8 @@ -2992,6 +3071,7 @@ Change + Váltás src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html 8,11 @@ -3101,6 +3181,7 @@ Next Halving + Következő Felezés src/app/components/difficulty/difficulty.component.html 50,52 @@ -3117,6 +3198,7 @@ No Priority + Nem Sürgősség src/app/components/fees-box/fees-box.component.html 4,7 @@ -3129,6 +3211,7 @@ Usually places your transaction in between the second and third mempool blocks + Általában a második vagy a harmadik blokkba helyezi a tranzakciódat a mempoolban src/app/components/fees-box/fees-box.component.html 8,9 @@ -3137,6 +3220,7 @@ Low Priority + Alacsony src/app/components/fees-box/fees-box.component.html 8,9 @@ -3157,6 +3241,7 @@ Medium Priority + Közepes src/app/components/fees-box/fees-box.component.html 9,10 @@ -3169,6 +3254,7 @@ Places your transaction in the first mempool block + Ez az első mempoolban lévő blokkba helyezi a tranzakciódat src/app/components/fees-box/fees-box.component.html 10,14 @@ -3177,6 +3263,7 @@ High Priority + Elsőbbségi src/app/components/fees-box/fees-box.component.html 10,15 @@ -3196,7 +3283,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3209,7 +3296,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3222,7 +3309,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3236,7 +3323,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3253,6 +3340,7 @@ Mining + Bányászat src/app/components/graphs/graphs.component.html 8 @@ -3261,6 +3349,7 @@ Pools Ranking + Pool Rangsorolás src/app/components/graphs/graphs.component.html 11 @@ -3273,6 +3362,7 @@ Pools Dominance + Pool Fölény src/app/components/graphs/graphs.component.html 13 @@ -3285,6 +3375,7 @@ Hashrate & Difficulty + Hashráta és Nehézség src/app/components/graphs/graphs.component.html 15,16 @@ -3293,6 +3384,7 @@ Lightning + Villám src/app/components/graphs/graphs.component.html 31 @@ -3301,6 +3393,7 @@ Lightning Nodes Per Network + Villám Nodeok Hálózatonként src/app/components/graphs/graphs.component.html 34 @@ -3321,6 +3414,7 @@ Lightning Network Capacity + Villám Hálózati Kapacítás src/app/components/graphs/graphs.component.html 36 @@ -3341,6 +3435,7 @@ Lightning Nodes Per ISP + Villám Node Szolgáltatónként src/app/components/graphs/graphs.component.html 38 @@ -3353,6 +3448,7 @@ Lightning Nodes Per Country + Villám Nodeok Országonként src/app/components/graphs/graphs.component.html 40 @@ -3369,6 +3465,7 @@ Lightning Nodes World Map + Villám Node Világ Térkép src/app/components/graphs/graphs.component.html 42 @@ -3385,6 +3482,7 @@ Lightning Nodes Channels World Map + Villám Node Csatorna Világ Térkép src/app/components/graphs/graphs.component.html 44 @@ -3397,6 +3495,7 @@ Hashrate + Hashráta src/app/components/hashrate-chart/hashrate-chart.component.html 8,10 @@ -3425,6 +3524,7 @@ Hashrate & Difficulty + Hashráta és Nehézség src/app/components/hashrate-chart/hashrate-chart.component.html 27,29 @@ -3437,6 +3537,7 @@ Hashrate (MA) + Hashráta (MA) src/app/components/hashrate-chart/hashrate-chart.component.ts 292,291 @@ -3476,7 +3577,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3486,6 +3587,7 @@ Mining Dashboard + Bányászatipult src/app/components/master-page/master-page.component.html 41,43 @@ -3498,9 +3600,10 @@ Lightning Explorer + Villám Felfedező src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3508,20 +3611,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Dokumentáció src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3563,6 +3658,7 @@ Reward stats + Jutalmi statisztikák src/app/components/mining-dashboard/mining-dashboard.component.html 10 @@ -3571,6 +3667,7 @@ (144 blocks) + (144 blokk) src/app/components/mining-dashboard/mining-dashboard.component.html 11 @@ -3592,12 +3689,39 @@ Adjustments + Módosítás src/app/components/mining-dashboard/mining-dashboard.component.html 67 dashboard.adjustments + + Broadcast Transaction + Tranzakció Küldése + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) @@ -3608,6 +3732,7 @@ Pools luck + Pool szerencse src/app/components/pool-ranking/pool-ranking.component.html 9,11 @@ -3632,6 +3757,7 @@ Pools count + Poolok száma src/app/components/pool-ranking/pool-ranking.component.html 17,19 @@ -3648,6 +3774,7 @@ Blocks (1w) + Blokkok (1hé) src/app/components/pool-ranking/pool-ranking.component.html 25 @@ -3658,7 +3785,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3687,19 +3814,34 @@ mining.rank - - Empty blocks + + Avg Health + Átlagos Állapot src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + + + Empty blocks + Üres blokkok + + src/app/components/pool-ranking/pool-ranking.component.html + 97,100 mining.empty-blocks All miners + Minden bányász src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3707,7 +3849,7 @@ Pools Luck (1w) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3715,19 +3857,21 @@ Pools Count (1w) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count Mining Pools + Bányászati Poolok src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 blocks + blokk src/app/components/pool-ranking/pool-ranking.component.ts 165,163 @@ -3739,6 +3883,7 @@ mining pool + bányászó pool src/app/components/pool/pool-preview.component.html 3,5 @@ -3747,6 +3892,7 @@ Tags + Címkék src/app/components/pool/pool-preview.component.html 18,19 @@ -3825,6 +3971,7 @@ Estimated + Becsült src/app/components/pool/pool.component.html 96,97 @@ -3933,6 +4080,7 @@ Coinbase tag + Érmebázis címke src/app/components/pool/pool.component.html 215,217 @@ -3943,24 +4091,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Tranzakció Küldése - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex @@ -3969,7 +4099,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4019,6 +4149,7 @@ BTC/block + BTC/blokk src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4048,6 +4179,7 @@ sats/tx + sats/tx src/app/components/reward-stats/reward-stats.component.html 33,36 @@ -4057,6 +4189,7 @@ Reward Per Tx + Jutalom per Tx src/app/components/reward-stats/reward-stats.component.html 53,56 @@ -4084,6 +4217,70 @@ search-form.search-title + + Bitcoin Block Height + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool vBájtonként (sat/vBájt) @@ -4350,6 +4547,7 @@ Replaced + Cserélve src/app/components/transaction/transaction.component.html 36,39 @@ -4366,7 +4564,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4376,7 +4574,7 @@ Először látva src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4410,7 +4608,7 @@ Hátralévő idő src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4420,7 +4618,7 @@ Több órán belül (vagy később) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4430,11 +4628,11 @@ Utód src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4444,37 +4642,40 @@ Felmenő src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Áramlás src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow Hide diagram + Diagram elrejtése src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram Show more + Továbbiak megjelenítése src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4488,9 +4689,10 @@ Show less + Kevesebb megjelenítése src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4500,9 +4702,10 @@ Show diagram + Diagram megjelenítése src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4511,7 +4714,7 @@ Zárolási idő src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4520,7 +4723,7 @@ Nem található tranzakció. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4529,7 +4732,7 @@ Várakozás arra hogy a mempoolban feltünjön... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4538,7 +4741,7 @@ Effektív díj ráta src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4610,6 +4813,7 @@ P2TR tapscript + P2TR tapscript src/app/components/transactions-list/transactions-list.component.html 132,134 @@ -4685,20 +4889,22 @@ Show more inputs to reveal fee data src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + hátramaradt src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining other inputs + más bemenetek src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 12 @@ -4707,6 +4913,7 @@ other outputs + más kiemenetek src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 13 @@ -4715,6 +4922,7 @@ Input + Bemenet src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 42 @@ -4727,6 +4935,7 @@ Output + Kiemenet src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 43 @@ -4789,6 +4998,7 @@ Taproot + Taproot src/app/components/tx-features/tx-features.component.html 12 @@ -4931,21 +5141,12 @@ dashboard.latest-transactions - - USD - USA Dollár - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Minimum Díj src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -4955,7 +5156,7 @@ Törlés src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -4965,7 +5166,7 @@ Memória használat src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -4975,15 +5176,24 @@ L-BTC forgalomban src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation - - REST API service + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. src/app/docs/api-docs/api-docs.component.html - 39,40 + 13 + + faq.big-disclaimer + + + REST API service + REST API szolgáltatás + + src/app/docs/api-docs/api-docs.component.html + 41,42 api-docs.title @@ -4992,11 +5202,11 @@ Végpont src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5005,11 +5215,11 @@ Leírás src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5017,7 +5227,7 @@ Alaphelyzeti push: művelet: 'kell', data: ['blocks', ...] hogy kifejezd mit szeretnél pusholni. Elérhető: blocks, mempool-blocks, live-2h-chart, and stats.Pusholjon tranzakciókat címekhez fogva: 'cím-követés': '3PbJ...bF9B' az összes új tranzakció fogadásához, amely ezt a címet tartalmazza bemenetként vagy kimenetként. Tranzakciók tömbjét adja vissza. cím-tranzakciókúj mempool tranzakciókhoz , és block-tranzakciók az új blokk megerősített tranzakciókhoz. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5086,6 +5296,7 @@ Base fee + Bázis díj src/app/lightning/channel/channel-box/channel-box.component.html 29 @@ -5098,6 +5309,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5126,6 +5338,7 @@ Zero base fee + Zeró alapdíj src/app/lightning/channel/channel-box/channel-box.component.html 45 @@ -5142,6 +5355,7 @@ Non-zero base fee + Nem-nulla alapdíj src/app/lightning/channel/channel-box/channel-box.component.html 51 @@ -5150,6 +5364,7 @@ Min HTLC + Min HTLC src/app/lightning/channel/channel-box/channel-box.component.html 57 @@ -5158,6 +5373,7 @@ Max HTLC + Max HTLC src/app/lightning/channel/channel-box/channel-box.component.html 63 @@ -5166,6 +5382,7 @@ Timelock delta + Időzár delta src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5174,18 +5391,20 @@ channels + csatorna src/app/lightning/channel/channel-box/channel-box.component.html 79 src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Induló egyenleg src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5195,6 +5414,7 @@ Closing balance + Záró egyenleg src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5204,6 +5424,7 @@ lightning channel + villám csatorna src/app/lightning/channel/channel-preview.component.html 3,5 @@ -5212,6 +5433,7 @@ Inactive + Inaktív src/app/lightning/channel/channel-preview.component.html 10,11 @@ -5222,12 +5444,13 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive Active + Aktív src/app/lightning/channel/channel-preview.component.html 11,12 @@ -5238,12 +5461,13 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active Closed + Lezárt src/app/lightning/channel/channel-preview.component.html 12,14 @@ -5258,12 +5482,13 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed Created + Létrehozott src/app/lightning/channel/channel-preview.component.html 23,26 @@ -5276,6 +5501,7 @@ Capacity + Kapacítás src/app/lightning/channel/channel-preview.component.html 27,28 @@ -5286,7 +5512,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5294,7 +5520,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5328,6 +5554,7 @@ ppm + ppm src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5348,6 +5575,7 @@ Lightning channel + Villám csatorna src/app/lightning/channel/channel.component.html 2,5 @@ -5360,6 +5588,7 @@ Last update + Utolsó frissítés src/app/lightning/channel/channel.component.html 33,34 @@ -5392,18 +5621,20 @@ Closing date + Zárási dátum src/app/lightning/channel/channel.component.html 37,38 src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Lezárva átala src/app/lightning/channel/channel.component.html 52,54 @@ -5412,6 +5643,7 @@ Opening transaction + Nyitó tranzakció src/app/lightning/channel/channel.component.html 84,85 @@ -5420,6 +5652,7 @@ Closing transaction + Záró tranzakció src/app/lightning/channel/channel.component.html 93,95 @@ -5428,13 +5661,37 @@ Channel: + Csatorna: src/app/lightning/channel/channel.component.ts 37 + + Mutually closed + Közösen lezárt + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Nyitás src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5443,17 +5700,19 @@ No channels to display + Nincs megjeleníthető csatorna src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list Alias + Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5487,29 +5746,32 @@ Status + Állapot src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status Channel ID + Csatorna ID src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id sats + sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5553,8 +5815,25 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity + Átlag Kapacítás src/app/lightning/channels-statistics/channels-statistics.component.html 13,15 @@ -5567,6 +5846,7 @@ Avg Fee Rate + Átlag Díj Ráta src/app/lightning/channels-statistics/channels-statistics.component.html 26,28 @@ -5587,6 +5867,7 @@ Avg Base Fee + Átlag Bázis Díj src/app/lightning/channels-statistics/channels-statistics.component.html 41,43 @@ -5607,6 +5888,7 @@ Med Capacity + Közepes Kapacítás src/app/lightning/channels-statistics/channels-statistics.component.html 59,61 @@ -5659,6 +5941,7 @@ Nodes + Nódok src/app/lightning/group/group-preview.component.html 25,29 @@ -5669,11 +5952,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5695,6 +5978,7 @@ Liquidity + Likvidítás src/app/lightning/group/group-preview.component.html 29,31 @@ -5731,6 +6015,7 @@ Channels + Csatornák src/app/lightning/group/group-preview.component.html 40,43 @@ -5741,11 +6026,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5791,6 +6076,7 @@ Average size + Átlagos méret src/app/lightning/group/group-preview.component.html 44,46 @@ -5803,6 +6089,7 @@ Location + Helység src/app/lightning/group/group.component.html 74,77 @@ -5901,6 +6188,28 @@ lightning.node-fee-distribution + + Outgoing Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week @@ -5909,16 +6218,17 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week Lightning node + Villám node src/app/lightning/node/node-preview.component.html 3,5 @@ -5935,6 +6245,7 @@ Active capacity + Átlagos kapacítás src/app/lightning/node/node-preview.component.html 20,22 @@ -5959,6 +6270,7 @@ Country + Ország src/app/lightning/node/node-preview.component.html 44,47 @@ -5991,6 +6303,7 @@ Color + Szín src/app/lightning/node/node.component.html 79,81 @@ -5999,6 +6312,7 @@ ISP + ISP src/app/lightning/node/node.component.html 86,87 @@ -6077,6 +6391,7 @@ TLV extension records + TLV kiterjesztési esemény src/app/lightning/node/node.component.html 199,202 @@ -6085,6 +6400,7 @@ Open channels + Nyitott csatornák src/app/lightning/node/node.component.html 240,243 @@ -6093,6 +6409,7 @@ Closed channels + Lezárt csatornák src/app/lightning/node/node.component.html 244,247 @@ -6101,6 +6418,7 @@ Node: + Node: src/app/lightning/node/node.component.ts 60 @@ -6137,7 +6455,7 @@ No geolocation data available src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6194,6 +6512,7 @@ Share + Megoszlás src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29,31 @@ -6206,6 +6525,7 @@ nodes + nódok src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 103,102 @@ -6236,6 +6556,7 @@ ISP Count + ISP Szám src/app/lightning/nodes-per-country/nodes-per-country.component.html 34,38 @@ -6244,6 +6565,7 @@ Top ISP + Top ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6252,6 +6574,7 @@ Lightning nodes in + Villám nódok itt src/app/lightning/nodes-per-country/nodes-per-country.component.ts 35 @@ -6259,6 +6582,7 @@ Clearnet Capacity + Clearnet Kapacítás src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6279,6 +6603,7 @@ Unknown Capacity + Ismeretlen Kapacítás src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 13,15 @@ -6299,6 +6624,7 @@ Tor Capacity + Tor Kapacítás src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6327,6 +6653,7 @@ BTC + BTC src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 158,156 @@ -6338,6 +6665,7 @@ Lightning ISP + Villám ISP src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 3,5 @@ -6346,6 +6674,7 @@ Top country + Top ország src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 39,41 @@ -6358,6 +6687,7 @@ Top node + Top node src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 45,48 @@ -6385,6 +6715,7 @@ ASN + ASN src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 11,14 @@ -6393,6 +6724,7 @@ Active nodes + Aktív nódok src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6432,6 +6764,7 @@ Oldest nodes + Legrégebbi nodeok src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6440,6 +6773,7 @@ Top lightning nodes + Top villám nodeok src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6447,6 +6781,7 @@ Indexing in progress + Indexelés folyamatban src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 diff --git a/frontend/src/locale/messages.ro.xlf b/frontend/src/locale/messages.ro.xlf index 1eddb2845..41cab4eea 100644 --- a/frontend/src/locale/messages.ro.xlf +++ b/frontend/src/locale/messages.ro.xlf @@ -11,6 +11,7 @@ Slide of + Pagina din node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1461,6 +1475,7 @@ Community Integrations + Integrări în comunitate src/app/components/about/about.component.html 191,193 @@ -1529,11 +1544,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Multisig din src/app/components/address-labels/address-labels.component.ts 107 @@ -1565,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1581,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1664,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1886,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1899,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1912,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1921,7 +1937,7 @@ Eroare la încărcarea datelor despre active. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2045,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2061,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2073,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2086,15 +2102,15 @@ Indexare blocuri src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2119,6 +2135,7 @@ not available + indisponibil src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2138,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2164,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2182,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2198,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2216,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2268,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2296,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2310,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Starea auditului src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2329,6 +2347,7 @@ Match + Potrivire src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2337,6 +2356,7 @@ Removed + Îndepărtat src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2345,6 +2365,7 @@ Marginal fee rate + Rata comisionului marginal src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2357,6 +2378,7 @@ Recently broadcasted + Recent transmis src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2365,6 +2387,7 @@ Added + Adăugat src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2390,6 +2413,7 @@ No data to display yet. Try again later. + Nu există date de afișat încă. Încercați mai târziu. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2420,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2450,15 +2474,15 @@ Mărime src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2482,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2494,11 +2518,11 @@ Greutate src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2506,15 +2530,28 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Dimensiune pe greutate + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Bloc src/app/components/block/block-preview.component.html 3,7 @@ -2525,14 +2562,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Comision median @@ -2542,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2559,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2581,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2594,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2619,24 +2648,42 @@ Previous Block - - Block health + + Health + Sănătate src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Necunoscut src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2660,7 +2707,7 @@ Interval comisioane src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2673,7 +2720,7 @@ Pe baza valorii medii a tranzacției segwit native de 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2697,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Subvenție + comisioane: + + Subsidy + fees + Subvenție + comisioane src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Așteptat src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Real src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Bloc așteptat src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Blocul real src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2748,7 +2812,7 @@ Biți src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2757,7 +2821,7 @@ Rădăcină Merkle src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2766,7 +2830,7 @@ Dificultate src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2795,7 +2859,7 @@ Număr arbitrar src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2804,20 +2868,30 @@ Valoarea Hex a antetului blocului src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Audit + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Detalii src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2839,11 +2913,11 @@ Eroare la încărcarea datelor. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2865,9 +2939,10 @@ Why is this block empty? + De ce acest bloc este gol? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2913,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Recompensă @@ -2988,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3227,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3240,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3253,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3267,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3319,6 +3382,7 @@ Hashrate & Difficulty + Rată hash & Dificultate src/app/components/graphs/graphs.component.html 15,16 @@ -3327,6 +3391,7 @@ Lightning + Lightning src/app/components/graphs/graphs.component.html 31 @@ -3335,6 +3400,7 @@ Lightning Nodes Per Network + Noduri Lightning Per Rețea src/app/components/graphs/graphs.component.html 34 @@ -3355,6 +3421,7 @@ Lightning Network Capacity + Capacitatea rețelei Lightning src/app/components/graphs/graphs.component.html 36 @@ -3375,6 +3442,7 @@ Lightning Nodes Per ISP + Noduri Lightning Per ISP src/app/components/graphs/graphs.component.html 38 @@ -3387,6 +3455,7 @@ Lightning Nodes Per Country + Noduri Lightning per țară src/app/components/graphs/graphs.component.html 40 @@ -3403,6 +3472,7 @@ Lightning Nodes World Map + Harta lumii cu Noduri Lightning src/app/components/graphs/graphs.component.html 42 @@ -3419,6 +3489,7 @@ Lightning Nodes Channels World Map + Harta lumii cu canale ale nodurilor Lightning src/app/components/graphs/graphs.component.html 44 @@ -3516,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3539,9 +3610,10 @@ Lightning Explorer + Explorator Lightning src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3549,20 +3621,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Documentație src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3642,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Transmite Tranzacție + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Noroc fonduri (1 săptămână) @@ -3709,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3739,12 +3829,25 @@ mining.rank + + Avg Health + Medie Sănătate + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Blocuri goale src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3753,7 +3856,7 @@ Toți minerii src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3762,7 +3865,7 @@ Noroc Fonduri (1săpt) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3771,7 +3874,7 @@ Număr Fonduri (1săpt) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3780,7 +3883,7 @@ Fondurile de minerit src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3797,6 +3900,7 @@ mining pool + Fond de minerit src/app/components/pool/pool-preview.component.html 3,5 @@ -4006,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Transmite Tranzacție - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Codul hex al tranzacției @@ -4033,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4065,6 +4151,7 @@ Avg Block Fees + Comisioane medii de bloc src/app/components/reward-stats/reward-stats.component.html 17 @@ -4077,6 +4164,7 @@ Average fees per block in the past 144 blocks + Comioane medii per bloc în ultimele 144 de blocuri src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4085,6 +4173,7 @@ BTC/block + BTC/bloc src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4094,6 +4183,7 @@ Avg Tx Fee + Comision mediu per Tx src/app/components/reward-stats/reward-stats.component.html 30 @@ -4138,6 +4228,7 @@ Explore the full Bitcoin ecosystem + Explorați întregul ecosistem Bitcoin src/app/components/search-form/search-form.component.html 4,5 @@ -4153,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Blocul Bitcoin Curent + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Tranzacția Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Adresa Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Blocul Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Adrese Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Noduri Lightning + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Canale Lightning + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Mergi la &quot;&quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool prin vBytes (sat/vByte) @@ -4410,6 +4573,7 @@ This transaction replaced: + Această tranzacție a înlocuit: src/app/components/transaction/transaction.component.html 10,12 @@ -4419,6 +4583,7 @@ Replaced + Înlocuit src/app/components/transaction/transaction.component.html 36,39 @@ -4435,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4445,7 +4610,7 @@ Prima dată văzut src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4479,7 +4644,7 @@ ETA src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4489,7 +4654,7 @@ În câteva ore (sau mai mult) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4499,11 +4664,11 @@ Descendent src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4513,37 +4678,40 @@ Strămoş src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Flux src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow Hide diagram + Ascunde diagrama src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram Show more + Arată mai multe src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4557,9 +4725,10 @@ Show less + Arată mai puțin src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4569,9 +4738,10 @@ Show diagram + Arată diagrama src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4580,7 +4750,7 @@ Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4589,7 +4759,7 @@ Tranzacția nu a fost găsită. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4598,7 +4768,7 @@ Se așteaptă să apară în mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4607,7 +4777,7 @@ Rata efectivă a comisionului src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4753,22 +4923,25 @@ Show more inputs to reveal fee data + Arată mai multe intrări pentru a dezvălui datele despre comision src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + rămase src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining other inputs + alte intrări src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 12 @@ -4777,6 +4950,7 @@ other outputs + alte ieșiri src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 13 @@ -4785,6 +4959,7 @@ Input + Intrare src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 42 @@ -4797,6 +4972,7 @@ Output + Ieșire src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 43 @@ -4809,6 +4985,7 @@ This transaction saved % on fees by using native SegWit + Această tranzacție a economisit % din comisioane utilizând SegWit nativ src/app/components/tx-features/tx-features.component.html 2 @@ -4835,6 +5012,7 @@ This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit + Această tranzacție a economisit % din comisioane utilizând SegWit și ar putea economisi încă % prin trecerea la SegWit nativ src/app/components/tx-features/tx-features.component.html 4 @@ -4843,6 +5021,7 @@ This transaction could save % on fees by upgrading to native SegWit or % by upgrading to SegWit-P2SH + Această tranzacție ar putea economisi % din comisioane prin trecerea la SegWit nativ sau % prin trecerea la SegWit-P2SH src/app/components/tx-features/tx-features.component.html 6 @@ -4851,6 +5030,7 @@ This transaction uses Taproot and thereby saved at least % on fees + Această tranzacție folosește Taproot și, prin urmare, a economisit cel puțin % din comisioane src/app/components/tx-features/tx-features.component.html 12 @@ -4859,6 +5039,7 @@ Taproot + Taproot src/app/components/tx-features/tx-features.component.html 12 @@ -4884,6 +5065,7 @@ This transaction uses Taproot and already saved at least % on fees, but could save an additional % by fully using Taproot + Această tranzacție folosește Taproot și a economisit deja cel puțin % din comisioane, dar ar putea economisi încă % utilizând complet Taproot src/app/components/tx-features/tx-features.component.html 14 @@ -4892,6 +5074,7 @@ This transaction could save % on fees by using Taproot + Această tranzacție ar putea economisi % din comisioane utilizând Taproot src/app/components/tx-features/tx-features.component.html 16 @@ -4900,6 +5083,7 @@ This transaction does not use Taproot + Această tranzacție nu folosește Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -4917,6 +5101,7 @@ This transaction supports Replace-By-Fee (RBF) allowing fee bumping + Această tranzacție acceptă Replace-By-Fee (RBF), permițând creșterea ulterioară a comisionului src/app/components/tx-features/tx-features.component.html 28 @@ -5001,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Comision minim src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5025,7 +5201,7 @@ Înlăturare src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5035,7 +5211,7 @@ Utilizarea memoriei src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5045,16 +5221,25 @@ L-BTC în circulație src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space oferă doar date despre rețeaua Bitcoin. Nu vă poate ajuta să recuperați fonduri, să confirmați tranzacția mai rapid etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Serviciu REST API src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5063,11 +5248,11 @@ Terminație src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5076,11 +5261,11 @@ Descriere src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5088,7 +5273,7 @@ Trimitere implicită: acțiune: 'want', data: ['blocks', ...] pentru a exprima ce dorești să trimiți. Disponibil: blocks, mempool-blocks, live-2h-chart, și stats.Tranzacții de trimitere pentru adresa: 'track-address': '3PbJ...bF9B' pentru a primi toate tranzacțiile noi care conțin acea adresă ca intrare sau iesire. Returnează un șir de tranzacții. address-transactions pentru tranzacții noi din mempool, și block-transactions pentru tranzacții confirmate din blocuri noi. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5157,6 +5342,7 @@ Base fee + Comision de bază src/app/lightning/channel/channel-box/channel-box.component.html 29 @@ -5169,6 +5355,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5189,6 +5376,7 @@ This channel supports zero base fee routing + Acest canal acceptă rutarea cu comision de bază zero src/app/lightning/channel/channel-box/channel-box.component.html 44 @@ -5197,6 +5385,7 @@ Zero base fee + Comision de bază zero src/app/lightning/channel/channel-box/channel-box.component.html 45 @@ -5205,6 +5394,7 @@ This channel does not support zero base fee routing + Acest canal nu acceptă rutarea cu comision de bază zero src/app/lightning/channel/channel-box/channel-box.component.html 50 @@ -5213,6 +5403,7 @@ Non-zero base fee + Comision de bază diferit de zero src/app/lightning/channel/channel-box/channel-box.component.html 51 @@ -5221,6 +5412,7 @@ Min HTLC + Min HTLC src/app/lightning/channel/channel-box/channel-box.component.html 57 @@ -5229,6 +5421,7 @@ Max HTLC + Max HTLC src/app/lightning/channel/channel-box/channel-box.component.html 63 @@ -5237,6 +5430,7 @@ Timelock delta + Diferență Timelock src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5245,18 +5439,20 @@ channels + canale src/app/lightning/channel/channel-box/channel-box.component.html 79 src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Balanța inițială src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5266,6 +5462,7 @@ Closing balance + Balanța finală src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5275,6 +5472,7 @@ lightning channel + canal lightning src/app/lightning/channel/channel-preview.component.html 3,5 @@ -5283,6 +5481,7 @@ Inactive + Inactiv src/app/lightning/channel/channel-preview.component.html 10,11 @@ -5293,12 +5492,13 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive Active + Activ src/app/lightning/channel/channel-preview.component.html 11,12 @@ -5309,12 +5509,13 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active Closed + Închis src/app/lightning/channel/channel-preview.component.html 12,14 @@ -5329,12 +5530,13 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed Created + Creat src/app/lightning/channel/channel-preview.component.html 23,26 @@ -5347,6 +5549,7 @@ Capacity + Capacitate src/app/lightning/channel/channel-preview.component.html 27,28 @@ -5357,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5365,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5399,6 +5602,7 @@ ppm + ppm src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5419,6 +5623,7 @@ Lightning channel + Canal lightning src/app/lightning/channel/channel.component.html 2,5 @@ -5431,6 +5636,7 @@ Last update + Ultima actualizare src/app/lightning/channel/channel.component.html 33,34 @@ -5463,18 +5669,20 @@ Closing date + Data limită src/app/lightning/channel/channel.component.html 37,38 src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Închis de src/app/lightning/channel/channel.component.html 52,54 @@ -5483,6 +5691,7 @@ Opening transaction + Tranzacția inițială src/app/lightning/channel/channel.component.html 84,85 @@ -5491,6 +5700,7 @@ Closing transaction + Tranzacția finală src/app/lightning/channel/channel.component.html 93,95 @@ -5499,13 +5709,39 @@ Channel: + Canal: src/app/lightning/channel/channel.component.ts 37 + + Mutually closed + Închis reciproc + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Închis forțat + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Închis forțat cu penalizare + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Deschis src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5514,17 +5750,19 @@ No channels to display + Nu există canale de afișat src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list Alias + Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5558,29 +5796,32 @@ Status + Stare src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status Channel ID + ID Canal src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id sats + sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5624,8 +5865,27 @@ shared.sats + + avg + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity + Capacitate medie src/app/lightning/channels-statistics/channels-statistics.component.html 13,15 @@ -5638,6 +5898,7 @@ Avg Fee Rate + Rata medie comision src/app/lightning/channels-statistics/channels-statistics.component.html 26,28 @@ -5650,6 +5911,7 @@ The average fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Comisionul mediu perceput de nodurile de rutare, ignorând valori > 0,5% sau 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 28,30 @@ -5658,6 +5920,7 @@ Avg Base Fee + Comision de bază mediu src/app/lightning/channels-statistics/channels-statistics.component.html 41,43 @@ -5670,6 +5933,7 @@ The average base fee charged by routing nodes, ignoring base fees > 5000ppm + Comision de bază mediu perceput de nodurile de rutare, ignorând valori > 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 43,45 @@ -5678,6 +5942,7 @@ Med Capacity + Capacitate medie src/app/lightning/channels-statistics/channels-statistics.component.html 59,61 @@ -5686,6 +5951,7 @@ Med Fee Rate + Rata mediană comision src/app/lightning/channels-statistics/channels-statistics.component.html 72,74 @@ -5694,6 +5960,7 @@ The median fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Rata mediană a comisionului perceput de nodurile de rutare, ignorând valori > 0,5% sau 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 74,76 @@ -5702,6 +5969,7 @@ Med Base Fee + Comision de bază median src/app/lightning/channels-statistics/channels-statistics.component.html 87,89 @@ -5710,6 +5978,7 @@ The median base fee charged by routing nodes, ignoring base fees > 5000ppm + Comision de bază median perceput de nodurile de rutare, ignorând valori > 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 89,91 @@ -5718,6 +5987,7 @@ Lightning node group + Grup de noduri Lightning src/app/lightning/group/group-preview.component.html 3,5 @@ -5730,6 +6000,7 @@ Nodes + Noduri src/app/lightning/group/group-preview.component.html 25,29 @@ -5740,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5766,6 +6037,7 @@ Liquidity + Lichiditate src/app/lightning/group/group-preview.component.html 29,31 @@ -5802,6 +6074,7 @@ Channels + Canale src/app/lightning/group/group-preview.component.html 40,43 @@ -5812,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5862,6 +6135,7 @@ Average size + Mărime medie src/app/lightning/group/group-preview.component.html 44,46 @@ -5874,6 +6148,7 @@ Location + Locație src/app/lightning/group/group.component.html 74,77 @@ -5914,6 +6189,7 @@ Network Statistics + Statistici Rețea src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 10 @@ -5922,6 +6198,7 @@ Channels Statistics + Statistici Canale src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 24 @@ -5930,6 +6207,7 @@ Lightning Network History + Istoric Rețea Lightning src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 49 @@ -5938,6 +6216,7 @@ Liquidity Ranking + Clasament Lichiditate src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 62 @@ -5954,6 +6233,7 @@ Connectivity Ranking + Clasament Conectivitate src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 76 @@ -5966,30 +6246,57 @@ Fee distribution + Distribuție Comisioane src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Comisioane Ieșiri + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Comisioane Intrări + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week + Modificare procentuală săptămâna trecută src/app/lightning/node-statistics/node-statistics.component.html 5,7 src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week Lightning node + Nod Lightning src/app/lightning/node/node-preview.component.html 3,5 @@ -6006,6 +6313,7 @@ Active capacity + Capacitate activă src/app/lightning/node/node-preview.component.html 20,22 @@ -6018,6 +6326,7 @@ Active channels + Canale active src/app/lightning/node/node-preview.component.html 26,30 @@ -6030,6 +6339,7 @@ Country + Țară src/app/lightning/node/node-preview.component.html 44,47 @@ -6038,6 +6348,7 @@ No node found for public key "" + Nu a fost găsit niciun nod pentru cheia publică &quot; &quot; src/app/lightning/node/node.component.html 17,19 @@ -6046,6 +6357,7 @@ Average channel size + Dimensiunea medie a canalului src/app/lightning/node/node.component.html 40,43 @@ -6054,6 +6366,7 @@ Avg channel distance + Distanța medie a canalului src/app/lightning/node/node.component.html 56,57 @@ -6062,6 +6375,7 @@ Color + Culoare src/app/lightning/node/node.component.html 79,81 @@ -6070,6 +6384,7 @@ ISP + ISP src/app/lightning/node/node.component.html 86,87 @@ -6082,6 +6397,7 @@ Exclusively on Tor + Exclusiv pe Tor src/app/lightning/node/node.component.html 93,95 @@ -6090,6 +6406,7 @@ Liquidity ad + Anunț de lichiditate src/app/lightning/node/node.component.html 138,141 @@ -6098,6 +6415,7 @@ Lease fee rate + Rata comisionului de închiriere src/app/lightning/node/node.component.html 144,147 @@ -6107,6 +6425,7 @@ Lease base fee + Comisionul de inchiriere de bază src/app/lightning/node/node.component.html 152,154 @@ -6115,6 +6434,7 @@ Funding weight + Greutatea finanțării src/app/lightning/node/node.component.html 158,159 @@ -6123,6 +6443,7 @@ Channel fee rate + Comisionul canalului src/app/lightning/node/node.component.html 168,171 @@ -6132,6 +6453,7 @@ Channel base fee + Comisionul de bază al canalului src/app/lightning/node/node.component.html 176,178 @@ -6140,6 +6462,7 @@ Compact lease + Închiriere compactă src/app/lightning/node/node.component.html 188,190 @@ -6148,6 +6471,7 @@ TLV extension records + Înregistrări extensiil TLV src/app/lightning/node/node.component.html 199,202 @@ -6156,6 +6480,7 @@ Open channels + Canale deschise src/app/lightning/node/node.component.html 240,243 @@ -6164,6 +6489,7 @@ Closed channels + Canale închise src/app/lightning/node/node.component.html 244,247 @@ -6172,6 +6498,7 @@ Node: + Nod: src/app/lightning/node/node.component.ts 60 @@ -6179,6 +6506,7 @@ (Tor nodes excluded) + (Nodurile Tor excluse) src/app/lightning/nodes-channels-map/nodes-channels-map.component.html 8,11 @@ -6199,6 +6527,7 @@ Lightning Nodes Channels World Map + Harta lumii cu canalele nodurilor Lightning src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts 69 @@ -6206,13 +6535,15 @@ No geolocation data available + Nu sunt disponibile date de geolocalizare src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 Active channels map + Harta canalelor active src/app/lightning/nodes-channels/node-channels.component.html 2,3 @@ -6221,6 +6552,7 @@ Indexing in progress + Indexare în curs src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6232,6 +6564,7 @@ Reachable on Clearnet Only + Accesibil numai pe Clearnet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 164,161 @@ -6243,6 +6576,7 @@ Reachable on Clearnet and Darknet + Accesibil pe Clearnet și Darknet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 185,182 @@ -6254,6 +6588,7 @@ Reachable on Darknet Only + Accesibil numai pe Darknet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 206,203 @@ -6265,6 +6600,7 @@ Share + Partajează src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29,31 @@ -6277,6 +6613,7 @@ nodes + noduri src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 103,102 @@ -6292,6 +6629,7 @@ BTC capacity + capacitate BTC src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 104,102 @@ -6299,6 +6637,7 @@ Lightning nodes in + Noduri Lightning în src/app/lightning/nodes-per-country/nodes-per-country.component.html 3,4 @@ -6307,6 +6646,7 @@ ISP Count + Număr ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 34,38 @@ -6315,6 +6655,7 @@ Top ISP + Top ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6323,6 +6664,7 @@ Lightning nodes in + Noduri Lightning în src/app/lightning/nodes-per-country/nodes-per-country.component.ts 35 @@ -6330,6 +6672,7 @@ Clearnet Capacity + Capacitate Clearnet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6342,6 +6685,7 @@ How much liquidity is running on nodes advertising at least one clearnet IP address + Câtă lichiditate există pe nodurile care anunță cel puțin o adresă IP din Clearnet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 8,9 @@ -6350,6 +6694,7 @@ Unknown Capacity + Capacitate necunoscută src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 13,15 @@ -6362,6 +6707,7 @@ How much liquidity is running on nodes which ISP was not identifiable + Câtă lichiditate există pe noduri pe care ISP-ul nu a fost identificabil src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 15,16 @@ -6370,6 +6716,7 @@ Tor Capacity + Capacitate Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6382,6 +6729,7 @@ How much liquidity is running on nodes advertising only Tor addresses + Câtă lichiditate există pe nodurile care anunță numai adrese Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 22,23 @@ -6390,6 +6738,7 @@ Top 100 ISPs hosting LN nodes + Top 100 ISP-uri care găzduiesc noduri LN src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 31,33 @@ -6398,6 +6747,7 @@ BTC + BTC src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 158,156 @@ -6409,6 +6759,7 @@ Lightning ISP + Lightning ISP src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 3,5 @@ -6417,6 +6768,7 @@ Top country + Țara de top src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 39,41 @@ -6429,6 +6781,7 @@ Top node + Nodul de top src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 45,48 @@ -6437,6 +6790,7 @@ Lightning nodes on ISP: [AS] + Noduri Lightning pe ISP: [CA] src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts 44 @@ -6448,6 +6802,7 @@ Lightning nodes on ISP: + Noduri Lightning pe ISP: src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 2,4 @@ -6456,6 +6811,7 @@ ASN + ASN src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 11,14 @@ -6464,6 +6820,7 @@ Active nodes + Noduri active src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6472,6 +6829,7 @@ Top 100 oldest lightning nodes + Top 100 cele mai vechi noduri lightning src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html 3,7 @@ -6480,6 +6838,7 @@ Oldest lightning nodes + Cele mai vechi noduri lightning src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts 27 @@ -6487,6 +6846,7 @@ Top 100 nodes liquidity ranking + Top 100 de noduri de lichiditate src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html 3,7 @@ -6495,6 +6855,7 @@ Top 100 nodes connectivity ranking + Top 100 de noduri de conectivitate src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html 3,7 @@ -6503,6 +6864,7 @@ Oldest nodes + Cele mai vechi noduri src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6511,6 +6873,7 @@ Top lightning nodes + Top noduri lightning src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6518,6 +6881,7 @@ Indexing in progress + Indexare în curs src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 From bc3400ce75ebca897bae6d0b96ac816f4633ef4b Mon Sep 17 00:00:00 2001 From: softsimon Date: Sun, 26 Feb 2023 10:13:25 +0400 Subject: [PATCH 061/102] Enable GBT mempool in all production configs --- production/mempool-config.mainnet.json | 2 +- production/mempool-config.signet.json | 2 +- production/mempool-config.testnet.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/production/mempool-config.mainnet.json b/production/mempool-config.mainnet.json index 658437edc..cca43d7e3 100644 --- a/production/mempool-config.mainnet.json +++ b/production/mempool-config.mainnet.json @@ -13,7 +13,7 @@ "AUDIT": true, "CPFP_INDEXING": true, "ADVANCED_GBT_AUDIT": true, - "ADVANCED_GBT_MEMPOOL": false, + "ADVANCED_GBT_MEMPOOL": true, "USE_SECOND_NODE_FOR_MINFEE": true }, "SYSLOG" : { diff --git a/production/mempool-config.signet.json b/production/mempool-config.signet.json index 3c661c39f..87f8e2650 100644 --- a/production/mempool-config.signet.json +++ b/production/mempool-config.signet.json @@ -9,7 +9,7 @@ "INDEXING_BLOCKS_AMOUNT": -1, "AUDIT": true, "ADVANCED_GBT_AUDIT": true, - "ADVANCED_GBT_MEMPOOL": false, + "ADVANCED_GBT_MEMPOOL": true, "POLL_RATE_MS": 1000 }, "SYSLOG" : { diff --git a/production/mempool-config.testnet.json b/production/mempool-config.testnet.json index 352529c6e..5c1695e62 100644 --- a/production/mempool-config.testnet.json +++ b/production/mempool-config.testnet.json @@ -9,7 +9,7 @@ "INDEXING_BLOCKS_AMOUNT": -1, "AUDIT": true, "ADVANCED_GBT_AUDIT": true, - "ADVANCED_GBT_MEMPOOL": false, + "ADVANCED_GBT_MEMPOOL": true, "POLL_RATE_MS": 1000 }, "SYSLOG" : { From d938448fe95a68734270dd4f88869517db6d1271 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 15:28:50 +0900 Subject: [PATCH 062/102] Replace `--reindex=xxx,xxx` command line with `--reindex-blocks` --- backend/src/api/database-migration.ts | 28 +++++++++------------------ backend/src/index.ts | 7 ++----- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 3140ea358..13cffd755 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -1012,26 +1012,16 @@ class DatabaseMigration { ) ENGINE=InnoDB DEFAULT CHARSET=utf8;`; } - public async $truncateIndexedData(tables: string[]) { - const allowedTables = ['blocks', 'hashrates', 'prices']; + public async $blocksReindexingTruncate(): Promise { + logger.warn(`Truncating pools, blocks and hashrates for re-indexing (using '--reindex-blocks'). You can cancel this command within 5 seconds`); + await Common.sleep$(5000); - try { - for (const table of tables) { - if (!allowedTables.includes(table)) { - logger.debug(`Table ${table} cannot to be re-indexed (not allowed)`); - continue; - } - - await this.$executeQuery(`TRUNCATE ${table}`, true); - if (table === 'hashrates') { - await this.$executeQuery('UPDATE state set number = 0 where name = "last_hashrates_indexing"', true); - } - logger.notice(`Table ${table} has been truncated`); - } - } catch (e) { - logger.warn(`Unable to erase indexed data`); - } - } + await this.$executeQuery(`TRUNCATE blocks`); + await this.$executeQuery(`TRUNCATE hashrates`); + await this.$executeQuery('DELETE FROM `pools`'); + await this.$executeQuery('ALTER TABLE pools AUTO_INCREMENT = 1'); + await this.$executeQuery(`UPDATE state SET string = NULL WHERE name = 'pools_json_sha'`); +} private async $convertCompactCpfpTables(): Promise { try { diff --git a/backend/src/index.ts b/backend/src/index.ts index 6ea3ddc43..e96d7e4da 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -84,11 +84,8 @@ class Server { if (config.DATABASE.ENABLED) { await DB.checkDbConnection(); try { - if (process.env.npm_config_reindex !== undefined) { // Re-index requests - const tables = process.env.npm_config_reindex.split(','); - logger.warn(`Indexed data for "${process.env.npm_config_reindex}" tables will be erased in 5 seconds (using '--reindex')`); - await Common.sleep$(5000); - await databaseMigration.$truncateIndexedData(tables); + if (process.env.npm_config_reindex_blocks === 'true') { // Re-index requests + await databaseMigration.$blocksReindexingTruncate(); } await databaseMigration.$initializeOrMigrateDatabase(); if (Common.indexingEnabled()) { From 955e216037422db6d35e726a7472babe582c89ff Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 15:41:55 +0900 Subject: [PATCH 063/102] AUTOMATIC_BLOCK_REINDEXING is `false` by default --- backend/src/__fixtures__/mempool-config.template.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/__fixtures__/mempool-config.template.json b/backend/src/__fixtures__/mempool-config.template.json index 9890654a5..2bf52cbcf 100644 --- a/backend/src/__fixtures__/mempool-config.template.json +++ b/backend/src/__fixtures__/mempool-config.template.json @@ -7,7 +7,7 @@ "HTTP_PORT": 1, "SPAWN_CLUSTER_PROCS": 2, "API_URL_PREFIX": "__MEMPOOL_API_URL_PREFIX__", - "AUTOMATIC_BLOCK_REINDEXING": true, + "AUTOMATIC_BLOCK_REINDEXING": false, "POLL_RATE_MS": 3, "CACHE_DIR": "__MEMPOOL_CACHE_DIR__", "CLEAR_PROTECTION_MINUTES": 4, From 5fba448dca1ae525473ae1f2fa7a9d130b983182 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Sun, 26 Feb 2023 18:24:08 +0900 Subject: [PATCH 064/102] Truncate coinbase data if it's too long --- backend/src/index.ts | 1 - backend/src/repositories/BlocksRepository.ts | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index e96d7e4da..6f259a2bd 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -36,7 +36,6 @@ import bitcoinRoutes from './api/bitcoin/bitcoin.routes'; import fundingTxFetcher from './tasks/lightning/sync-tasks/funding-tx-fetcher'; import forensicsService from './tasks/lightning/forensics.service'; import priceUpdater from './tasks/price-updater'; -import mining from './api/mining/mining'; import chainTips from './api/chain-tips'; import { AxiosError } from 'axios'; diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index 86dc006ff..c7edb97cb 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -16,6 +16,9 @@ class BlocksRepository { * Save indexed block data in the database */ public async $saveBlockInDatabase(block: BlockExtended) { + const truncatedCoinbaseSignature = block?.extras?.coinbaseSignature?.substring(0, 500); + const truncatedCoinbaseSignatureAscii = block?.extras?.coinbaseSignatureAscii?.substring(0, 500); + try { const query = `INSERT INTO blocks( height, hash, blockTimestamp, size, @@ -65,7 +68,7 @@ class BlocksRepository { block.extras.medianTimestamp, block.extras.header, block.extras.coinbaseAddress, - block.extras.coinbaseSignature, + truncatedCoinbaseSignature, block.extras.utxoSetSize, block.extras.utxoSetChange, block.extras.avgTxSize, @@ -78,7 +81,7 @@ class BlocksRepository { block.extras.segwitTotalSize, block.extras.segwitTotalWeight, block.extras.medianFeeAmt, - block.extras.coinbaseSignatureAscii, + truncatedCoinbaseSignatureAscii, ]; await DB.query(query, params); From 0ce4c5fa4d8bd55280d97262668f9ea8e3940d6e Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com> Date: Sun, 26 Feb 2023 08:23:44 -0800 Subject: [PATCH 065/102] Run Cypress tests on master after merging --- .github/workflows/cypress.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index e8f6d1df1..2cff7b73a 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -3,6 +3,9 @@ name: Cypress Tests on: pull_request: types: [opened, review_requested, synchronize] + push: + branches: + - master jobs: cypress: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" From 4cc0f9b5c74d15bf09514aec6d0c951235b83b3d Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com> Date: Sun, 26 Feb 2023 09:16:33 -0800 Subject: [PATCH 066/102] Reorder triggers --- .github/workflows/cypress.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 2cff7b73a..8c720917e 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -1,11 +1,11 @@ name: Cypress Tests on: + push: + branches: [master] pull_request: types: [opened, review_requested, synchronize] - push: - branches: - - master + jobs: cypress: if: "!contains(github.event.pull_request.labels.*.name, 'ops') && !contains(github.head_ref, 'ops/')" From 5792dee553f03c632fc5888a35490a27e772b281 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 27 Feb 2023 10:47:04 +0900 Subject: [PATCH 067/102] Use bitcoinApiFactory when we don't need verbose blocks or confirmation number --- backend/src/api/blocks.ts | 14 ++++++-------- backend/src/api/chain-tips.ts | 4 ++-- backend/src/api/mining/mining.ts | 14 ++++++++------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 204419496..068184949 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -479,7 +479,7 @@ class Blocks { loadingIndicators.setProgress('block-indexing', progress, false); } const blockHash = await bitcoinApi.$getBlockHash(blockHeight); - const block = BitcoinApi.convertBlock(await bitcoinClient.getBlock(blockHash)); + const block: IEsploraApi.Block = await bitcoinApi.$getBlock(blockHash); const transactions = await this.$getTransactionsExtended(blockHash, block.height, true, true); const blockExtended = await this.$getBlockExtended(block, transactions); @@ -527,13 +527,13 @@ class Blocks { if (blockchainInfo.blocks === blockchainInfo.headers) { const heightDiff = blockHeightTip % 2016; const blockHash = await bitcoinApi.$getBlockHash(blockHeightTip - heightDiff); - const block = BitcoinApi.convertBlock(await bitcoinClient.getBlock(blockHash)); + const block: IEsploraApi.Block = await bitcoinApi.$getBlock(blockHash); this.lastDifficultyAdjustmentTime = block.timestamp; this.currentDifficulty = block.difficulty; if (blockHeightTip >= 2016) { const previousPeriodBlockHash = await bitcoinApi.$getBlockHash(blockHeightTip - heightDiff - 2016); - const previousPeriodBlock = await bitcoinClient.getBlock(previousPeriodBlockHash) + const previousPeriodBlock: IEsploraApi.Block = await bitcoinApi.$getBlock(previousPeriodBlockHash); this.previousDifficultyRetarget = (block.difficulty - previousPeriodBlock.difficulty) / previousPeriodBlock.difficulty * 100; logger.debug(`Initial difficulty adjustment data set.`); } @@ -657,7 +657,7 @@ class Blocks { } const blockHash = await bitcoinApi.$getBlockHash(height); - const block = BitcoinApi.convertBlock(await bitcoinClient.getBlock(blockHash)); + const block: IEsploraApi.Block = await bitcoinApi.$getBlock(blockHash); const transactions = await this.$getTransactionsExtended(blockHash, block.height, true); const blockExtended = await this.$getBlockExtended(block, transactions); @@ -681,7 +681,7 @@ class Blocks { // Block has already been indexed if (Common.indexingEnabled()) { const dbBlock = await blocksRepository.$getBlockByHash(hash); - if (dbBlock != null) { + if (dbBlock !== null) { return prepareBlock(dbBlock); } } @@ -691,10 +691,8 @@ class Blocks { return await bitcoinApi.$getBlock(hash); } - let block = await bitcoinClient.getBlock(hash); - block = prepareBlock(block); - // Bitcoin network, add our custom data on top + const block: IEsploraApi.Block = await bitcoinApi.$getBlock(hash); const transactions = await this.$getTransactionsExtended(hash, block.height, true); const blockExtended = await this.$getBlockExtended(block, transactions); if (Common.indexingEnabled()) { diff --git a/backend/src/api/chain-tips.ts b/backend/src/api/chain-tips.ts index 3384ebb19..46a06f703 100644 --- a/backend/src/api/chain-tips.ts +++ b/backend/src/api/chain-tips.ts @@ -1,5 +1,5 @@ -import logger from "../logger"; -import bitcoinClient from "./bitcoin/bitcoin-client"; +import logger from '../logger'; +import bitcoinClient from './bitcoin/bitcoin-client'; export interface ChainTip { height: number; diff --git a/backend/src/api/mining/mining.ts b/backend/src/api/mining/mining.ts index f33a68dcb..e9b569485 100644 --- a/backend/src/api/mining/mining.ts +++ b/backend/src/api/mining/mining.ts @@ -11,6 +11,8 @@ import DifficultyAdjustmentsRepository from '../../repositories/DifficultyAdjust import config from '../../config'; import BlocksAuditsRepository from '../../repositories/BlocksAuditsRepository'; import PricesRepository from '../../repositories/PricesRepository'; +import bitcoinApiFactory from '../bitcoin/bitcoin-api-factory'; +import { IEsploraApi } from '../bitcoin/esplora-api.interface'; class Mining { blocksPriceIndexingRunning = false; @@ -189,8 +191,8 @@ class Mining { try { const oldestConsecutiveBlockTimestamp = 1000 * (await BlocksRepository.$getOldestConsecutiveBlock()).timestamp; - const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0)); - const genesisTimestamp = genesisBlock.time * 1000; + const genesisBlock: IEsploraApi.Block = await bitcoinApiFactory.$getBlock(await bitcoinClient.getBlockHash(0)); + const genesisTimestamp = genesisBlock.timestamp * 1000; const indexedTimestamp = await HashratesRepository.$getWeeklyHashrateTimestamps(); const hashrates: any[] = []; @@ -292,8 +294,8 @@ class Mining { const oldestConsecutiveBlockTimestamp = 1000 * (await BlocksRepository.$getOldestConsecutiveBlock()).timestamp; try { - const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0)); - const genesisTimestamp = genesisBlock.time * 1000; + const genesisBlock: IEsploraApi.Block = await bitcoinApiFactory.$getBlock(await bitcoinClient.getBlockHash(0)); + const genesisTimestamp = genesisBlock.timestamp * 1000; const indexedTimestamp = (await HashratesRepository.$getRawNetworkDailyHashrate(null)).map(hashrate => hashrate.timestamp); const lastMidnight = this.getDateMidnight(new Date()); let toTimestamp = Math.round(lastMidnight.getTime()); @@ -394,13 +396,13 @@ class Mining { } const blocks: any = await BlocksRepository.$getBlocksDifficulty(); - const genesisBlock = await bitcoinClient.getBlock(await bitcoinClient.getBlockHash(0)); + const genesisBlock: IEsploraApi.Block = await bitcoinApiFactory.$getBlock(await bitcoinClient.getBlockHash(0)); let currentDifficulty = genesisBlock.difficulty; let totalIndexed = 0; if (config.MEMPOOL.INDEXING_BLOCKS_AMOUNT === -1 && indexedHeights[0] !== true) { await DifficultyAdjustmentsRepository.$saveAdjustments({ - time: genesisBlock.time, + time: genesisBlock.timestamp, height: 0, difficulty: currentDifficulty, adjustment: 0.0, From 0aff276a5c8d9eb5d1f8688836d95a0427e4bb73 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 27 Feb 2023 18:00:00 +0900 Subject: [PATCH 068/102] Enforce BlockExtended use for block indexing - Unify /api/v1/block(s) API(s) response format --- .../src/api/bitcoin/bitcoin-api.interface.ts | 31 +++ backend/src/api/bitcoin/bitcoin-api.ts | 2 +- .../src/api/bitcoin/esplora-api.interface.ts | 2 +- backend/src/api/blocks.ts | 224 +++++++++--------- backend/src/api/chain-tips.ts | 6 +- backend/src/api/pools-parser.ts | 2 + backend/src/index.ts | 9 +- backend/src/mempool.interfaces.ts | 69 +++--- backend/src/repositories/BlocksRepository.ts | 206 +++++++++++----- backend/src/repositories/PoolsRepository.ts | 6 +- backend/src/utils/blocks-utils.ts | 33 --- .../src/app/interfaces/node-api.interface.ts | 1 - 12 files changed, 352 insertions(+), 239 deletions(-) delete mode 100644 backend/src/utils/blocks-utils.ts diff --git a/backend/src/api/bitcoin/bitcoin-api.interface.ts b/backend/src/api/bitcoin/bitcoin-api.interface.ts index 54d666794..3afc22897 100644 --- a/backend/src/api/bitcoin/bitcoin-api.interface.ts +++ b/backend/src/api/bitcoin/bitcoin-api.interface.ts @@ -172,4 +172,35 @@ export namespace IBitcoinApi { } } + export interface BlockStats { + "avgfee": number; + "avgfeerate": number; + "avgtxsize": number; + "blockhash": string; + "feerate_percentiles": [number, number, number, number, number]; + "height": number; + "ins": number; + "maxfee": number; + "maxfeerate": number; + "maxtxsize": number; + "medianfee": number; + "mediantime": number; + "mediantxsize": number; + "minfee": number; + "minfeerate": number; + "mintxsize": number; + "outs": number; + "subsidy": number; + "swtotal_size": number; + "swtotal_weight": number; + "swtxs": number; + "time": number; + "total_out": number; + "total_size": number; + "total_weight": number; + "totalfee": number; + "txs": number; + "utxo_increase": number; + "utxo_size_inc": number; + } } diff --git a/backend/src/api/bitcoin/bitcoin-api.ts b/backend/src/api/bitcoin/bitcoin-api.ts index 117245ef8..e20fe9e34 100644 --- a/backend/src/api/bitcoin/bitcoin-api.ts +++ b/backend/src/api/bitcoin/bitcoin-api.ts @@ -28,7 +28,7 @@ class BitcoinApi implements AbstractBitcoinApi { size: block.size, weight: block.weight, previousblockhash: block.previousblockhash, - medianTime: block.mediantime, + mediantime: block.mediantime, }; } diff --git a/backend/src/api/bitcoin/esplora-api.interface.ts b/backend/src/api/bitcoin/esplora-api.interface.ts index eaf6476f4..6d50bddfd 100644 --- a/backend/src/api/bitcoin/esplora-api.interface.ts +++ b/backend/src/api/bitcoin/esplora-api.interface.ts @@ -88,7 +88,7 @@ export namespace IEsploraApi { size: number; weight: number; previousblockhash: string; - medianTime?: number; + mediantime: number; } export interface Address { diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 068184949..75d1ec300 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -2,7 +2,7 @@ import config from '../config'; import bitcoinApi from './bitcoin/bitcoin-api-factory'; import logger from '../logger'; import memPool from './mempool'; -import { BlockExtended, BlockSummary, PoolTag, TransactionExtended, TransactionStripped, TransactionMinerInfo } from '../mempool.interfaces'; +import { BlockExtended, BlockExtension, BlockSummary, PoolTag, TransactionExtended, TransactionStripped, TransactionMinerInfo } from '../mempool.interfaces'; import { Common } from './common'; import diskCache from './disk-cache'; import transactionUtils from './transaction-utils'; @@ -13,7 +13,6 @@ import poolsRepository from '../repositories/PoolsRepository'; import blocksRepository from '../repositories/BlocksRepository'; import loadingIndicators from './loading-indicators'; import BitcoinApi from './bitcoin/bitcoin-api'; -import { prepareBlock } from '../utils/blocks-utils'; import BlocksRepository from '../repositories/BlocksRepository'; import HashratesRepository from '../repositories/HashratesRepository'; import indexer from '../indexer'; @@ -143,7 +142,7 @@ class Blocks { * @param block * @returns BlockSummary */ - private summarizeBlock(block: IBitcoinApi.VerboseBlock): BlockSummary { + public summarizeBlock(block: IBitcoinApi.VerboseBlock): BlockSummary { const stripped = block.tx.map((tx) => { return { txid: tx.txid, @@ -166,80 +165,81 @@ class Blocks { * @returns BlockExtended */ private async $getBlockExtended(block: IEsploraApi.Block, transactions: TransactionExtended[]): Promise { - const blk: BlockExtended = Object.assign({ extras: {} }, block); - blk.extras.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0); - blk.extras.coinbaseTx = transactionUtils.stripCoinbaseTransaction(transactions[0]); - blk.extras.coinbaseRaw = blk.extras.coinbaseTx.vin[0].scriptsig; - blk.extras.usd = priceUpdater.latestPrices.USD; - blk.extras.medianTimestamp = block.medianTime; - blk.extras.orphans = chainTips.getOrphanedBlocksAtHeight(blk.height); + const coinbaseTx = transactionUtils.stripCoinbaseTransaction(transactions[0]); + + const blk: Partial = Object.assign({}, block); + const extras: Partial = {}; + + extras.reward = transactions[0].vout.reduce((acc, curr) => acc + curr.value, 0); + extras.coinbaseRaw = coinbaseTx.vin[0].scriptsig; + extras.orphans = chainTips.getOrphanedBlocksAtHeight(blk.height); if (block.height === 0) { - blk.extras.medianFee = 0; // 50th percentiles - blk.extras.feeRange = [0, 0, 0, 0, 0, 0, 0]; - blk.extras.totalFees = 0; - blk.extras.avgFee = 0; - blk.extras.avgFeeRate = 0; - blk.extras.utxoSetChange = 0; - blk.extras.avgTxSize = 0; - blk.extras.totalInputs = 0; - blk.extras.totalOutputs = 1; - blk.extras.totalOutputAmt = 0; - blk.extras.segwitTotalTxs = 0; - blk.extras.segwitTotalSize = 0; - blk.extras.segwitTotalWeight = 0; + extras.medianFee = 0; // 50th percentiles + extras.feeRange = [0, 0, 0, 0, 0, 0, 0]; + extras.totalFees = 0; + extras.avgFee = 0; + extras.avgFeeRate = 0; + extras.utxoSetChange = 0; + extras.avgTxSize = 0; + extras.totalInputs = 0; + extras.totalOutputs = 1; + extras.totalOutputAmt = 0; + extras.segwitTotalTxs = 0; + extras.segwitTotalSize = 0; + extras.segwitTotalWeight = 0; } else { - const stats = await bitcoinClient.getBlockStats(block.id); - blk.extras.medianFee = stats.feerate_percentiles[2]; // 50th percentiles - blk.extras.feeRange = [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(); - blk.extras.totalFees = stats.totalfee; - blk.extras.avgFee = stats.avgfee; - blk.extras.avgFeeRate = stats.avgfeerate; - blk.extras.utxoSetChange = stats.utxo_increase; - blk.extras.avgTxSize = Math.round(stats.total_size / stats.txs * 100) * 0.01; - blk.extras.totalInputs = stats.ins; - blk.extras.totalOutputs = stats.outs; - blk.extras.totalOutputAmt = stats.total_out; - blk.extras.segwitTotalTxs = stats.swtxs; - blk.extras.segwitTotalSize = stats.swtotal_size; - blk.extras.segwitTotalWeight = stats.swtotal_weight; + const stats: IBitcoinApi.BlockStats = await bitcoinClient.getBlockStats(block.id); + extras.medianFee = stats.feerate_percentiles[2]; // 50th percentiles + extras.feeRange = [stats.minfeerate, stats.feerate_percentiles, stats.maxfeerate].flat(); + extras.totalFees = stats.totalfee; + extras.avgFee = stats.avgfee; + extras.avgFeeRate = stats.avgfeerate; + extras.utxoSetChange = stats.utxo_increase; + extras.avgTxSize = Math.round(stats.total_size / stats.txs * 100) * 0.01; + extras.totalInputs = stats.ins; + extras.totalOutputs = stats.outs; + extras.totalOutputAmt = stats.total_out; + extras.segwitTotalTxs = stats.swtxs; + extras.segwitTotalSize = stats.swtotal_size; + extras.segwitTotalWeight = stats.swtotal_weight; } if (Common.blocksSummariesIndexingEnabled()) { - blk.extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); - if (blk.extras.feePercentiles !== null) { - blk.extras.medianFeeAmt = blk.extras.feePercentiles[3]; + extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(block.id); + if (extras.feePercentiles !== null) { + extras.medianFeeAmt = extras.feePercentiles[3]; } } - blk.extras.virtualSize = block.weight / 4.0; - if (blk.extras.coinbaseTx.vout.length > 0) { - blk.extras.coinbaseAddress = blk.extras.coinbaseTx.vout[0].scriptpubkey_address ?? null; - blk.extras.coinbaseSignature = blk.extras.coinbaseTx.vout[0].scriptpubkey_asm ?? null; - blk.extras.coinbaseSignatureAscii = transactionUtils.hex2ascii(blk.extras.coinbaseTx.vin[0].scriptsig) ?? null; + extras.virtualSize = block.weight / 4.0; + if (coinbaseTx?.vout.length > 0) { + extras.coinbaseAddress = coinbaseTx.vout[0].scriptpubkey_address ?? null; + extras.coinbaseSignature = coinbaseTx.vout[0].scriptpubkey_asm ?? null; + extras.coinbaseSignatureAscii = transactionUtils.hex2ascii(coinbaseTx.vin[0].scriptsig) ?? null; } else { - blk.extras.coinbaseAddress = null; - blk.extras.coinbaseSignature = null; - blk.extras.coinbaseSignatureAscii = null; + extras.coinbaseAddress = null; + extras.coinbaseSignature = null; + extras.coinbaseSignatureAscii = null; } const header = await bitcoinClient.getBlockHeader(block.id, false); - blk.extras.header = header; + extras.header = header; const coinStatsIndex = indexer.isCoreIndexReady('coinstatsindex'); if (coinStatsIndex !== null && coinStatsIndex.best_block_height >= block.height) { const txoutset = await bitcoinClient.getTxoutSetinfo('none', block.height); - blk.extras.utxoSetSize = txoutset.txouts, - blk.extras.totalInputAmt = Math.round(txoutset.block_info.prevout_spent * 100000000); + extras.utxoSetSize = txoutset.txouts, + extras.totalInputAmt = Math.round(txoutset.block_info.prevout_spent * 100000000); } else { - blk.extras.utxoSetSize = null; - blk.extras.totalInputAmt = null; + extras.utxoSetSize = null; + extras.totalInputAmt = null; } if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK)) { let pool: PoolTag; - if (blk.extras?.coinbaseTx !== undefined) { - pool = await this.$findBlockMiner(blk.extras?.coinbaseTx); + if (coinbaseTx !== undefined) { + pool = await this.$findBlockMiner(coinbaseTx); } else { if (config.DATABASE.ENABLED === true) { pool = await poolsRepository.$getUnknownPool(); @@ -252,22 +252,24 @@ class Blocks { logger.warn(`Cannot assign pool to block ${blk.height} and 'unknown' pool does not exist. ` + `Check your "pools" table entries`); } else { - blk.extras.pool = { - id: pool.id, + extras.pool = { + id: pool.uniqueId, name: pool.name, slug: pool.slug, }; } + extras.matchRate = null; if (config.MEMPOOL.AUDIT) { const auditScore = await BlocksAuditsRepository.$getBlockAuditScore(block.id); if (auditScore != null) { - blk.extras.matchRate = auditScore.matchRate; + extras.matchRate = auditScore.matchRate; } } } - return blk; + blk.extras = extras; + return blk; } /** @@ -293,15 +295,18 @@ class Blocks { } else { pools = poolsParser.miningPools; } + for (let i = 0; i < pools.length; ++i) { if (address !== undefined) { - const addresses: string[] = JSON.parse(pools[i].addresses); + const addresses: string[] = typeof pools[i].addresses === 'string' ? + JSON.parse(pools[i].addresses) : pools[i].addresses; if (addresses.indexOf(address) !== -1) { return pools[i]; } } - const regexes: string[] = JSON.parse(pools[i].regexes); + const regexes: string[] = typeof pools[i].regexes === 'string' ? + JSON.parse(pools[i].regexes) : pools[i].regexes; for (let y = 0; y < regexes.length; ++y) { const regex = new RegExp(regexes[y], 'i'); const match = asciiScriptSig.match(regex); @@ -652,7 +657,7 @@ class Blocks { if (Common.indexingEnabled()) { const dbBlock = await blocksRepository.$getBlockByHeight(height); if (dbBlock !== null) { - return prepareBlock(dbBlock); + return dbBlock; } } @@ -665,11 +670,11 @@ class Blocks { await blocksRepository.$saveBlockInDatabase(blockExtended); } - return prepareBlock(blockExtended); + return blockExtended; } /** - * Index a block by hash if it's missing from the database. Returns the block after indexing + * Get one block by its hash */ public async $getBlock(hash: string): Promise { // Check the memory cache @@ -678,29 +683,14 @@ class Blocks { return blockByHash; } - // Block has already been indexed - if (Common.indexingEnabled()) { - const dbBlock = await blocksRepository.$getBlockByHash(hash); - if (dbBlock !== null) { - return prepareBlock(dbBlock); - } - } - - // Not Bitcoin network, return the block as it + // Not Bitcoin network, return the block as it from the bitcoin backend if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) { return await bitcoinApi.$getBlock(hash); } // Bitcoin network, add our custom data on top const block: IEsploraApi.Block = await bitcoinApi.$getBlock(hash); - const transactions = await this.$getTransactionsExtended(hash, block.height, true); - const blockExtended = await this.$getBlockExtended(block, transactions); - if (Common.indexingEnabled()) { - delete(blockExtended['coinbaseTx']); - await blocksRepository.$saveBlockInDatabase(blockExtended); - } - - return blockExtended; + return await this.$indexBlock(block.height); } public async $getStrippedBlockTransactions(hash: string, skipMemoryCache = false, @@ -734,6 +724,18 @@ class Blocks { return summary.transactions; } + /** + * Get 15 blocks + * + * Internally this function uses two methods to get the blocks, and + * the method is automatically selected: + * - Using previous block hash links + * - Using block height + * + * @param fromHeight + * @param limit + * @returns + */ public async $getBlocks(fromHeight?: number, limit: number = 15): Promise { let currentHeight = fromHeight !== undefined ? fromHeight : this.currentBlockHeight; if (currentHeight > this.currentBlockHeight) { @@ -759,11 +761,14 @@ class Blocks { for (let i = 0; i < limit && currentHeight >= 0; i++) { let block = this.getBlocks().find((b) => b.height === currentHeight); if (block) { + // Using the memory cache (find by height) returnBlocks.push(block); } else if (Common.indexingEnabled()) { + // Using indexing (find by height, index on the fly, save in database) block = await this.$indexBlock(currentHeight); returnBlocks.push(block); - } else if (nextHash != null) { + } else if (nextHash !== null) { + // Without indexing, query block on the fly using bitoin backend, follow previous hash links block = await this.$indexBlock(currentHeight); nextHash = block.previousblockhash; returnBlocks.push(block); @@ -788,7 +793,7 @@ class Blocks { const blocks: any[] = []; while (fromHeight <= toHeight) { - let block: any = await blocksRepository.$getBlockByHeight(fromHeight); + let block: BlockExtended | null = await blocksRepository.$getBlockByHeight(fromHeight); if (!block) { await this.$indexBlock(fromHeight); block = await blocksRepository.$getBlockByHeight(fromHeight); @@ -801,11 +806,11 @@ class Blocks { const cleanBlock: any = { height: block.height ?? null, hash: block.id ?? null, - timestamp: block.blockTimestamp ?? null, - median_timestamp: block.medianTime ?? null, + timestamp: block.timestamp ?? null, + median_timestamp: block.mediantime ?? null, previous_block_hash: block.previousblockhash ?? null, difficulty: block.difficulty ?? null, - header: block.header ?? null, + header: block.extras.header ?? null, version: block.version ?? null, bits: block.bits ?? null, nonce: block.nonce ?? null, @@ -813,29 +818,30 @@ class Blocks { weight: block.weight ?? null, tx_count: block.tx_count ?? null, merkle_root: block.merkle_root ?? null, - reward: block.reward ?? null, - total_fee_amt: block.fees ?? null, - avg_fee_amt: block.avg_fee ?? null, - median_fee_amt: block.median_fee_amt ?? null, - fee_amt_percentiles: block.fee_percentiles ?? null, - avg_fee_rate: block.avg_fee_rate ?? null, - median_fee_rate: block.median_fee ?? null, - fee_rate_percentiles: block.fee_span ?? null, - total_inputs: block.total_inputs ?? null, - total_input_amt: block.total_input_amt ?? null, - total_outputs: block.total_outputs ?? null, - total_output_amt: block.total_output_amt ?? null, - segwit_total_txs: block.segwit_total_txs ?? null, - segwit_total_size: block.segwit_total_size ?? null, - segwit_total_weight: block.segwit_total_weight ?? null, - avg_tx_size: block.avg_tx_size ?? null, - utxoset_change: block.utxoset_change ?? null, - utxoset_size: block.utxoset_size ?? null, - coinbase_raw: block.coinbase_raw ?? null, - coinbase_address: block.coinbase_address ?? null, - coinbase_signature: block.coinbase_signature ?? null, - coinbase_signature_ascii: block.coinbase_signature_ascii ?? null, - pool_slug: block.pool_slug ?? null, + reward: block.extras.reward ?? null, + total_fee_amt: block.extras.totalFees ?? null, + avg_fee_amt: block.extras.avgFee ?? null, + median_fee_amt: block.extras.medianFeeAmt ?? null, + fee_amt_percentiles: block.extras.feePercentiles ?? null, + avg_fee_rate: block.extras.avgFeeRate ?? null, + median_fee_rate: block.extras.medianFee ?? null, + fee_rate_percentiles: block.extras.feeRange ?? null, + total_inputs: block.extras.totalInputs ?? null, + total_input_amt: block.extras.totalInputAmt ?? null, + total_outputs: block.extras.totalOutputs ?? null, + total_output_amt: block.extras.totalOutputAmt ?? null, + segwit_total_txs: block.extras.segwitTotalTxs ?? null, + segwit_total_size: block.extras.segwitTotalSize ?? null, + segwit_total_weight: block.extras.segwitTotalWeight ?? null, + avg_tx_size: block.extras.avgTxSize ?? null, + utxoset_change: block.extras.utxoSetChange ?? null, + utxoset_size: block.extras.utxoSetSize ?? null, + coinbase_raw: block.extras.coinbaseRaw ?? null, + coinbase_address: block.extras.coinbaseAddress ?? null, + coinbase_signature: block.extras.coinbaseSignature ?? null, + coinbase_signature_ascii: block.extras.coinbaseSignatureAscii ?? null, + pool_slug: block.extras.pool.slug ?? null, + pool_id: block.extras.pool.id ?? null, }; if (Common.blocksSummariesIndexingEnabled() && cleanBlock.fee_amt_percentiles === null) { diff --git a/backend/src/api/chain-tips.ts b/backend/src/api/chain-tips.ts index 46a06f703..b68b0b281 100644 --- a/backend/src/api/chain-tips.ts +++ b/backend/src/api/chain-tips.ts @@ -43,7 +43,11 @@ class ChainTips { } } - public getOrphanedBlocksAtHeight(height: number): OrphanedBlock[] { + public getOrphanedBlocksAtHeight(height: number | undefined): OrphanedBlock[] { + if (height === undefined) { + return []; + } + const orphans: OrphanedBlock[] = []; for (const block of this.orphanedBlocks) { if (block.height === height) { diff --git a/backend/src/api/pools-parser.ts b/backend/src/api/pools-parser.ts index b34dcb7b8..0f009cd1d 100644 --- a/backend/src/api/pools-parser.ts +++ b/backend/src/api/pools-parser.ts @@ -7,6 +7,7 @@ import { PoolTag } from '../mempool.interfaces'; class PoolsParser { miningPools: any[] = []; unknownPool: any = { + 'id': 0, 'name': 'Unknown', 'link': 'https://learnmeabitcoin.com/technical/coinbase-transaction', 'regexes': '[]', @@ -26,6 +27,7 @@ class PoolsParser { public setMiningPools(pools): void { for (const pool of pools) { pool.regexes = pool.tags; + pool.slug = pool.name.replace(/[^a-z0-9]/gi, '').toLowerCase(); delete(pool.tags); } this.miningPools = pools; diff --git a/backend/src/index.ts b/backend/src/index.ts index 6f259a2bd..7207ae7a8 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -179,7 +179,14 @@ class Server { setTimeout(this.runMainUpdateLoop.bind(this), config.MEMPOOL.POLL_RATE_MS); this.currentBackendRetryInterval = 5; } catch (e: any) { - const loggerMsg = `runMainLoop error: ${(e instanceof Error ? e.message : e)}. Retrying in ${this.currentBackendRetryInterval} sec.`; + let loggerMsg = `Exception in runMainUpdateLoop(). Retrying in ${this.currentBackendRetryInterval} sec.`; + loggerMsg += ` Reason: ${(e instanceof Error ? e.message : e)}.`; + if (e?.stack) { + loggerMsg += ` Stack trace: ${e.stack}`; + } + // When we get a first Exception, only `logger.debug` it and retry after 5 seconds + // From the second Exception, `logger.warn` the Exception and increase the retry delay + // Maximum retry delay is 60 seconds if (this.currentBackendRetryInterval > 5) { logger.warn(loggerMsg); mempool.setOutOfSync(); diff --git a/backend/src/mempool.interfaces.ts b/backend/src/mempool.interfaces.ts index cb95be98a..a7937e01d 100644 --- a/backend/src/mempool.interfaces.ts +++ b/backend/src/mempool.interfaces.ts @@ -1,9 +1,10 @@ import { IEsploraApi } from './api/bitcoin/esplora-api.interface'; import { OrphanedBlock } from './api/chain-tips'; -import { HeapNode } from "./utils/pairing-heap"; +import { HeapNode } from './utils/pairing-heap'; export interface PoolTag { - id: number; // mysql row id + id: number; + uniqueId: number; name: string; link: string; regexes: string; // JSON array @@ -147,44 +148,44 @@ export interface TransactionStripped { } export interface BlockExtension { - totalFees?: number; - medianFee?: number; - feeRange?: number[]; - reward?: number; - coinbaseTx?: TransactionMinerInfo; - matchRate?: number; - pool?: { - id: number; + totalFees: number; + medianFee: number; // median fee rate + feeRange: number[]; // fee rate percentiles + reward: number; + matchRate: number | null; + pool: { + id: number; // Note - This is the `unique_id`, not to mix with the auto increment `id` name: string; slug: string; }; - avgFee?: number; - avgFeeRate?: number; - coinbaseRaw?: string; - usd?: number | null; - medianTimestamp?: number; - blockTime?: number; - orphans?: OrphanedBlock[] | null; - coinbaseAddress?: string | null; - coinbaseSignature?: string | null; - coinbaseSignatureAscii?: string | null; - virtualSize?: number; - avgTxSize?: number; - totalInputs?: number; - totalOutputs?: number; - totalOutputAmt?: number; - medianFeeAmt?: number | null; - feePercentiles?: number[] | null, - segwitTotalTxs?: number; - segwitTotalSize?: number; - segwitTotalWeight?: number; - header?: string; - utxoSetChange?: number; + avgFee: number; + avgFeeRate: number; + coinbaseRaw: string; + orphans: OrphanedBlock[] | null; + coinbaseAddress: string | null; + coinbaseSignature: string | null; + coinbaseSignatureAscii: string | null; + virtualSize: number; + avgTxSize: number; + totalInputs: number; + totalOutputs: number; + totalOutputAmt: number; + medianFeeAmt: number | null; // median fee in sats + feePercentiles: number[] | null, // fee percentiles in sats + segwitTotalTxs: number; + segwitTotalSize: number; + segwitTotalWeight: number; + header: string; + utxoSetChange: number; // Requires coinstatsindex, will be set to NULL otherwise - utxoSetSize?: number | null; - totalInputAmt?: number | null; + utxoSetSize: number | null; + totalInputAmt: number | null; } +/** + * Note: Everything that is added in here will be automatically returned through + * /api/v1/block and /api/v1/blocks APIs + */ export interface BlockExtended extends IEsploraApi.Block { extras: BlockExtension; } diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index c7edb97cb..ac12b3430 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -1,8 +1,7 @@ -import { BlockExtended, BlockPrice } from '../mempool.interfaces'; +import { BlockExtended, BlockExtension, BlockPrice } from '../mempool.interfaces'; import DB from '../database'; import logger from '../logger'; import { Common } from '../api/common'; -import { prepareBlock } from '../utils/blocks-utils'; import PoolsRepository from './PoolsRepository'; import HashratesRepository from './HashratesRepository'; import { escape } from 'mysql2'; @@ -10,6 +9,50 @@ import BlocksSummariesRepository from './BlocksSummariesRepository'; import DifficultyAdjustmentsRepository from './DifficultyAdjustmentsRepository'; import bitcoinClient from '../api/bitcoin/bitcoin-client'; import config from '../config'; +import chainTips from '../api/chain-tips'; +import blocks from '../api/blocks'; + +const BLOCK_DB_FIELDS = ` + blocks.hash AS id, + blocks.height, + blocks.version, + UNIX_TIMESTAMP(blocks.blockTimestamp) AS timestamp, + blocks.bits, + blocks.nonce, + blocks.difficulty, + blocks.merkle_root, + blocks.tx_count, + blocks.size, + blocks.weight, + blocks.previous_block_hash AS previousblockhash, + UNIX_TIMESTAMP(blocks.median_timestamp) AS mediantime, + blocks.fees AS totalFees, + blocks.median_fee AS medianFee, + blocks.fee_span AS feeRange, + blocks.reward, + pools.unique_id AS poolId, + pools.name AS poolName, + pools.slug AS poolSlug, + blocks.avg_fee AS avgFee, + blocks.avg_fee_rate AS avgFeeRate, + blocks.coinbase_raw AS coinbaseRaw, + blocks.coinbase_address AS coinbaseAddress, + blocks.coinbase_signature AS coinbaseSignature, + blocks.coinbase_signature_ascii AS coinbaseSignatureAscii, + blocks.avg_tx_size AS avgTxSize, + blocks.total_inputs AS totalInputs, + blocks.total_outputs AS totalOutputs, + blocks.total_output_amt AS totalOutputAmt, + blocks.median_fee_amt AS medianFeeAmt, + blocks.fee_percentiles AS feePercentiles, + blocks.segwit_total_txs AS segwitTotalTxs, + blocks.segwit_total_size AS segwitTotalSize, + blocks.segwit_total_weight AS segwitTotalWeight, + blocks.header, + blocks.utxoset_change AS utxoSetChange, + blocks.utxoset_size AS utxoSetSize, + blocks.total_input_amt AS totalInputAmts +`; class BlocksRepository { /** @@ -44,6 +87,11 @@ class BlocksRepository { ?, ? )`; + const poolDbId = await PoolsRepository.$getPoolByUniqueId(block.extras.pool.id); + if (!poolDbId) { + throw Error(`Could not find a mining pool with the unique_id = ${block.extras.pool.id}. This error should never be printed.`); + } + const params: any[] = [ block.height, block.id, @@ -53,7 +101,7 @@ class BlocksRepository { block.tx_count, block.extras.coinbaseRaw, block.difficulty, - block.extras.pool?.id, // Should always be set to something + poolDbId.id, block.extras.totalFees, JSON.stringify(block.extras.feeRange), block.extras.medianFee, @@ -65,7 +113,7 @@ class BlocksRepository { block.previousblockhash, block.extras.avgFee, block.extras.avgFeeRate, - block.extras.medianTimestamp, + block.mediantime, block.extras.header, block.extras.coinbaseAddress, truncatedCoinbaseSignature, @@ -87,9 +135,9 @@ class BlocksRepository { await DB.query(query, params); } catch (e: any) { if (e.errno === 1062) { // ER_DUP_ENTRY - This scenario is possible upon node backend restart - logger.debug(`$saveBlockInDatabase() - Block ${block.height} has already been indexed, ignoring`); + logger.debug(`$saveBlockInDatabase() - Block ${block.height} has already been indexed, ignoring`, logger.tags.mining); } else { - logger.err('Cannot save indexed block into db. Reason: ' + (e instanceof Error ? e.message : e)); + logger.err('Cannot save indexed block into db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining); throw e; } } @@ -307,34 +355,17 @@ class BlocksRepository { /** * Get blocks mined by a specific mining pool */ - public async $getBlocksByPool(slug: string, startHeight?: number): Promise { + public async $getBlocksByPool(slug: string, startHeight?: number): Promise { const pool = await PoolsRepository.$getPool(slug); if (!pool) { throw new Error('This mining pool does not exist ' + escape(slug)); } const params: any[] = []; - let query = ` SELECT - blocks.height, - hash as id, - UNIX_TIMESTAMP(blocks.blockTimestamp) as blockTimestamp, - size, - weight, - tx_count, - coinbase_raw, - difficulty, - fees, - fee_span, - median_fee, - reward, - version, - bits, - nonce, - merkle_root, - previous_block_hash as previousblockhash, - avg_fee, - avg_fee_rate + let query = ` + SELECT ${BLOCK_DB_FIELDS} FROM blocks + JOIN pools ON blocks.pool_id = pools.id WHERE pool_id = ?`; params.push(pool.id); @@ -347,11 +378,11 @@ class BlocksRepository { LIMIT 10`; try { - const [rows] = await DB.query(query, params); + const [rows]: any[] = await DB.query(query, params); const blocks: BlockExtended[] = []; - for (const block of rows) { - blocks.push(prepareBlock(block)); + for (const block of rows) { + blocks.push(await this.formatDbBlockIntoExtendedBlock(block)); } return blocks; @@ -364,32 +395,21 @@ class BlocksRepository { /** * Get one block by height */ - public async $getBlockByHeight(height: number): Promise { + public async $getBlockByHeight(height: number): Promise { try { - const [rows]: any[] = await DB.query(`SELECT - blocks.*, - hash as id, - UNIX_TIMESTAMP(blocks.blockTimestamp) as blockTimestamp, - UNIX_TIMESTAMP(blocks.median_timestamp) as medianTime, - pools.id as pool_id, - pools.name as pool_name, - pools.link as pool_link, - pools.slug as pool_slug, - pools.addresses as pool_addresses, - pools.regexes as pool_regexes, - previous_block_hash as previousblockhash + const [rows]: any[] = await DB.query(` + SELECT ${BLOCK_DB_FIELDS} FROM blocks JOIN pools ON blocks.pool_id = pools.id - WHERE blocks.height = ${height} - `); + WHERE blocks.height = ?`, + [height] + ); if (rows.length <= 0) { return null; } - rows[0].fee_span = JSON.parse(rows[0].fee_span); - rows[0].fee_percentiles = JSON.parse(rows[0].fee_percentiles); - return rows[0]; + return await this.formatDbBlockIntoExtendedBlock(rows[0]); } catch (e) { logger.err(`Cannot get indexed block ${height}. Reason: ` + (e instanceof Error ? e.message : e)); throw e; @@ -402,10 +422,7 @@ class BlocksRepository { public async $getBlockByHash(hash: string): Promise { try { const query = ` - SELECT *, blocks.height, UNIX_TIMESTAMP(blocks.blockTimestamp) as blockTimestamp, hash as id, - pools.id as pool_id, pools.name as pool_name, pools.link as pool_link, pools.slug as pool_slug, - pools.addresses as pool_addresses, pools.regexes as pool_regexes, - previous_block_hash as previousblockhash + SELECT ${BLOCK_DB_FIELDS} FROM blocks JOIN pools ON blocks.pool_id = pools.id WHERE hash = ?; @@ -415,9 +432,8 @@ class BlocksRepository { if (rows.length <= 0) { return null; } - - rows[0].fee_span = JSON.parse(rows[0].fee_span); - return rows[0]; + + return await this.formatDbBlockIntoExtendedBlock(rows[0]); } catch (e) { logger.err(`Cannot get indexed block ${hash}. Reason: ` + (e instanceof Error ? e.message : e)); throw e; @@ -833,6 +849,86 @@ class BlocksRepository { throw e; } } + + /** + * Convert a mysql row block into a BlockExtended. Note that you + * must provide the correct field into dbBlk object param + * + * @param dbBlk + */ + private async formatDbBlockIntoExtendedBlock(dbBlk: any): Promise { + const blk: Partial = {}; + const extras: Partial = {}; + + // IEsploraApi.Block + blk.id = dbBlk.id; + blk.height = dbBlk.height; + blk.version = dbBlk.version; + blk.timestamp = dbBlk.timestamp; + blk.bits = dbBlk.bits; + blk.nonce = dbBlk.nonce; + blk.difficulty = dbBlk.difficulty; + blk.merkle_root = dbBlk.merkle_root; + blk.tx_count = dbBlk.tx_count; + blk.size = dbBlk.size; + blk.weight = dbBlk.weight; + blk.previousblockhash = dbBlk.previousblockhash; + blk.mediantime = dbBlk.mediantime; + + // BlockExtension + extras.totalFees = dbBlk.totalFees; + extras.medianFee = dbBlk.medianFee; + extras.feeRange = JSON.parse(dbBlk.feeRange); + extras.reward = dbBlk.reward; + extras.pool = { + id: dbBlk.poolId, + name: dbBlk.poolName, + slug: dbBlk.poolSlug, + }; + extras.avgFee = dbBlk.avgFee; + extras.avgFeeRate = dbBlk.avgFeeRate; + extras.coinbaseRaw = dbBlk.coinbaseRaw; + extras.coinbaseAddress = dbBlk.coinbaseAddress; + extras.coinbaseSignature = dbBlk.coinbaseSignature; + extras.coinbaseSignatureAscii = dbBlk.coinbaseSignatureAscii; + extras.avgTxSize = dbBlk.avgTxSize; + extras.totalInputs = dbBlk.totalInputs; + extras.totalOutputs = dbBlk.totalOutputs; + extras.totalOutputAmt = dbBlk.totalOutputAmt; + extras.medianFeeAmt = dbBlk.medianFeeAmt; + extras.feePercentiles = JSON.parse(dbBlk.feePercentiles); + extras.segwitTotalTxs = dbBlk.segwitTotalTxs; + extras.segwitTotalSize = dbBlk.segwitTotalSize; + extras.segwitTotalWeight = dbBlk.segwitTotalWeight; + extras.header = dbBlk.header, + extras.utxoSetChange = dbBlk.utxoSetChange; + extras.utxoSetSize = dbBlk.utxoSetSize; + extras.totalInputAmt = dbBlk.totalInputAmt; + extras.virtualSize = dbBlk.weight / 4.0; + + // Re-org can happen after indexing so we need to always get the + // latest state from core + extras.orphans = chainTips.getOrphanedBlocksAtHeight(dbBlk.height); + + // If we're missing block summary related field, check if we can populate them on the fly now + if (Common.blocksSummariesIndexingEnabled() && + (extras.medianFeeAmt === null || extras.feePercentiles === null)) + { + extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(dbBlk.id); + if (extras.feePercentiles === null) { + const block = await bitcoinClient.getBlock(dbBlk.id, 2); + const summary = blocks.summarizeBlock(block); + await BlocksSummariesRepository.$saveSummary({ height: block.height, mined: summary }); + extras.feePercentiles = await BlocksSummariesRepository.$getFeePercentilesByBlockId(dbBlk.id); + } + if (extras.feePercentiles !== null) { + extras.medianFeeAmt = extras.feePercentiles[3]; + } + } + + blk.extras = extras; + return blk; + } } export default new BlocksRepository(); diff --git a/backend/src/repositories/PoolsRepository.ts b/backend/src/repositories/PoolsRepository.ts index 236955d65..293fd5e39 100644 --- a/backend/src/repositories/PoolsRepository.ts +++ b/backend/src/repositories/PoolsRepository.ts @@ -10,7 +10,7 @@ class PoolsRepository { * Get all pools tagging info */ public async $getPools(): Promise { - const [rows] = await DB.query('SELECT id, name, addresses, regexes, slug FROM pools;'); + const [rows] = await DB.query('SELECT id, unique_id as uniqueId, name, addresses, regexes, slug FROM pools'); return rows; } @@ -18,10 +18,10 @@ class PoolsRepository { * Get unknown pool tagging info */ public async $getUnknownPool(): Promise { - let [rows]: any[] = await DB.query('SELECT id, name, slug FROM pools where name = "Unknown"'); + let [rows]: any[] = await DB.query('SELECT id, unique_id as uniqueId, name, slug FROM pools where name = "Unknown"'); if (rows && rows.length === 0 && config.DATABASE.ENABLED) { await poolsParser.$insertUnknownPool(); - [rows] = await DB.query('SELECT id, name, slug FROM pools where name = "Unknown"'); + [rows] = await DB.query('SELECT id, unique_id as uniqueId, name, slug FROM pools where name = "Unknown"'); } return rows[0]; } diff --git a/backend/src/utils/blocks-utils.ts b/backend/src/utils/blocks-utils.ts deleted file mode 100644 index 43a2fc964..000000000 --- a/backend/src/utils/blocks-utils.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { BlockExtended } from '../mempool.interfaces'; - -export function prepareBlock(block: any): BlockExtended { - return { - id: block.id ?? block.hash, // hash for indexed block - timestamp: block.timestamp ?? block.time ?? block.blockTimestamp, // blockTimestamp for indexed block - height: block.height, - version: block.version, - bits: (typeof block.bits === 'string' ? parseInt(block.bits, 16): block.bits), - nonce: block.nonce, - difficulty: block.difficulty, - merkle_root: block.merkle_root ?? block.merkleroot, - tx_count: block.tx_count ?? block.nTx, - size: block.size, - weight: block.weight, - previousblockhash: block.previousblockhash, - extras: { - coinbaseRaw: block.coinbase_raw ?? block.extras?.coinbaseRaw, - medianFee: block.medianFee ?? block.median_fee ?? block.extras?.medianFee, - feeRange: block.feeRange ?? block?.extras?.feeRange ?? block.fee_span, - reward: block.reward ?? block?.extras?.reward, - totalFees: block.totalFees ?? block?.fees ?? block?.extras?.totalFees, - avgFee: block?.extras?.avgFee ?? block.avg_fee, - avgFeeRate: block?.avgFeeRate ?? block.avg_fee_rate, - pool: block?.extras?.pool ?? (block?.pool_id ? { - id: block.pool_id, - name: block.pool_name, - slug: block.pool_slug, - } : undefined), - usd: block?.extras?.usd ?? block.usd ?? null, - } - }; -} diff --git a/frontend/src/app/interfaces/node-api.interface.ts b/frontend/src/app/interfaces/node-api.interface.ts index 8fa30a723..7ed32a9de 100644 --- a/frontend/src/app/interfaces/node-api.interface.ts +++ b/frontend/src/app/interfaces/node-api.interface.ts @@ -114,7 +114,6 @@ export interface BlockExtension { medianFee?: number; feeRange?: number[]; reward?: number; - coinbaseTx?: Transaction; coinbaseRaw?: string; matchRate?: number; pool?: { From 01d699e454648a97a4f374e120f3276666691461 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 27 Feb 2023 18:39:02 +0900 Subject: [PATCH 069/102] Add missing match rate to the block returned from the database --- backend/src/repositories/BlocksRepository.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index ac12b3430..9cd31bbab 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -11,6 +11,7 @@ import bitcoinClient from '../api/bitcoin/bitcoin-client'; import config from '../config'; import chainTips from '../api/chain-tips'; import blocks from '../api/blocks'; +import BlocksAuditsRepository from './BlocksAuditsRepository'; const BLOCK_DB_FIELDS = ` blocks.hash AS id, @@ -910,6 +911,15 @@ class BlocksRepository { // latest state from core extras.orphans = chainTips.getOrphanedBlocksAtHeight(dbBlk.height); + // Match rate is not part of the blocks table, but it is part of APIs so we must include it + extras.matchRate = null; + if (config.MEMPOOL.AUDIT) { + const auditScore = await BlocksAuditsRepository.$getBlockAuditScore(dbBlk.id); + if (auditScore != null) { + extras.matchRate = auditScore.matchRate; + } + } + // If we're missing block summary related field, check if we can populate them on the fly now if (Common.blocksSummariesIndexingEnabled() && (extras.medianFeeAmt === null || extras.feePercentiles === null)) From 76ae9d4ccba76ba8d8a854d9ce39474185bf273a Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Mon, 27 Feb 2023 19:06:46 +0900 Subject: [PATCH 070/102] Wipe the disk cache since we have a new block structure --- backend/src/api/disk-cache.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/disk-cache.ts b/backend/src/api/disk-cache.ts index a75fd43cc..2a53e7b9b 100644 --- a/backend/src/api/disk-cache.ts +++ b/backend/src/api/disk-cache.ts @@ -9,7 +9,7 @@ import { TransactionExtended } from '../mempool.interfaces'; import { Common } from './common'; class DiskCache { - private cacheSchemaVersion = 2; + private cacheSchemaVersion = 3; private static FILE_NAME = config.MEMPOOL.CACHE_DIR + '/cache.json'; private static FILE_NAMES = config.MEMPOOL.CACHE_DIR + '/cache{number}.json'; From f471a85d1d006ae3c775067131b9ef4c378044f4 Mon Sep 17 00:00:00 2001 From: softsimon Date: Mon, 27 Feb 2023 23:09:11 +0400 Subject: [PATCH 071/102] Transifex pull (2) --- frontend/src/locale/messages.ar.xlf | 513 +++++++++++------ frontend/src/locale/messages.fi.xlf | 854 ++++++++++++++++++++-------- frontend/src/locale/messages.it.xlf | 657 +++++++++++++-------- frontend/src/locale/messages.nb.xlf | 818 ++++++++++++++++++-------- frontend/src/locale/messages.pt.xlf | 717 +++++++++++++++-------- frontend/src/locale/messages.ru.xlf | 700 +++++++++++++++-------- frontend/src/locale/messages.uk.xlf | 837 +++++++++++++++++++-------- 7 files changed, 3520 insertions(+), 1576 deletions(-) diff --git a/frontend/src/locale/messages.ar.xlf b/frontend/src/locale/messages.ar.xlf index 4d1e62999..20e74f524 100644 --- a/frontend/src/locale/messages.ar.xlf +++ b/frontend/src/locale/messages.ar.xlf @@ -359,11 +359,11 @@ src/app/components/block/block.component.html - 303,304 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -384,11 +384,11 @@ src/app/components/block/block.component.html - 304,305 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -598,7 +598,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -777,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -795,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -990,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1038,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1054,11 +1070,11 @@ src/app/components/block/block.component.html - 245,246 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1108,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1130,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1142,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1158,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1190,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1211,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1233,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1253,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1269,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1569,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1585,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2049,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2065,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2077,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2090,15 +2102,15 @@ فهرس الكتل src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2143,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 478 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2169,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 478,479 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2187,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 481,483 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2221,19 +2233,19 @@ src/app/components/block/block.component.html - 123,126 + 124,127 src/app/components/block/block.component.html - 127 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2273,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 483,486 + 477,480 src/app/components/transaction/transaction.component.html - 494,496 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2301,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 206,210 + 213,217 sat/vB shared.sat-vbyte @@ -2315,11 +2327,11 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize @@ -2432,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2462,11 +2474,11 @@ الحجم src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html @@ -2494,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2506,11 +2518,11 @@ الوزن src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2522,7 +2534,19 @@ src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + الحجم لكل الوزن + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2538,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee متوسط ​​الرسوم @@ -2556,7 +2571,7 @@ src/app/components/block/block.component.html - 126,127 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2573,11 +2588,11 @@ src/app/components/block/block.component.html - 131,133 + 138,140 src/app/components/block/block.component.html - 157,160 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2595,7 +2610,7 @@ src/app/components/block/block.component.html - 166,168 + 173,175 block.miner @@ -2608,7 +2623,7 @@ src/app/components/block/block.component.ts - 234 + 242 @@ -2661,6 +2676,14 @@ src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2684,7 +2707,7 @@ نطاق الرسوم src/app/components/block/block.component.html - 122,123 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2697,7 +2720,7 @@ بناءً على متوسط معاملة native segwit التي يبلغ حجمها 140 ف بايت src/app/components/block/block.component.html - 127,129 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2721,25 +2744,26 @@ Transaction fee tooltip - - Subsidy + fees: - مكافأة الكتلة + الرسوم: + + Subsidy + fees + كفالة + رسوم src/app/components/block/block.component.html - 146,149 + 153,156 src/app/components/block/block.component.html - 161,165 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees Expected + متوقع src/app/components/block/block.component.html - 209 + 216 block.expected @@ -2748,11 +2772,11 @@ تجريبي src/app/components/block/block.component.html - 209,210 + 216,217 src/app/components/block/block.component.html - 215,217 + 222,224 beta @@ -2761,23 +2785,25 @@ فعلي src/app/components/block/block.component.html - 211,215 + 218,222 block.actual Expected Block + الكتله المتوقعه src/app/components/block/block.component.html - 215 + 222 block.expected-block Actual Block + الكتله الحاليه src/app/components/block/block.component.html - 224 + 231 block.actual-block @@ -2786,7 +2812,7 @@ وحدات صغيرة. src/app/components/block/block.component.html - 249,251 + 256,258 block.bits @@ -2795,7 +2821,7 @@ Merkle root src/app/components/block/block.component.html - 253,255 + 260,262 block.merkle-root @@ -2804,7 +2830,7 @@ الصعوبه src/app/components/block/block.component.html - 264,267 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2833,7 +2859,7 @@ رمز أحادي فردي الإستخدام. src/app/components/block/block.component.html - 268,270 + 275,277 block.nonce @@ -2842,15 +2868,16 @@ عنوان الكتلة الست عشري src/app/components/block/block.component.html - 272,273 + 279,280 block.header Audit + مراجعة src/app/components/block/block.component.html - 290,294 + 297,301 Toggle Audit block.toggle-audit @@ -2860,11 +2887,11 @@ التفاصيل src/app/components/block/block.component.html - 297,301 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2886,11 +2913,11 @@ خطأ في تحميل البيانات. src/app/components/block/block.component.html - 316,318 + 323,325 src/app/components/block/block.component.html - 355,359 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2915,7 +2942,7 @@ لماذا الكتلة فارغة؟ src/app/components/block/block.component.html - 377,383 + 384,390 block.empty-block-explanation @@ -3024,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 212,216 + 219,223 dashboard.txs @@ -3263,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 239,240 + 246,247 dashboard.incoming-transactions @@ -3276,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 242,245 + 249,252 dashboard.backend-is-synchronizing @@ -3289,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 247,252 + 254,259 vB/s shared.vbytes-per-second @@ -3303,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 210,211 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3679,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + بث معاملة + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) حظ حوض التعدين (١ اسبوع) @@ -3746,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3776,12 +3829,25 @@ mining.rank + + Avg Health + معدل الصحة. + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks الكتل الفارغة src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3790,7 +3856,7 @@ كل المعدنين src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3799,7 +3865,7 @@ حظ التجمعات (الاسبوع) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3808,7 +3874,7 @@ عدد التجمعات (الاسبوع) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3817,7 +3883,7 @@ تجمعات التعدين src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4044,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - بث معاملة - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,162 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex الرقم الست عشري للعملية @@ -4071,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4196,6 +4244,77 @@ search-form.search-title + + Bitcoin Block Height + إرتفاع بلوك بيتكوين + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + معاملة البتكوين + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + عنوان البتكوين + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + كتلة البتكوين + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + عناوين البتكوين + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + نود شبكة البرق + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + قنوات شبكة البرق + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) المعاملات الغير مؤكدة بالبايتات الافتراضية (ساتوشي/بايت افتراضي) @@ -4480,7 +4599,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4490,7 +4609,7 @@ اول رؤية src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4524,7 +4643,7 @@ الوقت المقدر للوصول src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4534,7 +4653,7 @@ بعد عدة ساعات (أو أكثر) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4544,11 +4663,11 @@ منحدر src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4558,7 +4677,7 @@ الاصل src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4568,11 +4687,11 @@ التدفق src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4582,7 +4701,7 @@ اخف الرسم البياني src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4591,7 +4710,7 @@ اعرض المزيد src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4608,7 +4727,7 @@ قلل العرض src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4621,7 +4740,7 @@ اعرض الرسم االبياني src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4630,7 +4749,7 @@ وقت القفل src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4639,7 +4758,7 @@ الحوالة غير موجودة. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4648,7 +4767,7 @@ في انتظار ظهورها على mempool src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4657,7 +4776,7 @@ معدل الرسوم الفعلي src/app/components/transaction/transaction.component.html - 491,494 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4806,7 +4925,7 @@ اعرض المزيد من المدخلات لتوضيح بيانات الرسوم src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4815,7 +4934,7 @@ متبقي src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -5066,21 +5185,12 @@ dashboard.latest-transactions - - USD - دولار - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee الحد الادنى للعمولة src/app/dashboard/dashboard.component.html - 203,204 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5090,7 +5200,7 @@ تطهير src/app/dashboard/dashboard.component.html - 204,205 + 211,212 Purgin below fee dashboard.purging @@ -5100,7 +5210,7 @@ استخدام الذاكرة src/app/dashboard/dashboard.component.html - 216,217 + 223,224 Memory usage dashboard.memory-usage @@ -5110,10 +5220,18 @@ L-BTC المتداول src/app/dashboard/dashboard.component.html - 230,232 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service اعادة تشغيل خادم API @@ -5448,7 +5566,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5595,6 +5713,29 @@ 37 + + Mutually closed + مغلق تزامنا + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + مغلق اجبارا + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open مفتوحة @@ -5721,6 +5862,22 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity متوسط السعة @@ -5849,11 +6006,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5923,11 +6080,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6091,6 +6248,28 @@ lightning.node-fee-distribution + + Outgoing Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week نسبة التغير للاسبوع الماضي @@ -6100,11 +6279,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6352,7 +6531,7 @@ لا يوجد معلومات عن الموقع الجغرافي src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 diff --git a/frontend/src/locale/messages.fi.xlf b/frontend/src/locale/messages.fi.xlf index 211113e44..5a95d0dd8 100644 --- a/frontend/src/locale/messages.fi.xlf +++ b/frontend/src/locale/messages.fi.xlf @@ -11,6 +11,7 @@ Slide of + Sivu / node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,18 +1170,18 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features Fee per vByte - Siirtokulu per vByte + Siirtomaksu per vByte src/app/bisq/bisq-transaction/bisq-transaction.component.html 69,71 @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1435,7 +1449,7 @@ Our mempool and blockchain explorer for the Bitcoin community, focusing on the transaction fee market and multi-layer ecosystem, completely self-hosted without any trusted third-parties. - Meidän mempool- ja lohkoketjuselain Bitcoin yhteisölle, joka keskittyy siirtokulumarkkinoihin ja monikerroksiseen ekosysteemiin, täysin itse ylläpidetty ilman luotettuja kolmansia osapuolia. + Mempool- ja lohkoketjuselaimemme Bitcoin yhteisölle, joka keskittyy siirtomaksumarkkinoihin ja monikerroksiseen ekosysteemiin, täysin itse ylläpidetty ilman luotettuja kolmansia osapuolia. src/app/components/about/about.component.html 13,17 @@ -1461,6 +1475,7 @@ Community Integrations + Yhteisön integraatiot src/app/components/about/about.component.html 191,193 @@ -1529,11 +1544,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Multisig / src/app/components/address-labels/address-labels.component.ts 107 @@ -1565,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1581,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1643,7 +1659,7 @@ Asset - Assetti + Omaisuuserä src/app/components/asset/asset.component.html 3 @@ -1664,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1757,7 +1773,7 @@ Peg In/Out and Burn Transactions - Kiinnitä/Irrota ja Polta Siirtotapahtumat + Kiinnitä/Irrota ja Poltto siirtotapahtumat src/app/components/asset/asset.component.html 79 @@ -1766,7 +1782,7 @@ Issuance and Burn Transactions - Liikkeeseenlasku- ja Poltto Siirtotapahtumat + Liikkeeseenlasku- ja Poltto siirtotapahtumat src/app/components/asset/asset.component.html 80 @@ -1886,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1899,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1912,16 +1928,16 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header Error loading assets data. - Omaisuuserientietoja ladattaessa tapahtui virhe. + Omaisuuserien tietoja ladattaessa tapahtui virhe. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -1961,7 +1977,7 @@ Layer 2 Networks - Toisen kerroksen verkot + 2 kerroksen verkot src/app/components/bisq-master-page/bisq-master-page.component.html 50,51 @@ -2017,7 +2033,7 @@ Block Fee Rates - Siirtokulujen tasot + Siirtomaksujen tasot src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.html 6,8 @@ -2045,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2061,19 +2077,19 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 Block Fees - Lohkojen siirtokulut + Lohkojen siirtomaksut src/app/components/block-fees-graph/block-fees-graph.component.html 6,7 src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2086,15 +2102,15 @@ Lohkojen indeksointi src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2119,6 +2135,7 @@ not available + ei saatavilla src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2127,7 +2144,7 @@ Fee - Siirtokulu + Siirtomaksu src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 22 @@ -2138,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2164,29 +2181,29 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat Fee rate - Siirtokulutaso + Siirtomaksu taso src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 26 src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2198,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2216,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2268,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2296,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2310,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Tarkastuksen tila src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2329,6 +2347,7 @@ Match + Osuma src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2337,6 +2356,7 @@ Removed + Poistettu src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2345,6 +2365,7 @@ Marginal fee rate + Marginaali siirtomaksu taso src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2357,6 +2378,7 @@ Recently broadcasted + Äskettäin lähetetty src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2365,6 +2387,7 @@ Added + Lisätty src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2390,6 +2413,7 @@ No data to display yet. Try again later. + Ei vielä tietoja näytettäväksi. Yritä myöhemmin uudelleen. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2420,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2450,15 +2474,15 @@ Koko src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2482,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2494,11 +2518,11 @@ Paino src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2506,15 +2530,27 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Lohko src/app/components/block/block-preview.component.html 3,7 @@ -2525,24 +2561,16 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee - Keskimääräinen siirtokulu + Keskimääräinen siirtomaksu src/app/components/block/block-preview.component.html 36,37 src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2552,18 +2580,18 @@ Total fees - Siirtokulut yhteensä + Siirtomaksut yhteensä src/app/components/block/block-preview.component.html 41,43 src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2581,7 +2609,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2594,7 +2622,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2619,24 +2647,42 @@ Previous Block - - Block health + + Health + Tila src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Tuntematon src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2657,10 +2703,10 @@ Fee span - Siirtokulu väli + Siirtomaksu väli src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2673,7 +2719,7 @@ Perustuu keskimääräiseen natiiviin 140 vByte segwit-siirtotapahtumaan src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2697,49 +2743,66 @@ Transaction fee tooltip - - Subsidy + fees: - Palkkio + siirtokulut: + + Subsidy + fees + Palkkio + siirtomaksut src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Odotettu src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Todellinen src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Odotettu lohko src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Todellinen lohko src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2748,7 +2811,7 @@ Bitit src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2757,7 +2820,7 @@ Merkle-juuri src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2766,7 +2829,7 @@ Vaikeus src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2795,7 +2858,7 @@ Nonssi src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2804,20 +2867,30 @@ Lohkon järjestysnumero heksa src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Tarkastus + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Yksityiskohdat src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2839,11 +2912,11 @@ Virhe tietojen lataamisessa. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2865,9 +2938,10 @@ Why is this block empty? + Miksi tämä lohko on tyhjä? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2913,18 +2987,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Palkkio @@ -2948,7 +3010,7 @@ Fees - Siirtokulut + Siirtomaksut src/app/components/blocks-list/blocks-list.component.html 21,22 @@ -2988,7 +3050,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3227,7 +3289,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3240,7 +3302,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3253,7 +3315,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3267,7 +3329,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3319,6 +3381,7 @@ Hashrate & Difficulty + Laskentateho & Vaikeusaste src/app/components/graphs/graphs.component.html 15,16 @@ -3327,6 +3390,7 @@ Lightning + Salamaverkko src/app/components/graphs/graphs.component.html 31 @@ -3335,6 +3399,7 @@ Lightning Nodes Per Network + Salamasolmut per verkko src/app/components/graphs/graphs.component.html 34 @@ -3355,6 +3420,7 @@ Lightning Network Capacity + Salamaverkon kapasiteetti src/app/components/graphs/graphs.component.html 36 @@ -3375,6 +3441,7 @@ Lightning Nodes Per ISP + Salamasolmut palveluntarjoajaa kohti src/app/components/graphs/graphs.component.html 38 @@ -3387,6 +3454,7 @@ Lightning Nodes Per Country + Salamasolmut maata kohti src/app/components/graphs/graphs.component.html 40 @@ -3403,6 +3471,7 @@ Lightning Nodes World Map + Salamasolmujen maailmankartta src/app/components/graphs/graphs.component.html 42 @@ -3419,6 +3488,7 @@ Lightning Nodes Channels World Map + Salamasolmu kanavien maailmankartta src/app/components/graphs/graphs.component.html 44 @@ -3516,7 +3586,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3539,9 +3609,10 @@ Lightning Explorer + Salamaverkko selain src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3549,20 +3620,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Dokumentaatio src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3642,6 +3705,32 @@ dashboard.adjustments + + Broadcast Transaction + Siirtotapahtuman kuulutus + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Poolien onni (1vk) @@ -3709,7 +3798,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3739,12 +3828,24 @@ mining.rank + + Avg Health + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Tyhjät lohkot src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3753,7 +3854,7 @@ Kaikki louhijat src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3762,7 +3863,7 @@ Poolien onni (1vk) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3771,7 +3872,7 @@ Poolien määrä (1vk) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3780,7 +3881,7 @@ Louhintapoolit src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3797,6 +3898,7 @@ mining pool + louhintapooli src/app/components/pool/pool-preview.component.html 3,5 @@ -4006,34 +4108,16 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Siirtotapahtuman kuulutus - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex - Transaktion heksa + Transaktion heksanumero src/app/components/push-transaction/push-transaction.component.html 6 src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4065,6 +4149,7 @@ Avg Block Fees + Keskimääräiset lohkomaksut src/app/components/reward-stats/reward-stats.component.html 17 @@ -4077,6 +4162,7 @@ Average fees per block in the past 144 blocks + Keskimääräiset siirtomaksut lohkoa kohti viimeisten 144 lohkon aikana src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4085,6 +4171,7 @@ BTC/block + BTC/lohko src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4094,6 +4181,7 @@ Avg Tx Fee + Keskimääräinen siirtomaksu src/app/components/reward-stats/reward-stats.component.html 30 @@ -4138,6 +4226,7 @@ Explore the full Bitcoin ecosystem + Tutustu koko Bitcoin-ekosysteemiin src/app/components/search-form/search-form.component.html 4,5 @@ -4153,6 +4242,70 @@ search-form.search-title + + Bitcoin Block Height + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool vByte:inä (sat/vByte) @@ -4336,7 +4489,7 @@ In ~ - ~ sisällä + ~ src/app/components/time-until/time-until.component.ts 66 @@ -4410,6 +4563,7 @@ This transaction replaced: + Tämä transaktio korvasi: src/app/components/transaction/transaction.component.html 10,12 @@ -4419,6 +4573,7 @@ Replaced + Korvattu src/app/components/transaction/transaction.component.html 36,39 @@ -4435,7 +4590,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4445,7 +4600,7 @@ Ensimmäiseksi nähty src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4479,7 +4634,7 @@ ETA src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4489,7 +4644,7 @@ Muutamassa tunnissa (tai enemmän) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4499,11 +4654,11 @@ Verso src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4513,37 +4668,40 @@ Juuri src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Virtaus src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow Hide diagram + Piilota kaavio src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram Show more + Näytä enemmän src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4557,9 +4715,10 @@ Show less + Näytä vähemmän src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4569,9 +4728,10 @@ Show diagram + Näytä kaavio src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4580,7 +4740,7 @@ Lukitusaika src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4589,7 +4749,7 @@ Siirtotapahtumaa ei löydy. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4598,16 +4758,16 @@ Odotetaan sen ilmestymistä mempooliin... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear Effective fee rate - Todellinen siirtokulutaso + Todellinen siirtomaksu taso src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4753,22 +4913,25 @@ Show more inputs to reveal fee data + Näytä lisää syötteitä paljastaaksesi siirtomaksutiedot src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + jäljellä src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining other inputs + muut syötteet src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 12 @@ -4777,6 +4940,7 @@ other outputs + muut ulostulot src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 13 @@ -4785,6 +4949,7 @@ Input + Syöte src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 42 @@ -4797,6 +4962,7 @@ Output + Ulostulo src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 43 @@ -4809,6 +4975,7 @@ This transaction saved % on fees by using native SegWit + Tämä siirtotapahtuma säästi % siirtomaksuissa käyttämällä natiivia SegWit:iä src/app/components/tx-features/tx-features.component.html 2 @@ -4835,6 +5002,7 @@ This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit + Tämä siirtotapahtuma säästi % siirtokuluissa käyttämällä SegWit:iä ja voisi säästää % lisää päivittämällä täysin natiiviin SegWit:iin src/app/components/tx-features/tx-features.component.html 4 @@ -4843,6 +5011,7 @@ This transaction could save % on fees by upgrading to native SegWit or % by upgrading to SegWit-P2SH + Tämä siirtotapahtuma voi säästää % siirtomaksuissa päivittämällä natiiviin SegWit:iin tai % päivittämällä SegWit-P2SH:en src/app/components/tx-features/tx-features.component.html 6 @@ -4851,6 +5020,7 @@ This transaction uses Taproot and thereby saved at least % on fees + Tämä siirtotapahtuma käyttää Taprootia ja säästää siten vähintään % siirtomaksuissa. src/app/components/tx-features/tx-features.component.html 12 @@ -4859,6 +5029,7 @@ Taproot + Taproot src/app/components/tx-features/tx-features.component.html 12 @@ -4884,6 +5055,7 @@ This transaction uses Taproot and already saved at least % on fees, but could save an additional % by fully using Taproot + Tämä siirtotapahtuma käyttää Taprootia ja on jo säästänyt vähintään % siirtomaksuissa, mutta voisi säästää vielä lisää % käyttämällä Taprootia täysimääräisesti src/app/components/tx-features/tx-features.component.html 14 @@ -4892,6 +5064,7 @@ This transaction could save % on fees by using Taproot + Tämä siirtotapahtuma voi säästää % siirtomaksuista käyttämällä Taprootia src/app/components/tx-features/tx-features.component.html 16 @@ -4900,6 +5073,7 @@ This transaction does not use Taproot + Tämä transaktio ei käytä Taprootia src/app/components/tx-features/tx-features.component.html 18 @@ -4917,6 +5091,7 @@ This transaction supports Replace-By-Fee (RBF) allowing fee bumping + Tämä siirtotapahtuma tukee Replace-By-Fee (RBF) -toimintoa, joka mahdollistaa siirtomaksujen korottamisen src/app/components/tx-features/tx-features.component.html 28 @@ -4939,7 +5114,7 @@ This transaction does NOT support Replace-By-Fee (RBF) and cannot be fee bumped using this method - Tämä siirtotapahtuma EI tue Replace-By-Fee (RBF), eikä sen siirtokuluja voida nostaa tällä menetelmällä + Tämä siirtotapahtuma EI tue Replace-By-Fee (RBF), eikä sen siirtomaksuja voida nostaa tällä menetelmällä src/app/components/tx-features/tx-features.component.html 29 @@ -4985,7 +5160,7 @@ Transaction Fees - Siirtokulut + Siirtomaksut src/app/dashboard/dashboard.component.html 6,9 @@ -5001,21 +5176,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee - Vähimmäiskulu + Vähimmäis siirtomaksu src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5025,7 +5191,7 @@ Tyhjennys src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5035,7 +5201,7 @@ Muistin käyttö src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5045,16 +5211,24 @@ Käytössä olevat L-BTC src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service REST API-palvelu src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5063,11 +5237,11 @@ Päätepiste src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5076,11 +5250,11 @@ Kuvaus src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5088,7 +5262,7 @@ Oletus työntö: action: 'want', data: ['blocks', ...] ilmaisemaan, mitä haluat työnnettävän. Käytettävissä: blocks, mempool-blocks, live-2h-chart ja stats.Työnnä osoitteeseen liittyvät tapahtumat: 'track-address': '3PbJ...bF9B' vastaanottaa kaikki uudet transaktiot, jotka sisältävät kyseisen osoitteen syötteenä tai tulosteena. Palauttaa transaktioiden joukon. address-transactions uusille mempool-transaktioille ja block-transactions uusille lohkon vahvistetuille transaktioille. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5157,6 +5331,7 @@ Base fee + Perus siirtomaksu src/app/lightning/channel/channel-box/channel-box.component.html 29 @@ -5169,6 +5344,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5189,6 +5365,7 @@ This channel supports zero base fee routing + Tämä kanava tukee perusmaksutonta reititystä src/app/lightning/channel/channel-box/channel-box.component.html 44 @@ -5197,6 +5374,7 @@ Zero base fee + Perusmaksuton src/app/lightning/channel/channel-box/channel-box.component.html 45 @@ -5205,6 +5383,7 @@ This channel does not support zero base fee routing + Tämä kanava ei tue perusmaksutonta reititystä src/app/lightning/channel/channel-box/channel-box.component.html 50 @@ -5213,6 +5392,7 @@ Non-zero base fee + Perusmaksullinen src/app/lightning/channel/channel-box/channel-box.component.html 51 @@ -5221,6 +5401,7 @@ Min HTLC + Min HTLC src/app/lightning/channel/channel-box/channel-box.component.html 57 @@ -5229,6 +5410,7 @@ Max HTLC + Max HTLC src/app/lightning/channel/channel-box/channel-box.component.html 63 @@ -5237,6 +5419,7 @@ Timelock delta + Aikalukko delta src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5245,18 +5428,20 @@ channels + kanavat src/app/lightning/channel/channel-box/channel-box.component.html 79 src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Alkusaldo src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5266,6 +5451,7 @@ Closing balance + Loppusaldo src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5275,6 +5461,7 @@ lightning channel + salamakanava src/app/lightning/channel/channel-preview.component.html 3,5 @@ -5283,6 +5470,7 @@ Inactive + Ei aktiivinen src/app/lightning/channel/channel-preview.component.html 10,11 @@ -5293,12 +5481,13 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive Active + Aktiivinen src/app/lightning/channel/channel-preview.component.html 11,12 @@ -5309,12 +5498,13 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active Closed + Suljettu src/app/lightning/channel/channel-preview.component.html 12,14 @@ -5329,12 +5519,13 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed Created + Luotu src/app/lightning/channel/channel-preview.component.html 23,26 @@ -5347,6 +5538,7 @@ Capacity + Kapasiteetti src/app/lightning/channel/channel-preview.component.html 27,28 @@ -5357,7 +5549,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5365,7 +5557,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5399,6 +5591,7 @@ ppm + ppm src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5419,6 +5612,7 @@ Lightning channel + Salamakanava src/app/lightning/channel/channel.component.html 2,5 @@ -5431,6 +5625,7 @@ Last update + Viimeisin päivitys src/app/lightning/channel/channel.component.html 33,34 @@ -5463,18 +5658,20 @@ Closing date + Päättymispäivä src/app/lightning/channel/channel.component.html 37,38 src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Sulkenut src/app/lightning/channel/channel.component.html 52,54 @@ -5483,6 +5680,7 @@ Opening transaction + Avaava transaktio src/app/lightning/channel/channel.component.html 84,85 @@ -5491,6 +5689,7 @@ Closing transaction + Sulkeva transaktio src/app/lightning/channel/channel.component.html 93,95 @@ -5499,13 +5698,36 @@ Channel: + Kanava: src/app/lightning/channel/channel.component.ts 37 + + Mutually closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Avaa src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5514,17 +5736,19 @@ No channels to display + Ei näytettäviä kanavia src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list Alias + Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5558,29 +5782,32 @@ Status + Tila src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status Channel ID + Kanavan tunnus src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id sats + sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5624,8 +5851,25 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity + Keskimääräinen kapasiteetti src/app/lightning/channels-statistics/channels-statistics.component.html 13,15 @@ -5638,6 +5882,7 @@ Avg Fee Rate + Keskimääräinen siirtomaksu prosentti src/app/lightning/channels-statistics/channels-statistics.component.html 26,28 @@ -5650,6 +5895,7 @@ The average fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Reitityssolmujen perimien siirtomaksujen keskiarvo-osuus, kun ei oteta huomioon siirtomaksujen osuutta, jotka ovat yli 0,5 % tai 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 28,30 @@ -5658,6 +5904,7 @@ Avg Base Fee + Keskimääräinen perus siirtomaksu src/app/lightning/channels-statistics/channels-statistics.component.html 41,43 @@ -5670,6 +5917,7 @@ The average base fee charged by routing nodes, ignoring base fees > 5000ppm + Reitityssolmujen perimä keskimääräinen perusmaksu, kun ei oteta huomioon perusmaksuja, jotka ovat yli 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 43,45 @@ -5678,6 +5926,7 @@ Med Capacity + Keskisuuri kapasiteetti src/app/lightning/channels-statistics/channels-statistics.component.html 59,61 @@ -5686,6 +5935,7 @@ Med Fee Rate + Keskisuuri siirtomaksu taso src/app/lightning/channels-statistics/channels-statistics.component.html 72,74 @@ -5694,6 +5944,7 @@ The median fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Reitityssolmujen perimän siirtokulun mediaani, kun otetaan huomioon siirtokulu prosentit, jotka ovat yli 0,5 % tai 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 74,76 @@ -5702,6 +5953,7 @@ Med Base Fee + Keskisuuri perus siirtomaksu src/app/lightning/channels-statistics/channels-statistics.component.html 87,89 @@ -5710,6 +5962,7 @@ The median base fee charged by routing nodes, ignoring base fees > 5000ppm + Reitityssolmujen perimän perusmaksun mediaani, kun ei oteta huomioon perus siirtomaksuja, jotka ovat yli 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 89,91 @@ -5718,6 +5971,7 @@ Lightning node group + Salamasolmuryhmä src/app/lightning/group/group-preview.component.html 3,5 @@ -5730,6 +5984,7 @@ Nodes + Solmut src/app/lightning/group/group-preview.component.html 25,29 @@ -5740,11 +5995,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5766,6 +6021,7 @@ Liquidity + Likviditeetti src/app/lightning/group/group-preview.component.html 29,31 @@ -5802,6 +6058,7 @@ Channels + Kanavat src/app/lightning/group/group-preview.component.html 40,43 @@ -5812,11 +6069,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5862,6 +6119,7 @@ Average size + Keskimääräinen koko src/app/lightning/group/group-preview.component.html 44,46 @@ -5874,6 +6132,7 @@ Location + Sijainti src/app/lightning/group/group.component.html 74,77 @@ -5914,6 +6173,7 @@ Network Statistics + Verkon tilastot src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 10 @@ -5922,6 +6182,7 @@ Channels Statistics + Kanavien tilastot src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 24 @@ -5930,6 +6191,7 @@ Lightning Network History + Salamaverkon historia src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 49 @@ -5938,6 +6200,7 @@ Liquidity Ranking + Likviditeettiluokitus src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 62 @@ -5954,6 +6217,7 @@ Connectivity Ranking + Yhdistettävyysluokitus src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 76 @@ -5966,30 +6230,57 @@ Fee distribution + Siirtomaksujen jakautuminen src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Lähtevät siirtomaksut + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Saapuvat siirtomaksut + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week + Prosenttimuutos viime viikolla src/app/lightning/node-statistics/node-statistics.component.html 5,7 src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week Lightning node + Salamasolmu src/app/lightning/node/node-preview.component.html 3,5 @@ -6006,6 +6297,7 @@ Active capacity + Aktiivinen kapasiteetti src/app/lightning/node/node-preview.component.html 20,22 @@ -6018,6 +6310,7 @@ Active channels + Aktiiviset kanavat src/app/lightning/node/node-preview.component.html 26,30 @@ -6030,6 +6323,7 @@ Country + Maa src/app/lightning/node/node-preview.component.html 44,47 @@ -6038,6 +6332,7 @@ No node found for public key "" + Julkiselle avaimelle &quot;&quot; ei löytynyt solmua src/app/lightning/node/node.component.html 17,19 @@ -6046,6 +6341,7 @@ Average channel size + Kanavan keskimääräinen koko src/app/lightning/node/node.component.html 40,43 @@ -6054,6 +6350,7 @@ Avg channel distance + Keskimääräinen kanavaetäisyys src/app/lightning/node/node.component.html 56,57 @@ -6062,6 +6359,7 @@ Color + Väri src/app/lightning/node/node.component.html 79,81 @@ -6070,6 +6368,7 @@ ISP + Palveluntarjoaja src/app/lightning/node/node.component.html 86,87 @@ -6082,6 +6381,7 @@ Exclusively on Tor + Ainoastaan Tor-verkossa src/app/lightning/node/node.component.html 93,95 @@ -6090,6 +6390,7 @@ Liquidity ad + Likviditeetti ad src/app/lightning/node/node.component.html 138,141 @@ -6098,6 +6399,7 @@ Lease fee rate + Vuokra siirtomaksun taso src/app/lightning/node/node.component.html 144,147 @@ -6107,6 +6409,7 @@ Lease base fee + Vuokra perus siirtokulu src/app/lightning/node/node.component.html 152,154 @@ -6115,6 +6418,7 @@ Funding weight + Rahoituspaino src/app/lightning/node/node.component.html 158,159 @@ -6123,6 +6427,7 @@ Channel fee rate + Kanava siirtomaksu taso src/app/lightning/node/node.component.html 168,171 @@ -6132,6 +6437,7 @@ Channel base fee + Kanava perus siirtomaksu src/app/lightning/node/node.component.html 176,178 @@ -6140,6 +6446,7 @@ Compact lease + Kompakti vuokraus src/app/lightning/node/node.component.html 188,190 @@ -6148,6 +6455,7 @@ TLV extension records + TLV-laajennustiedot src/app/lightning/node/node.component.html 199,202 @@ -6156,6 +6464,7 @@ Open channels + Avoimet kanavat src/app/lightning/node/node.component.html 240,243 @@ -6164,6 +6473,7 @@ Closed channels + Suljetut kanavat src/app/lightning/node/node.component.html 244,247 @@ -6172,6 +6482,7 @@ Node: + Solmu: src/app/lightning/node/node.component.ts 60 @@ -6179,6 +6490,7 @@ (Tor nodes excluded) + (Tor-solmuja ei oteta huomioon) src/app/lightning/nodes-channels-map/nodes-channels-map.component.html 8,11 @@ -6199,6 +6511,7 @@ Lightning Nodes Channels World Map + Salamasolmu kanavien maailmankartta src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts 69 @@ -6206,13 +6519,15 @@ No geolocation data available + Paikannustietoja ei ole saatavilla src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 Active channels map + Aktiivisten kanavien kartta src/app/lightning/nodes-channels/node-channels.component.html 2,3 @@ -6221,6 +6536,7 @@ Indexing in progress + Indeksointi käynnissä src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6232,6 +6548,7 @@ Reachable on Clearnet Only + Tavoitettavissa vain Clearnetistä src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 164,161 @@ -6243,6 +6560,7 @@ Reachable on Clearnet and Darknet + Tavoitettavissa Clearnetissä ja Darknetissä src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 185,182 @@ -6254,6 +6572,7 @@ Reachable on Darknet Only + Tavoitettavissa vain Darknetissä src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 206,203 @@ -6265,6 +6584,7 @@ Share + Jaa src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29,31 @@ -6277,6 +6597,7 @@ nodes + solmua src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 103,102 @@ -6292,6 +6613,7 @@ BTC capacity + BTC kapasiteetti src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 104,102 @@ -6299,6 +6621,7 @@ Lightning nodes in + Salamasolmut src/app/lightning/nodes-per-country/nodes-per-country.component.html 3,4 @@ -6307,6 +6630,7 @@ ISP Count + Palveluntarjoajien määrä src/app/lightning/nodes-per-country/nodes-per-country.component.html 34,38 @@ -6315,6 +6639,7 @@ Top ISP + Johtava palveluntarjoaja src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6323,6 +6648,7 @@ Lightning nodes in + Salamasolmut src/app/lightning/nodes-per-country/nodes-per-country.component.ts 35 @@ -6330,6 +6656,7 @@ Clearnet Capacity + Clearnetin kapasiteetti src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6342,6 +6669,7 @@ How much liquidity is running on nodes advertising at least one clearnet IP address + Kuinka paljon likviditeettiä on käytössä solmuissa, jotka mainostavat vähintään yhtä clearnet-IP-osoitetta src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 8,9 @@ -6350,6 +6678,7 @@ Unknown Capacity + Tuntematon kapasiteetti src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 13,15 @@ -6362,6 +6691,7 @@ How much liquidity is running on nodes which ISP was not identifiable + Kuinka paljon likviditeettiä kulkee solmuissa, joiden palveluntarjoajaa ei voitu tunnistaa src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 15,16 @@ -6370,6 +6700,7 @@ Tor Capacity + Tor kapasiteetti src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6382,6 +6713,7 @@ How much liquidity is running on nodes advertising only Tor addresses + Kuinka paljon likviditeettiä on vain Tor-osoitteita mainostavissa solmuissa src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 22,23 @@ -6390,6 +6722,7 @@ Top 100 ISPs hosting LN nodes + 100 suurinta LN-solmuja ylläpitävää palveluntarjoajaa src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 31,33 @@ -6398,6 +6731,7 @@ BTC + BTC src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 158,156 @@ -6409,6 +6743,7 @@ Lightning ISP + Salama palveluntarjoaja src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 3,5 @@ -6417,6 +6752,7 @@ Top country + Johtava maa src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 39,41 @@ -6429,6 +6765,7 @@ Top node + Johtava solmu src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 45,48 @@ -6437,6 +6774,7 @@ Lightning nodes on ISP: [AS] + Palveluntarjoajien salamasolmut: [AS] src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts 44 @@ -6448,6 +6786,7 @@ Lightning nodes on ISP: + Palveluntarjoajien salamasolmut: src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 2,4 @@ -6456,6 +6795,7 @@ ASN + ASN src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 11,14 @@ -6464,6 +6804,7 @@ Active nodes + Aktiiviset solmut src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6472,6 +6813,7 @@ Top 100 oldest lightning nodes + Top 100 vanhinta salamasolmua src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html 3,7 @@ -6480,6 +6822,7 @@ Oldest lightning nodes + Vanhimmat salamasolmut src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts 27 @@ -6487,6 +6830,7 @@ Top 100 nodes liquidity ranking + Top 100 solmun likviditeettiluokitus src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html 3,7 @@ -6495,6 +6839,7 @@ Top 100 nodes connectivity ranking + Top 100 solmun yhdistettävyysluokitus src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html 3,7 @@ -6503,6 +6848,7 @@ Oldest nodes + Vanhimmat solmut src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6511,6 +6857,7 @@ Top lightning nodes + Tärkeimmät salamasolmut src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6518,6 +6865,7 @@ Indexing in progress + Indeksointi käynnissä src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 @@ -6534,7 +6882,7 @@ years - vuoden + vuotta src/app/shared/i18n/dates.ts 4 @@ -6558,7 +6906,7 @@ week - viikon + viikko src/app/shared/i18n/dates.ts 7 @@ -6566,7 +6914,7 @@ weeks - viikon + viikkoa src/app/shared/i18n/dates.ts 8 @@ -6574,7 +6922,7 @@ day - päivää + päivä src/app/shared/i18n/dates.ts 9 @@ -6638,7 +6986,7 @@ Transaction fee - Siirtokulu + Siirtomaksu src/app/shared/pipes/scriptpubkey-type-pipe/scriptpubkey-type.pipe.ts 11 diff --git a/frontend/src/locale/messages.it.xlf b/frontend/src/locale/messages.it.xlf index a51e1f4ad..d48ce0dcb 100644 --- a/frontend/src/locale/messages.it.xlf +++ b/frontend/src/locale/messages.it.xlf @@ -11,6 +11,7 @@ Slide of + Diapositiva di node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1461,6 +1475,7 @@ Community Integrations + Integrazioni della comunità src/app/components/about/about.component.html 191,193 @@ -1529,11 +1544,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Multisig of src/app/components/address-labels/address-labels.component.ts 107 @@ -1565,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1581,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1664,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1886,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1899,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1912,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1921,7 +1937,7 @@ Errore nel caricamento dei dati degli asset. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2045,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2061,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2073,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2086,15 +2102,15 @@ Indicizzazione dei blocchi src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2119,6 +2135,7 @@ not available + non disponibile src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2138,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2164,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2182,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2198,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2216,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2268,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2296,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2310,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Stato dell'audit src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2329,6 +2347,7 @@ Match + Corrispondenza src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2337,6 +2356,7 @@ Removed + Rimosso src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2345,6 +2365,7 @@ Marginal fee rate + Tariffa marginale src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2357,6 +2378,7 @@ Recently broadcasted + Trasmessa di recente src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2365,6 +2387,7 @@ Added + Aggiunta src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2390,6 +2413,7 @@ No data to display yet. Try again later. + Non ci sono ancora dati da visualizzare. Riprova più tardi. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2420,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2450,15 +2474,15 @@ Dimensione src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2482,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2494,11 +2518,11 @@ Peso src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2506,15 +2530,28 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Dimensioni per peso + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Blocco src/app/components/block/block-preview.component.html 3,7 @@ -2525,14 +2562,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Commissione mediana @@ -2542,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2559,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2581,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2594,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2619,24 +2648,42 @@ Previous Block - - Block health + + Health + Salute src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Sconosciuto src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2660,7 +2707,7 @@ Intervallo della commissione src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2673,7 +2720,7 @@ Basandosi su una transazione segwit nativa dal peso medio di 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2697,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Ricompensa + commissioni: + + Subsidy + fees + Ricompensa + commissioni src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Previsto src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Effettivo src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Blocco Previsto src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Blocco Effettivo src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2748,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2757,7 +2821,7 @@ Merkle root src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2766,7 +2830,7 @@ Difficoltà src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2795,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2804,20 +2868,30 @@ Block Header Hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Audit + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Dettagli src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2839,11 +2913,11 @@ Errore caricamento dati src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2865,9 +2939,10 @@ Why is this block empty? + Perché questo blocco è vuoto? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2913,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Ricompensa @@ -2988,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3227,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3240,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3253,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3267,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3319,6 +3382,7 @@ Hashrate & Difficulty + Hashrate & Difficoltà src/app/components/graphs/graphs.component.html 15,16 @@ -3327,6 +3391,7 @@ Lightning + Lightning src/app/components/graphs/graphs.component.html 31 @@ -3335,6 +3400,7 @@ Lightning Nodes Per Network + Nodi Lightning Per Network src/app/components/graphs/graphs.component.html 34 @@ -3355,6 +3421,7 @@ Lightning Network Capacity + Capacità Lightning Network src/app/components/graphs/graphs.component.html 36 @@ -3375,6 +3442,7 @@ Lightning Nodes Per ISP + Nodi Lightning Per ISP src/app/components/graphs/graphs.component.html 38 @@ -3387,6 +3455,7 @@ Lightning Nodes Per Country + Nodi Lightning Per Paese src/app/components/graphs/graphs.component.html 40 @@ -3516,7 +3585,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3541,7 +3610,7 @@ Lightning Explorer src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3549,20 +3618,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Documentazione src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3642,6 +3703,32 @@ dashboard.adjustments + + Broadcast Transaction + Trasmetti Transazione + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Fortuna delle Pool (1 settimana) @@ -3709,7 +3796,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3739,12 +3826,24 @@ mining.rank + + Avg Health + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Blocchi vuoti src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3753,7 +3852,7 @@ Tutti i minatori src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3762,7 +3861,7 @@ Fortuna delle Pool (1w) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3771,7 +3870,7 @@ Conteggio delle Pool (1w) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3780,7 +3879,7 @@ Pool dei minatori src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4006,24 +4105,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Trasmetti Transazione - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Hex della transazione @@ -4033,7 +4114,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4153,6 +4234,70 @@ search-form.search-title + + Bitcoin Block Height + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool in vByte (sat/vByte) @@ -4435,7 +4580,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4445,7 +4590,7 @@ Vista per la prima volta src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4479,7 +4624,7 @@ ETA src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4489,7 +4634,7 @@ Tra diverse ore (o più) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4499,11 +4644,11 @@ Discendente src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4513,7 +4658,7 @@ Antenato src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4522,11 +4667,11 @@ Flow src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4535,7 +4680,7 @@ Hide diagram src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4543,7 +4688,7 @@ Show more src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4559,7 +4704,7 @@ Show less src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4571,7 +4716,7 @@ Show diagram src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4580,7 +4725,7 @@ Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4589,7 +4734,7 @@ Transazione non trovata. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4598,7 +4743,7 @@ Aspettando che appaia nella mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4607,7 +4752,7 @@ Prezzo effettivo della commissione src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4755,7 +4900,7 @@ Show more inputs to reveal fee data src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4763,7 +4908,7 @@ remaining src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -5001,21 +5146,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Commissione minima src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5025,7 +5161,7 @@ Eliminazione src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5035,7 +5171,7 @@ Memoria in uso src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5045,16 +5181,24 @@ L-BTC in circolazione src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Servizio REST API src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5063,11 +5207,11 @@ Endpoint src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5076,11 +5220,11 @@ Descrizione src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5088,7 +5232,7 @@ Push predefinito: action: 'want', data: ['blocks', ...] per esprimere cosa vuoi spingere. Disponibile: blocks, mempool-blocks, live-2h-chart, and stats.Spingi transazioni collegate all'indirizzo: 'track-address': '3PbJ...bF9B' per ricevere tutte le nuove transazioni contenenti quell'indirizzo come input o output. Restituisce un array di transazioni. address-transactions per nuove transazioni di mempool e block-transactions per le nuove transazioni confermate nel blocco. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5251,7 +5395,7 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels @@ -5293,7 +5437,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5309,7 +5453,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5329,7 +5473,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5357,7 +5501,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5365,7 +5509,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5469,7 +5613,7 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date @@ -5504,6 +5648,27 @@ 37 + + Mutually closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open @@ -5516,7 +5681,7 @@ No channels to display src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5524,7 +5689,7 @@ Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5560,7 +5725,7 @@ Status src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5568,7 +5733,7 @@ Channel ID src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5576,11 +5741,11 @@ sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5624,6 +5789,22 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity @@ -5740,11 +5921,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5812,11 +5993,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5972,6 +6153,28 @@ lightning.node-fee-distribution + + Outgoing Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week @@ -5980,11 +6183,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6208,7 +6411,7 @@ No geolocation data available src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 diff --git a/frontend/src/locale/messages.nb.xlf b/frontend/src/locale/messages.nb.xlf index 1d68252a2..51d719460 100644 --- a/frontend/src/locale/messages.nb.xlf +++ b/frontend/src/locale/messages.nb.xlf @@ -11,6 +11,7 @@ Slide of + Bilde av node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1461,6 +1475,7 @@ Community Integrations + Sammfunnsintegrasjoner src/app/components/about/about.component.html 191,193 @@ -1529,11 +1544,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Multisignatur av src/app/components/address-labels/address-labels.component.ts 107 @@ -1565,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1581,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1664,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1886,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1899,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1912,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1921,7 +1937,7 @@ Feil ved innlasting av ressursdata. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2045,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2061,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2073,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2086,15 +2102,15 @@ Indekserer blokker src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2119,6 +2135,7 @@ not available + ikke tilgjengelig src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2138,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2164,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2182,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2198,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2216,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2268,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2296,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2310,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Revisjonsstatus src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2329,6 +2347,7 @@ Match + lik src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2337,6 +2356,7 @@ Removed + Fjernet src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2345,6 +2365,7 @@ Marginal fee rate + Marginal avgiftsats src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2357,6 +2378,7 @@ Recently broadcasted + Nylig sendt src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2365,6 +2387,7 @@ Added + Lagt til src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2390,6 +2413,7 @@ No data to display yet. Try again later. + Ingen data å vise ennå. Prøv igjen senere. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2420,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2450,15 +2474,15 @@ Størrelse src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2482,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2494,11 +2518,11 @@ Vekt src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2506,15 +2530,28 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Størrelse per vekt + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Blokk src/app/components/block/block-preview.component.html 3,7 @@ -2525,14 +2562,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Medianavgift @@ -2542,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2559,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2581,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2594,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2619,24 +2648,42 @@ Previous Block - - Block health + + Health + Helse src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Ukjent src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2660,7 +2707,7 @@ Avgiftsintervall src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2673,7 +2720,7 @@ Basert på gjennomsnittlig native segwit-transaksjon på 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2697,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Subsidie + avgifter: + + Subsidy + fees + Subsidie + avgifter src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Forventet src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Faktisk src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Forventet blokk src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Faktisk blokk src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2748,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2757,7 +2821,7 @@ Merklerot src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2766,7 +2830,7 @@ Vanskelighetsgrad src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2795,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2804,20 +2868,30 @@ Blokkheader Hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Revisjon + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Detaljer src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2839,11 +2913,11 @@ Lasting av data feilet. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2865,9 +2939,10 @@ Why is this block empty? + Hvorfor er denne blokken tom? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2913,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Belønning @@ -2988,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3227,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3240,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3253,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3267,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3319,6 +3382,7 @@ Hashrate & Difficulty + Hashrate og vanskelighetsgrad src/app/components/graphs/graphs.component.html 15,16 @@ -3327,6 +3391,7 @@ Lightning + Lightning src/app/components/graphs/graphs.component.html 31 @@ -3335,6 +3400,7 @@ Lightning Nodes Per Network + Lightning-noder per nettverk src/app/components/graphs/graphs.component.html 34 @@ -3355,6 +3421,7 @@ Lightning Network Capacity + Lightning-nettverkkapasitet src/app/components/graphs/graphs.component.html 36 @@ -3375,6 +3442,7 @@ Lightning Nodes Per ISP + Lightning-noder per ISP src/app/components/graphs/graphs.component.html 38 @@ -3387,6 +3455,7 @@ Lightning Nodes Per Country + Lightning-noder per land src/app/components/graphs/graphs.component.html 40 @@ -3403,6 +3472,7 @@ Lightning Nodes World Map + Lightning-noder verdenskart src/app/components/graphs/graphs.component.html 42 @@ -3419,6 +3489,7 @@ Lightning Nodes Channels World Map + Lightning-noder kanaler Verdenskart src/app/components/graphs/graphs.component.html 44 @@ -3516,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3539,9 +3610,10 @@ Lightning Explorer + Lightning Explorer src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3549,20 +3621,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Dokumentasjon src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3642,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Send transaksjon + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Grupper flaks (1 uke) @@ -3709,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3739,12 +3829,25 @@ mining.rank + + Avg Health + Gj.sn. helse + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Tomme blokker src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3753,7 +3856,7 @@ Alle utvinnere src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3762,7 +3865,7 @@ Grupper flaks (1uke) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3771,7 +3874,7 @@ Antall grupper (1uke) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3780,7 +3883,7 @@ Utvinningsgrupper src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3797,6 +3900,7 @@ mining pool + utvinningssamfunn src/app/components/pool/pool-preview.component.html 3,5 @@ -4006,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Send transaksjon - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Transaksjon i hex @@ -4033,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4065,6 +4151,7 @@ Avg Block Fees + Gjennomsnittlig blokkavgift src/app/components/reward-stats/reward-stats.component.html 17 @@ -4077,6 +4164,7 @@ Average fees per block in the past 144 blocks + Gjennomsnittlige avgifter per blokk i de siste 144 blokkene src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4085,6 +4173,7 @@ BTC/block + BTC/blokk src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4094,6 +4183,7 @@ Avg Tx Fee + Gj.sn. Tx-avgift src/app/components/reward-stats/reward-stats.component.html 30 @@ -4138,6 +4228,7 @@ Explore the full Bitcoin ecosystem + Utforsk hele Bitcoin-økosystemet src/app/components/search-form/search-form.component.html 4,5 @@ -4153,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Bitcoin blokk-høyde + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Bitcoin-transaksjon + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Bitcoin adresse + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Bitcoin blokk + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Bitcoin-adresser + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Ligthning-noder + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Lightning-kanaler + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Gå til &quot; &quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool i vBytes (sat/vByte) @@ -4410,6 +4573,7 @@ This transaction replaced: + Denne transaksjonen erstattet: src/app/components/transaction/transaction.component.html 10,12 @@ -4419,6 +4583,7 @@ Replaced + Erstattet src/app/components/transaction/transaction.component.html 36,39 @@ -4435,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4445,7 +4610,7 @@ Først sett src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4479,7 +4644,7 @@ ETA src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4489,7 +4654,7 @@ Om flere timer(eller mer) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4499,11 +4664,11 @@ Etterkommer src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4513,37 +4678,40 @@ Forfader src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Strømm src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow Hide diagram + Skjul diagram src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram Show more + Vis mer src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4557,9 +4725,10 @@ Show less + Vis mindre src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4569,9 +4738,10 @@ Show diagram + Vis diagram src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4580,7 +4750,7 @@ Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4589,7 +4759,7 @@ Transaksjon ikke funnet src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4598,7 +4768,7 @@ Venter på at den kommer inn i mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4607,7 +4777,7 @@ Effektiv avgift src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4753,22 +4923,25 @@ Show more inputs to reveal fee data + Vis mer inndata for å avsløre avgiftsdata src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + gjenstår src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining other inputs + andre innganger src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 12 @@ -4777,6 +4950,7 @@ other outputs + andre utganger src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 13 @@ -4785,6 +4959,7 @@ Input + Inngang src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 42 @@ -4797,6 +4972,7 @@ Output + Utgang src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 43 @@ -4809,6 +4985,7 @@ This transaction saved % on fees by using native SegWit + Denne transaksjonen sparte % på avgifter ved å bruke native SegWit src/app/components/tx-features/tx-features.component.html 2 @@ -4835,6 +5012,7 @@ This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit + Denne transaksjonen sparte % på avgifter ved å bruke SegWit og kunne spart % mer ved å fullstendig oppgradere til native SegWit src/app/components/tx-features/tx-features.component.html 4 @@ -4843,6 +5021,7 @@ This transaction could save % on fees by upgrading to native SegWit or % by upgrading to SegWit-P2SH + Denne transaksjonen kan spare % på avgifter ved å oppgradere til native SegWit eller % ved å oppgradere til SegWit-P2SH src/app/components/tx-features/tx-features.component.html 6 @@ -4851,6 +5030,7 @@ This transaction uses Taproot and thereby saved at least % on fees + Denne transaksjonen bruker Taproot og sparer dermed minst % på avgifter src/app/components/tx-features/tx-features.component.html 12 @@ -4859,6 +5039,7 @@ Taproot + Taproot src/app/components/tx-features/tx-features.component.html 12 @@ -4884,6 +5065,7 @@ This transaction uses Taproot and already saved at least % on fees, but could save an additional % by fully using Taproot + Denne transaksjonen bruker Taproot og har allerede spart minst % på avgifter, men kan spare ytterligere % ved å bruke Taproot fullt ut src/app/components/tx-features/tx-features.component.html 14 @@ -4892,6 +5074,7 @@ This transaction could save % on fees by using Taproot + Denne transaksjonen kunne spart % på avgifter ved å bruke Taproot src/app/components/tx-features/tx-features.component.html 16 @@ -4900,6 +5083,7 @@ This transaction does not use Taproot + Denne transaksjonen bruker ikke Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -4917,6 +5101,7 @@ This transaction supports Replace-By-Fee (RBF) allowing fee bumping + Denne transaksjonen støtter Replace-By-Fee (RBF) som tillater avgiftsendring src/app/components/tx-features/tx-features.component.html 28 @@ -5001,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Minimumsavgift src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5025,7 +5201,7 @@ Fjerner src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5035,7 +5211,7 @@ Minnebruk src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5045,16 +5221,25 @@ L-BTC i omløp src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space gir bare data om Bitcoin-nettverket. Den kan ikke hjelpe deg med å hente verdier, bekrefte transaksjonen raskere osv. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service REST API-tjeneste src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5063,11 +5248,11 @@ Endepunkt src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5076,11 +5261,11 @@ Beskrivelse src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5088,7 +5273,7 @@ Standard push: handling: 'want', data: ['blocks', ...] for å uttrykke hva du vil ha pushet. Tilgjengelig: blocks , mempool-blocks , live-2h-chart , og stats . Push-transaksjoner relatert til adresse: 'track-address': '3PbJ...bF9B' for å motta alle nye transaksjoner som inneholder den adressen som inngang eller utgang. Returnerer en tabell av transaksjoner. adress-transactions for nye mempool-transaksjoner, og block-transactions for nye blokkbekreftede transaksjoner. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5157,6 +5342,7 @@ Base fee + Grunnavgift src/app/lightning/channel/channel-box/channel-box.component.html 29 @@ -5169,6 +5355,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5189,6 +5376,7 @@ This channel supports zero base fee routing + Denne kanalen støtter null grunnavgiftsruting src/app/lightning/channel/channel-box/channel-box.component.html 44 @@ -5197,6 +5385,7 @@ Zero base fee + Null grunnavgift src/app/lightning/channel/channel-box/channel-box.component.html 45 @@ -5205,6 +5394,7 @@ This channel does not support zero base fee routing + Denne kanalen støtter ikke null grunnavgift ruting src/app/lightning/channel/channel-box/channel-box.component.html 50 @@ -5213,6 +5403,7 @@ Non-zero base fee + Ikke-null grunnavgift src/app/lightning/channel/channel-box/channel-box.component.html 51 @@ -5221,6 +5412,7 @@ Min HTLC + Min. HTLC src/app/lightning/channel/channel-box/channel-box.component.html 57 @@ -5229,6 +5421,7 @@ Max HTLC + Maks HTLC src/app/lightning/channel/channel-box/channel-box.component.html 63 @@ -5237,6 +5430,7 @@ Timelock delta + Timelock delta src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5245,18 +5439,20 @@ channels + kanaler src/app/lightning/channel/channel-box/channel-box.component.html 79 src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Startbalanse src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5266,6 +5462,7 @@ Closing balance + Sluttbalanse src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5275,6 +5472,7 @@ lightning channel + Lightning-kanal src/app/lightning/channel/channel-preview.component.html 3,5 @@ -5283,6 +5481,7 @@ Inactive + Inaktiv src/app/lightning/channel/channel-preview.component.html 10,11 @@ -5293,12 +5492,13 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive Active + Aktiv src/app/lightning/channel/channel-preview.component.html 11,12 @@ -5309,12 +5509,13 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active Closed + Avsluttet src/app/lightning/channel/channel-preview.component.html 12,14 @@ -5329,12 +5530,13 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed Created + Opprettet src/app/lightning/channel/channel-preview.component.html 23,26 @@ -5347,6 +5549,7 @@ Capacity + Kapasitet src/app/lightning/channel/channel-preview.component.html 27,28 @@ -5357,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5365,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5399,6 +5602,7 @@ ppm + ppm src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5419,6 +5623,7 @@ Lightning channel + Lightningkanal src/app/lightning/channel/channel.component.html 2,5 @@ -5431,6 +5636,7 @@ Last update + Siste oppdatering src/app/lightning/channel/channel.component.html 33,34 @@ -5463,18 +5669,20 @@ Closing date + Sluttdato src/app/lightning/channel/channel.component.html 37,38 src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Avsluttet av src/app/lightning/channel/channel.component.html 52,54 @@ -5483,6 +5691,7 @@ Opening transaction + Åpningstransaksjon src/app/lightning/channel/channel.component.html 84,85 @@ -5491,6 +5700,7 @@ Closing transaction + Avsluttningtransaksjon src/app/lightning/channel/channel.component.html 93,95 @@ -5499,13 +5709,39 @@ Channel: + Kanal: src/app/lightning/channel/channel.component.ts 37 + + Mutually closed + Gjensidig avsluttet + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Tvungen avsluttning + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Tvunget avsluttning med straff + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Åpen src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5514,17 +5750,19 @@ No channels to display + Ingen kanaler å vise src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list Alias + Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5558,29 +5796,32 @@ Status + Status src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status Channel ID + Kanal-ID src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id sats + sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5624,8 +5865,27 @@ shared.sats + + avg + gj.sn + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + median + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity + Gj.sn. kapasitet src/app/lightning/channels-statistics/channels-statistics.component.html 13,15 @@ -5638,6 +5898,7 @@ Avg Fee Rate + Gj.sn. avgiftssats src/app/lightning/channels-statistics/channels-statistics.component.html 26,28 @@ -5650,6 +5911,7 @@ The average fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Gjennomsnittlig avgiftssats som belastes av rutingsnoder, ignorerer avgiftssatser > 0,5 % eller 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 28,30 @@ -5658,6 +5920,7 @@ Avg Base Fee + Gjennomsnittlig basisavgift src/app/lightning/channels-statistics/channels-statistics.component.html 41,43 @@ -5670,6 +5933,7 @@ The average base fee charged by routing nodes, ignoring base fees > 5000ppm + Den gjennomsnittlige basisavgiften som belastes av rutingsnoder, ignorerer basisavgifter > 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 43,45 @@ -5678,6 +5942,7 @@ Med Capacity + Median kapasitet src/app/lightning/channels-statistics/channels-statistics.component.html 59,61 @@ -5686,6 +5951,7 @@ Med Fee Rate + Median avgiftssats src/app/lightning/channels-statistics/channels-statistics.component.html 72,74 @@ -5694,6 +5960,7 @@ The median fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Medianavgiftssatsen som belastes av rutingsnoder, ignorerer avgiftssatser > 0,5 % eller 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 74,76 @@ -5702,6 +5969,7 @@ Med Base Fee + Median basisavgift src/app/lightning/channels-statistics/channels-statistics.component.html 87,89 @@ -5710,6 +5978,7 @@ The median base fee charged by routing nodes, ignoring base fees > 5000ppm + Median grunnavgift belastet av rutingnoder, ignorerer basisavgifter > 5000 ppm src/app/lightning/channels-statistics/channels-statistics.component.html 89,91 @@ -5718,6 +5987,7 @@ Lightning node group + Ligthningnode-gruppe src/app/lightning/group/group-preview.component.html 3,5 @@ -5730,6 +6000,7 @@ Nodes + Noder src/app/lightning/group/group-preview.component.html 25,29 @@ -5740,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5766,6 +6037,7 @@ Liquidity + Likviditet src/app/lightning/group/group-preview.component.html 29,31 @@ -5802,6 +6074,7 @@ Channels + Kanaler src/app/lightning/group/group-preview.component.html 40,43 @@ -5812,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5862,6 +6135,7 @@ Average size + Gjennomsnittsstørrelse src/app/lightning/group/group-preview.component.html 44,46 @@ -5874,6 +6148,7 @@ Location + plassering src/app/lightning/group/group.component.html 74,77 @@ -5914,6 +6189,7 @@ Network Statistics + Nettverksstatistikk src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 10 @@ -5922,6 +6198,7 @@ Channels Statistics + Kanalstatistikk src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 24 @@ -5930,6 +6207,7 @@ Lightning Network History + Lightning-nettverk historie src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 49 @@ -5938,6 +6216,7 @@ Liquidity Ranking + Likviditetsrangering src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 62 @@ -5954,6 +6233,7 @@ Connectivity Ranking + Tilkoblingsrangering src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 76 @@ -5966,30 +6246,57 @@ Fee distribution + Avgiftsfordeling src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Utgående avgifter + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Inngående avgifter + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week + Prosentvis endring siste uke src/app/lightning/node-statistics/node-statistics.component.html 5,7 src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week Lightning node + Lightning-node src/app/lightning/node/node-preview.component.html 3,5 @@ -6006,6 +6313,7 @@ Active capacity + Aktiv kapasitet src/app/lightning/node/node-preview.component.html 20,22 @@ -6018,6 +6326,7 @@ Active channels + Aktive kanaler src/app/lightning/node/node-preview.component.html 26,30 @@ -6030,6 +6339,7 @@ Country + Land src/app/lightning/node/node-preview.component.html 44,47 @@ -6038,6 +6348,7 @@ No node found for public key "" + Ingen node funnet for offentlig nøkkel &quot; &quot; src/app/lightning/node/node.component.html 17,19 @@ -6046,6 +6357,7 @@ Average channel size + Gjennomsnittlig kanalstørrelse src/app/lightning/node/node.component.html 40,43 @@ -6054,6 +6366,7 @@ Avg channel distance + Gjennomsnittlig kanalavstand src/app/lightning/node/node.component.html 56,57 @@ -6062,6 +6375,7 @@ Color + Farge src/app/lightning/node/node.component.html 79,81 @@ -6070,6 +6384,7 @@ ISP + ISP src/app/lightning/node/node.component.html 86,87 @@ -6082,6 +6397,7 @@ Exclusively on Tor + Eksklusivt på Tor src/app/lightning/node/node.component.html 93,95 @@ -6090,6 +6406,7 @@ Liquidity ad + Likviditetsannonse src/app/lightning/node/node.component.html 138,141 @@ -6098,6 +6415,7 @@ Lease fee rate + Leieavgiftssats src/app/lightning/node/node.component.html 144,147 @@ -6107,6 +6425,7 @@ Lease base fee + Leiegrunnavgift src/app/lightning/node/node.component.html 152,154 @@ -6115,6 +6434,7 @@ Funding weight + Finansieringsvekt src/app/lightning/node/node.component.html 158,159 @@ -6123,6 +6443,7 @@ Channel fee rate + Kanalavgiftssats src/app/lightning/node/node.component.html 168,171 @@ -6132,6 +6453,7 @@ Channel base fee + Kanalbaseavgift src/app/lightning/node/node.component.html 176,178 @@ -6140,6 +6462,7 @@ Compact lease + Kompakt leieavtale src/app/lightning/node/node.component.html 188,190 @@ -6148,6 +6471,7 @@ TLV extension records + TLV-utvidelsesposter src/app/lightning/node/node.component.html 199,202 @@ -6156,6 +6480,7 @@ Open channels + Åpne kanaler src/app/lightning/node/node.component.html 240,243 @@ -6164,6 +6489,7 @@ Closed channels + Stengte kanaler src/app/lightning/node/node.component.html 244,247 @@ -6172,6 +6498,7 @@ Node: + Node: src/app/lightning/node/node.component.ts 60 @@ -6179,6 +6506,7 @@ (Tor nodes excluded) + (Tor-noder ekskludert) src/app/lightning/nodes-channels-map/nodes-channels-map.component.html 8,11 @@ -6199,6 +6527,7 @@ Lightning Nodes Channels World Map + Lightning nodekanaler verdenskart src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts 69 @@ -6206,13 +6535,15 @@ No geolocation data available + Ingen geolokaliseringsdata tilgjengelig src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 Active channels map + Kart over aktive kanaler src/app/lightning/nodes-channels/node-channels.component.html 2,3 @@ -6221,6 +6552,7 @@ Indexing in progress + Indeksering pågår src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6232,6 +6564,7 @@ Reachable on Clearnet Only + Kun tilgjengelig på Clearnet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 164,161 @@ -6243,6 +6576,7 @@ Reachable on Clearnet and Darknet + Tilgjengelig på Clearnet og Darknet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 185,182 @@ -6254,6 +6588,7 @@ Reachable on Darknet Only + Kun tilgjengelig på Darknet src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 206,203 @@ -6265,6 +6600,7 @@ Share + Dele src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29,31 @@ -6277,6 +6613,7 @@ nodes + noder src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 103,102 @@ -6292,6 +6629,7 @@ BTC capacity + BTC-kapasitet src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 104,102 @@ -6299,6 +6637,7 @@ Lightning nodes in + Lightning-noder i src/app/lightning/nodes-per-country/nodes-per-country.component.html 3,4 @@ -6307,6 +6646,7 @@ ISP Count + Antall ISPer src/app/lightning/nodes-per-country/nodes-per-country.component.html 34,38 @@ -6315,6 +6655,7 @@ Top ISP + Topp ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6323,6 +6664,7 @@ Lightning nodes in + Lightning-noder i src/app/lightning/nodes-per-country/nodes-per-country.component.ts 35 @@ -6330,6 +6672,7 @@ Clearnet Capacity + Clearnet-kapasitet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6342,6 +6685,7 @@ How much liquidity is running on nodes advertising at least one clearnet IP address + Hvor mye likviditet er det på noder som annonserer minst én clearnet IP-adresse src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 8,9 @@ -6350,6 +6694,7 @@ Unknown Capacity + Ukjent kapasitet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 13,15 @@ -6362,6 +6707,7 @@ How much liquidity is running on nodes which ISP was not identifiable + Hvor mye likviditet er det på på noder der ISP ikke var identifiserbar src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 15,16 @@ -6370,6 +6716,7 @@ Tor Capacity + Tor kapasitet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6382,6 +6729,7 @@ How much liquidity is running on nodes advertising only Tor addresses + Hvor mye likviditet er det på noder som kun annonserer Tor-adresser src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 22,23 @@ -6390,6 +6738,7 @@ Top 100 ISPs hosting LN nodes + Topp 100 ISPer som er vert for LN-noder src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 31,33 @@ -6398,6 +6747,7 @@ BTC + BTC src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 158,156 @@ -6409,6 +6759,7 @@ Lightning ISP + Lightning ISP src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 3,5 @@ -6417,6 +6768,7 @@ Top country + Topp land src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 39,41 @@ -6429,6 +6781,7 @@ Top node + Topp node src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 45,48 @@ -6437,6 +6790,7 @@ Lightning nodes on ISP: [AS] + Lightning-noder på ISP: [AS ] src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts 44 @@ -6448,6 +6802,7 @@ Lightning nodes on ISP: + Lightning-noder på ISP: src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 2,4 @@ -6456,6 +6811,7 @@ ASN + ASN src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 11,14 @@ -6464,6 +6820,7 @@ Active nodes + Aktive noder src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6472,6 +6829,7 @@ Top 100 oldest lightning nodes + Topp 100 eldste lightning-noder src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html 3,7 @@ -6480,6 +6838,7 @@ Oldest lightning nodes + Eldste ligthning-noder src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts 27 @@ -6487,6 +6846,7 @@ Top 100 nodes liquidity ranking + Topp 100 noder likviditetsrangering src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html 3,7 @@ -6495,6 +6855,7 @@ Top 100 nodes connectivity ranking + Topp 100 noder tilkoblingsrangering src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html 3,7 @@ -6503,6 +6864,7 @@ Oldest nodes + Eldste noder src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6511,6 +6873,7 @@ Top lightning nodes + Topp lightning-noder src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6518,6 +6881,7 @@ Indexing in progress + Indeksering pågår src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 diff --git a/frontend/src/locale/messages.pt.xlf b/frontend/src/locale/messages.pt.xlf index d854b5a52..78cdd9c99 100644 --- a/frontend/src/locale/messages.pt.xlf +++ b/frontend/src/locale/messages.pt.xlf @@ -11,6 +11,7 @@ Slide of + Slide de node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1530,7 +1544,7 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 @@ -1567,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1583,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1666,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1888,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1901,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1914,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1923,7 +1937,7 @@ Erro ao carregar os dados dos ativos. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2047,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2063,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2075,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2088,15 +2102,15 @@ Indexando blocos src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2121,6 +2135,7 @@ not available + não disponível src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2140,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2166,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2184,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2200,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2218,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2270,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2298,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2312,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Status da auditoria src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2331,6 +2347,7 @@ Match + Correspondente src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2339,6 +2356,7 @@ Removed + Removida src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2347,6 +2365,7 @@ Marginal fee rate + Taxa de 'fee' marginal src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2359,6 +2378,7 @@ Recently broadcasted + Transmitida recentemente src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2424,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2454,15 +2474,15 @@ Tamanho src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2486,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2498,11 +2518,11 @@ Peso src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2510,11 +2530,23 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Tamanho por peso + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2530,14 +2562,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Taxa mediana @@ -2547,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2564,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2586,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2599,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2624,25 +2648,42 @@ Previous Block - - Block health + + Health + Saúde src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown Desconhecido src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2666,7 +2707,7 @@ Intervalo de taxas src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2679,7 +2720,7 @@ Com base na transação segwit nativa média de 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2703,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Recompensa + taxas: + + Subsidy + fees + Subsídio + taxas src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Esperado src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Atual src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Block Esperado src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Bloco De Fato src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2754,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2763,7 +2821,7 @@ Raiz Merkle src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2772,7 +2830,7 @@ Dificuldade src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2801,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2810,20 +2868,30 @@ Block Header Hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Auditoria + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Detalhes src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2845,11 +2913,11 @@ Erro ao carregar dados. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2871,9 +2939,10 @@ Why is this block empty? + Por que este bloco está vazio? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2919,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Recompensa @@ -2994,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3233,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3246,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3259,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3273,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3334,6 +3391,7 @@ Lightning + Lightning src/app/components/graphs/graphs.component.html 31 @@ -3529,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3555,7 +3613,7 @@ Explorador Lightning src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3563,21 +3621,12 @@ master-page.lightning - - beta - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Documentação src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3657,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Transmitir Transação + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Sorte dos Pools (1 sem.) @@ -3724,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3754,12 +3829,25 @@ mining.rank + + Avg Health + Saúde Média + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Blocos vazios src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3768,7 +3856,7 @@ Todos os mineradores src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3777,7 +3865,7 @@ Sorte dos Pools (1 sem.) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3786,7 +3874,7 @@ Quantidade de Pools (1 sem.) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3795,7 +3883,7 @@ Pools de Mineração src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4022,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Transmitir Transação - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Hex da Transação @@ -4049,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4081,6 +4151,7 @@ Avg Block Fees + Média de taxas dos blocos src/app/components/reward-stats/reward-stats.component.html 17 @@ -4093,6 +4164,7 @@ Average fees per block in the past 144 blocks + Média de taxas por bloco nos últimos 144 blocos src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4101,6 +4173,7 @@ BTC/block + BTC/bloco src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4110,6 +4183,7 @@ Avg Tx Fee + Taxa Média das Transações src/app/components/reward-stats/reward-stats.component.html 30 @@ -4170,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Altura do Bloco do Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Transação de Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Endereço de Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Bloco de Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Endereços de Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Nó de Lightning + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Canais Lightning + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Go to &citação; &citação; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool em vBytes (sat/vByte) @@ -4427,6 +4573,7 @@ This transaction replaced: + Esta transação substituiu: src/app/components/transaction/transaction.component.html 10,12 @@ -4436,6 +4583,7 @@ Replaced + Substituída src/app/components/transaction/transaction.component.html 36,39 @@ -4445,24 +4593,24 @@ Unconfirmed - Sem confirmar + Não confirmada src/app/components/transaction/transaction.component.html 39,46 src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed First seen - Visto pela primeira vez + Vista pela primeira vez src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4496,7 +4644,7 @@ Tempo estimado src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4506,7 +4654,7 @@ Em várias horas (ou mais) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4516,11 +4664,11 @@ Descendente src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4530,7 +4678,7 @@ Ancestral src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4540,11 +4688,11 @@ Fluxo src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4554,7 +4702,7 @@ Esconder diagrama src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4563,7 +4711,7 @@ Mostrar mais src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4580,7 +4728,7 @@ Mostrar menos src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4593,16 +4741,16 @@ Mostrar diagrama src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram Locktime - Tempo travado + Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4611,7 +4759,7 @@ Transação não encontrada. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4620,7 +4768,7 @@ Aguardando que apareça no mempool... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4629,7 +4777,7 @@ Taxa de transação efetiva src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4775,17 +4923,19 @@ Show more inputs to reveal fee data + Mostrar mais entradas para revelar dados de taxas src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + restante src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4835,7 +4985,7 @@ This transaction saved % on fees by using native SegWit - Esta transação economizou % em taxas ao usar SegWit nativo + Esta transação economizou % em taxas ao utilizar SegWit nativo src/app/components/tx-features/tx-features.component.html 2 @@ -4862,7 +5012,7 @@ This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit - Esta transação economizou % em taxas ao usar SegWit e poderia economizar mais % se utilizasse SegWit nativo + Esta transação economizou % em taxas ao utilizar SegWit e poderia economizar mais % se utilizasse SegWit nativo src/app/components/tx-features/tx-features.component.html 4 @@ -4871,7 +5021,7 @@ This transaction could save % on fees by upgrading to native SegWit or % by upgrading to SegWit-P2SH - Esta transação poderia economizar % em taxas ao usar SegWit ou % ao usar SegWit-P2SH + Esta transação poderia economizar % em taxas ao utilizar SegWit ou % ao utilizar SegWit-P2SH src/app/components/tx-features/tx-features.component.html 6 @@ -4933,6 +5083,7 @@ This transaction does not use Taproot + Esta transação não usa Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -5035,21 +5186,12 @@ dashboard.latest-transactions - - USD - Dólar - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Taxa mínima src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5059,7 +5201,7 @@ Mínimo exigido src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5069,7 +5211,7 @@ Utilização da memória src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5079,16 +5221,25 @@ L-BTC em circulação src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space não fornece mais que dados sobre a rede Bitcoin.Não pode ajudá-lo a recuperar fundos, confirmar mais rapidamente sua transação, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Serviço de API REST src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5097,11 +5248,11 @@ Terminal src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5110,11 +5261,11 @@ Descrição src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5122,7 +5273,7 @@ Push padrão: ação: 'want', data: ['blocks', ...] para expressar o que você deseja push. Disponível: blocks, mempool-blocks, live-2h-chart e stats.Push transações relacionadas ao endereço: 'track-address': '3PbJ ... bF9B' para receber todas as novas transações contendo aquele endereço como entrada ou saída. Retorna uma matriz de transações. address-transactions para novas transações de mempool e block-transactions para novas transações de bloco confirmadas. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5204,6 +5355,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5278,6 +5430,7 @@ Timelock delta + Delta do Timelock src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5293,12 +5446,13 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Saldo inicial src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5308,6 +5462,7 @@ Closing balance + Saldo final src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5337,7 +5492,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5354,7 +5509,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5375,7 +5530,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5405,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5413,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5521,12 +5676,13 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Fechado por src/app/lightning/channel/channel.component.html 52,54 @@ -5559,6 +5715,30 @@ 37 + + Mutually closed + Fechado mutuamente + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Forçosamente fechado + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Fechado forçosamente com penalidade + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open Aberto @@ -5573,7 +5753,7 @@ Sem canais para mostrar src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5582,7 +5762,7 @@ Apelido src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5619,7 +5799,7 @@ Status src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5628,7 +5808,7 @@ ID do Canal src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5637,11 +5817,11 @@ sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5685,6 +5865,24 @@ shared.sats + + avg + média + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + mediana + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity Capacidade Média @@ -5789,6 +5987,7 @@ Lightning node group + Grupo de nós Lightning src/app/lightning/group/group-preview.component.html 3,5 @@ -5812,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5886,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6017,7 +6216,7 @@ Liquidity Ranking - Classificação de Liquidez + Classificação por Liquidez src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 62 @@ -6034,7 +6233,7 @@ Connectivity Ranking - Classificação de Conectividade + Classificação por Conectividade src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 76 @@ -6047,12 +6246,37 @@ Fee distribution + Distribuição de taxas src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Taxas de saída + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Taxas de entrada + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week Mudança percentual na última semana @@ -6062,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6142,6 +6366,7 @@ Avg channel distance + Distância média entre canais src/app/lightning/node/node.component.html 56,57 @@ -6172,7 +6397,7 @@ Exclusively on Tor - Exclusivamente no Tor + Exclusivamente Tor src/app/lightning/node/node.component.html 93,95 @@ -6181,6 +6406,7 @@ Liquidity ad + Anúncio de liquidez src/app/lightning/node/node.component.html 138,141 @@ -6189,6 +6415,7 @@ Lease fee rate + Taxa de aluguel src/app/lightning/node/node.component.html 144,147 @@ -6198,6 +6425,7 @@ Lease base fee + Taxa base de aluguel src/app/lightning/node/node.component.html 152,154 @@ -6206,6 +6434,7 @@ Funding weight + Peso de financiamento src/app/lightning/node/node.component.html 158,159 @@ -6214,6 +6443,7 @@ Channel fee rate + Taxa do canal src/app/lightning/node/node.component.html 168,171 @@ -6223,6 +6453,7 @@ Channel base fee + Taxa base do canal src/app/lightning/node/node.component.html 176,178 @@ -6231,6 +6462,7 @@ Compact lease + Locação compacta src/app/lightning/node/node.component.html 188,190 @@ -6239,6 +6471,7 @@ TLV extension records + Registros de extensão de valor alocado total src/app/lightning/node/node.component.html 199,202 @@ -6305,7 +6538,7 @@ Informação de geolocalização não disponível src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6319,6 +6552,7 @@ Indexing in progress + Indexação em andamento src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6421,6 +6655,7 @@ Top ISP + Principais provedores src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6437,7 +6672,7 @@ Clearnet Capacity - Capacidade na Clearnet + Capacidade Clearnet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6450,7 +6685,7 @@ How much liquidity is running on nodes advertising at least one clearnet IP address - Quanta liquidez existe em nós anunciando ao menos um endereço IP na clearnet + Quanta liquidez existe em nós anunciando ao menos um endereço IP na Clearnet src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 8,9 @@ -6481,7 +6716,7 @@ Tor Capacity - Capacidade no Tor + Capacidade Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6585,6 +6820,7 @@ Active nodes + Nós ativos src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6637,6 +6873,7 @@ Top lightning nodes + Principais nós Lightning src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 diff --git a/frontend/src/locale/messages.ru.xlf b/frontend/src/locale/messages.ru.xlf index edfadc114..8a1c05c27 100644 --- a/frontend/src/locale/messages.ru.xlf +++ b/frontend/src/locale/messages.ru.xlf @@ -11,6 +11,7 @@ Slide of + Слайд из node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -413,7 +415,7 @@ Hash - Хеш + Хэш src/app/bisq/bisq-block/bisq-block.component.html 19 @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1530,7 +1544,7 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 @@ -1567,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1583,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1666,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1888,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1901,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1914,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1923,7 +1937,7 @@ Ошибка загрузки данных об активах src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2047,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2063,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2075,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2088,15 +2102,15 @@ Индексация блоков src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2121,6 +2135,7 @@ not available + Недоступно src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2140,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2166,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2184,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2200,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2218,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2270,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2298,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2312,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Статус аудита src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2331,6 +2347,7 @@ Match + Совпадение src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2339,6 +2356,7 @@ Removed + Удалено src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2347,6 +2365,7 @@ Marginal fee rate + Предельная ставка комиссии src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2359,6 +2378,7 @@ Recently broadcasted + Недавно транслированные src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2424,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2454,15 +2474,15 @@ Размер src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2486,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2498,11 +2518,11 @@ Вес src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2510,11 +2530,23 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Размер по весу + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2530,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Медианная комиссия @@ -2548,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2565,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2587,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2600,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2625,25 +2648,42 @@ Previous Block - - Block health + + Health + Здоровье src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown Неизвестно src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2667,7 +2707,7 @@ Интервал комиссий src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2680,7 +2720,7 @@ Основано на средней segwit-транзакции в 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2704,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: + + Subsidy + fees Субсидия + комиссии src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Ожидаемый src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + бета + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Фактический src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Ожидаемый блок src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Фактический блок src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2755,7 +2812,7 @@ Биты src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2764,7 +2821,7 @@ Корень Меркла src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2773,7 +2830,7 @@ Сложность src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2802,7 +2859,7 @@ Нонс src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2811,20 +2868,30 @@ Заголовок блока в шестнадцатиричном формате src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Аудит + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Подробности src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2846,11 +2913,11 @@ Ошибка загрузки src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2872,9 +2939,10 @@ Why is this block empty? + Почему этот блок пуст? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2920,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Вознагржадение @@ -2995,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3234,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3247,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3260,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3274,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3531,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3557,7 +3613,7 @@ Лайтнинг-обозреватель src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3565,21 +3621,12 @@ master-page.lightning - - beta - бета - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Документация src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3597,7 +3644,7 @@ Mempool block - Мемпул блок + Мемпул-блок src/app/components/mempool-block/mempool-block.component.ts 79 @@ -3659,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Транслировать транзакцию + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Успешность пулов (неделя) @@ -3726,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3756,12 +3829,25 @@ mining.rank + + Avg Health + Среднее здоровье + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Пустые блоки src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3770,7 +3856,7 @@ Все майнеры src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3779,7 +3865,7 @@ Удача пулов (1 нед) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3788,7 +3874,7 @@ Кол-во пулов (1 нед) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3797,7 +3883,7 @@ Майнинг-пулы src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4024,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Транслировать транзакцию - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Хекс транзакции @@ -4051,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4083,6 +4151,7 @@ Avg Block Fees + Средняя комиссия за блок src/app/components/reward-stats/reward-stats.component.html 17 @@ -4095,6 +4164,7 @@ Average fees per block in the past 144 blocks + Средняя комиссия за блок за последние 144 блока src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4103,6 +4173,7 @@ BTC/block + BTC/блок src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4112,6 +4183,7 @@ Avg Tx Fee + Средняя комиссия за транзакцию src/app/components/reward-stats/reward-stats.component.html 30 @@ -4172,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Высота Биткоин-блока + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Биткоин-транзакция + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Биткоин-адрес + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Биткоина-блок + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Биткоин-адреса + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Lightning-узлы + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Lightning-каналы + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Перейти к &quot; &quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Мемпул в vBytes (sat/vByte) @@ -4429,6 +4573,7 @@ This transaction replaced: + Эта транзакция заменила: src/app/components/transaction/transaction.component.html 10,12 @@ -4438,6 +4583,7 @@ Replaced + Заменена src/app/components/transaction/transaction.component.html 36,39 @@ -4454,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4464,7 +4610,7 @@ Впервые замечен src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4498,7 +4644,7 @@ Расчетное время src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4508,7 +4654,7 @@ Через несколько часов (или больше) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4518,11 +4664,11 @@ Потомок src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4532,20 +4678,21 @@ Предок src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Поток src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4555,7 +4702,7 @@ Скрыть диаграмму src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4564,7 +4711,7 @@ Показать больше src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4581,7 +4728,7 @@ Показывай меньше src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4594,16 +4741,16 @@ Показать схему src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram Locktime - Locktime + Время блокировки src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4612,7 +4759,7 @@ Транзакция не найдена. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4621,7 +4768,7 @@ Ожидаем ее появления в мемпуле ... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4630,7 +4777,7 @@ Эффективная комиссионная ставка src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4684,7 +4831,7 @@ Witness - Свидетель + Подпись src/app/components/transactions-list/transactions-list.component.html 110,112 @@ -4776,17 +4923,19 @@ Show more inputs to reveal fee data + Показать больше входов, чтобы узнать данные о комиссиях src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + осталось src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4934,6 +5083,7 @@ This transaction does not use Taproot + Эта транзакция не использует Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -5036,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Мин. комиссия src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5060,7 +5201,7 @@ Очистка src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5070,7 +5211,7 @@ Использование памяти src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5080,16 +5221,25 @@ L-BTC в обращении src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space просто предоставляет данные о сети Биткойн. Мы не можем помочь вам с возвратом средств, с ускорением подтверждения вашей транзакции и т. д. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Служба REST API src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5098,11 +5248,11 @@ Конечная точка src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5111,19 +5261,19 @@ Описание src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 Default push: action: 'want', data: ['blocks', ...] to express what you want pushed. Available: blocks, mempool-blocks, live-2h-chart, and stats.Push transactions related to address: 'track-address': '3PbJ...bF9B' to receive all new transactions containing that address as input or output. Returns an array of transactions. address-transactions for new mempool transactions, and block-transactions for new block confirmed transactions. - Push по умолчанию: действие: 'want', data: ['blocks', ...] , чтобы выразить то, что вы хотите запушить. Доступно: блоки , mempool-blocks , live-2h-chart иstats Пуш транзакций, связанных с адресом: 'track-address': '3PbJ ... bF9B' для получения всех новых транзакционных входных или выходных данных, относящихся к данному адресу. Предоставляет массив транзакций. транзакций данного адреса, для новых транзакций мемпула и транзакций блока для транзакций, подтвержденных в новом блоке. + Пуш по умолчанию: действие: 'want', data: ['blocks', ...] , чтобы выразить то, что вы хотите запушить. Доступно: блоки , mempool-blocks , live-2h-chart иstats Пуш-транзакций, связанных с адресом: 'track-address': '3PbJ ... bF9B' для получения всех новых транзакционных входных или выходных данных, относящихся к данному адресу. Предоставляет массив транзакций. транзакций данного адреса, для новых транзакций мемпула и транзакций блока для транзакций, подтвержденных в новом блоке. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5280,6 +5430,7 @@ Timelock delta + Дельта блокировки времени src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5295,12 +5446,13 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Начальный баланс src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5310,6 +5462,7 @@ Closing balance + Конечный баланс src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5339,7 +5492,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5356,7 +5509,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5377,7 +5530,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5407,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5415,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5449,6 +5602,7 @@ ppm + частей на миллион src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5522,12 +5676,13 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Закрыто src/app/lightning/channel/channel.component.html 52,54 @@ -5560,8 +5715,33 @@ 37 + + Mutually closed + Взаимно закрытые + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Принудительно закрытые + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Принудительное закрытые со штрафом + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Открыть src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5573,7 +5753,7 @@ Нет каналов для отображения src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5582,7 +5762,7 @@ Псевдоним src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5619,7 +5799,7 @@ Статус src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5628,7 +5808,7 @@ ID канала src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5637,11 +5817,11 @@ сат src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5685,6 +5865,24 @@ shared.sats + + avg + среднее + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + медиана + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity Средняя емкость @@ -5813,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5887,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6048,12 +6246,37 @@ Fee distribution + Распределение комиссий src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Исходящие комиссии + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Входящие комиссии + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week Процентное изменение за последнюю неделю @@ -6063,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6143,6 +6366,7 @@ Avg channel distance + Среднее расстояние канала src/app/lightning/node/node.component.html 56,57 @@ -6182,6 +6406,7 @@ Liquidity ad + Объявление ликвидности src/app/lightning/node/node.component.html 138,141 @@ -6190,6 +6415,7 @@ Lease fee rate + Комиссия за аренду src/app/lightning/node/node.component.html 144,147 @@ -6199,6 +6425,7 @@ Lease base fee + Базовая комиссия за аренду src/app/lightning/node/node.component.html 152,154 @@ -6207,6 +6434,7 @@ Funding weight + Вес финансирования src/app/lightning/node/node.component.html 158,159 @@ -6215,6 +6443,7 @@ Channel fee rate + Ставка комиссии канала src/app/lightning/node/node.component.html 168,171 @@ -6224,6 +6453,7 @@ Channel base fee + Базовая комиссия канала src/app/lightning/node/node.component.html 176,178 @@ -6232,6 +6462,7 @@ Compact lease + Компактная аренда src/app/lightning/node/node.component.html 188,190 @@ -6240,6 +6471,7 @@ TLV extension records + Записи расширения TLV src/app/lightning/node/node.component.html 199,202 @@ -6306,7 +6538,7 @@ Данные геолокации недоступны src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6320,6 +6552,7 @@ Indexing in progress + Выполняется индексирование src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6587,6 +6820,7 @@ Active nodes + Активные узлы src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 diff --git a/frontend/src/locale/messages.uk.xlf b/frontend/src/locale/messages.uk.xlf index 49b037bcb..2a5cb6376 100644 --- a/frontend/src/locale/messages.uk.xlf +++ b/frontend/src/locale/messages.uk.xlf @@ -11,6 +11,7 @@ Slide of + Слайд з node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1461,6 +1475,7 @@ Community Integrations + Інтеграції спільноти src/app/components/about/about.component.html 191,193 @@ -1529,11 +1544,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Мультипідпис з src/app/components/address-labels/address-labels.component.ts 107 @@ -1565,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1581,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1664,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1886,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1899,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1912,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1921,7 +1937,7 @@ Не вдалося завантажити дані про активи. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2034,6 +2050,7 @@ At block: + Блок: src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 188 @@ -2044,11 +2061,12 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 Around block: + Біля блоку: src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 190 @@ -2059,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2071,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2084,15 +2102,15 @@ Індексуємо блоки src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2117,6 +2135,7 @@ not available + недоступно src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2136,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2162,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2180,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2196,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2214,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2266,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2294,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2308,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Статус аудиту src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2327,6 +2347,7 @@ Match + Обмін src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2335,6 +2356,7 @@ Removed + Вилучено src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2343,6 +2365,7 @@ Marginal fee rate + Гранична ставка комісії src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2355,6 +2378,7 @@ Recently broadcasted + Недавно надіслані src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2363,6 +2387,7 @@ Added + Додано src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2371,6 +2396,7 @@ Block Prediction Accuracy + Точність прогнозування блоків src/app/components/block-prediction-graph/block-prediction-graph.component.html 6,8 @@ -2387,6 +2413,7 @@ No data to display yet. Try again later. + Поки що немає даних для відображення. Спробуйте пізніше. src/app/components/block-prediction-graph/block-prediction-graph.component.ts 108,103 @@ -2402,6 +2429,7 @@ Match rate + Курс обміну src/app/components/block-prediction-graph/block-prediction-graph.component.ts 189,187 @@ -2416,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2446,15 +2474,15 @@ Розмір src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2478,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2490,11 +2518,11 @@ Вага src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2502,15 +2530,28 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Розмір на вагу + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 Block + Блок src/app/components/block/block-preview.component.html 3,7 @@ -2521,14 +2562,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Середня комісія @@ -2538,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2555,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2577,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2590,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2615,24 +2648,42 @@ Previous Block - - Block health + + Health + Здоров'я src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown + Невідомо src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2656,7 +2707,7 @@ Діапазон комісії src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2669,7 +2720,7 @@ На основі середнього розміру segwit транзакції в 140 vByte src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2693,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Нагорода + комісії: + + Subsidy + fees + Нагорода + комісії src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Очікувалося src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + бета + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Фактично src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Очікуваний блок src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Фактичний блок src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2744,7 +2812,7 @@ Біти src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2753,7 +2821,7 @@ Корінь Меркле src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2762,7 +2830,7 @@ Складність src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2791,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2800,20 +2868,30 @@ Заголовок блоку в hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Аудит + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Деталі src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2835,11 +2913,11 @@ Не вдалося завантажити дані. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2861,9 +2939,10 @@ Why is this block empty? + Чому цей блок пустий? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2909,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Нагорода @@ -2984,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3150,6 +3217,7 @@ Usually places your transaction in between the second and third mempool blocks + Зазвичай розміщує вашу транзакцію між другим та третім блоками мемпулу src/app/components/fees-box/fees-box.component.html 8,9 @@ -3171,6 +3239,7 @@ Usually places your transaction in between the first and second mempool blocks + Зазвичай розміщує вашу транзакцію між першим та другим блоками мемпулу src/app/components/fees-box/fees-box.component.html 9,10 @@ -3221,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3234,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3247,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3261,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3313,6 +3382,7 @@ Hashrate & Difficulty + Хешрейт та складність src/app/components/graphs/graphs.component.html 15,16 @@ -3321,6 +3391,7 @@ Lightning + Lightning src/app/components/graphs/graphs.component.html 31 @@ -3329,6 +3400,7 @@ Lightning Nodes Per Network + Lightning нод на мережу src/app/components/graphs/graphs.component.html 34 @@ -3349,6 +3421,7 @@ Lightning Network Capacity + Пропускна спроможність Lightning src/app/components/graphs/graphs.component.html 36 @@ -3369,6 +3442,7 @@ Lightning Nodes Per ISP + Lightning нод на ISP src/app/components/graphs/graphs.component.html 38 @@ -3381,6 +3455,7 @@ Lightning Nodes Per Country + Lightning нод на країну src/app/components/graphs/graphs.component.html 40 @@ -3397,6 +3472,7 @@ Lightning Nodes World Map + Мапа Lightning нод src/app/components/graphs/graphs.component.html 42 @@ -3413,6 +3489,7 @@ Lightning Nodes Channels World Map + Мапа Lightning каналів src/app/components/graphs/graphs.component.html 44 @@ -3467,6 +3544,7 @@ Hashrate (MA) + Хешрейт (MA) src/app/components/hashrate-chart/hashrate-chart.component.ts 292,291 @@ -3509,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3532,9 +3610,10 @@ Lightning Explorer + Lightning експлорер src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3542,20 +3621,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Документація src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3635,8 +3706,35 @@ dashboard.adjustments + + Broadcast Transaction + Надіслати транзакцію + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) + Удача пулу (1 тиждень) src/app/components/pool-ranking/pool-ranking.component.html 9 @@ -3645,6 +3743,7 @@ Pools luck + Удача пулу src/app/components/pool-ranking/pool-ranking.component.html 9,11 @@ -3653,6 +3752,7 @@ The overall luck of all mining pools over the past week. A luck bigger than 100% means the average block time for the current epoch is less than 10 minutes. + Загальна удача всіх майнінг-пулів за минулий тиждень. Успіх, більший за 100%, означає, що середній час блоків для поточної епохи менше 10 хвилин. src/app/components/pool-ranking/pool-ranking.component.html 11,15 @@ -3661,6 +3761,7 @@ Pools count (1w) + Кількість пулів (1тижд) src/app/components/pool-ranking/pool-ranking.component.html 17 @@ -3669,6 +3770,7 @@ Pools count + Кількість пулів src/app/components/pool-ranking/pool-ranking.component.html 17,19 @@ -3677,6 +3779,7 @@ How many unique pools found at least one block over the past week. + Скільки унікальних пулів знайшли хоча б один блок за останній тиждень. src/app/components/pool-ranking/pool-ranking.component.html 19,23 @@ -3696,12 +3799,13 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks The number of blocks found over the past week. + Кількість блоків, знайдених за останній тиждень. src/app/components/pool-ranking/pool-ranking.component.html 27,31 @@ -3725,12 +3829,25 @@ mining.rank + + Avg Health + Середній рівень здоров'я + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Пусті блоки src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3739,7 +3856,7 @@ Всі майнери src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3748,7 +3865,7 @@ Удача пулу (1тижд) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3757,7 +3874,7 @@ Кількість пулів (1тижд) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3766,7 +3883,7 @@ Майнінг пули src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3783,6 +3900,7 @@ mining pool + майнінг пул src/app/components/pool/pool-preview.component.html 3,5 @@ -3992,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Надіслати транзакцію - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Транзакція в hex @@ -4019,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4051,6 +4151,7 @@ Avg Block Fees + Середня комісія блоку src/app/components/reward-stats/reward-stats.component.html 17 @@ -4063,6 +4164,7 @@ Average fees per block in the past 144 blocks + Середня комісія блоку за останні 144 блоки src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4071,6 +4173,7 @@ BTC/block + BTC/блок src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4080,6 +4183,7 @@ Avg Tx Fee + Середня комісія src/app/components/reward-stats/reward-stats.component.html 30 @@ -4124,6 +4228,7 @@ Explore the full Bitcoin ecosystem + Перегляньте всю екосистему Bitcoin src/app/components/search-form/search-form.component.html 4,5 @@ -4139,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Висота Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Транзакція Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Адреса Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Блок Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Адреси Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Lightning ноди + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Lightning канали + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Перейти до &quot;&quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Мемпул в vBytes (sat/vByte) @@ -4396,6 +4573,7 @@ This transaction replaced: + Транзакція була замінена: src/app/components/transaction/transaction.component.html 10,12 @@ -4405,6 +4583,7 @@ Replaced + Замінена src/app/components/transaction/transaction.component.html 36,39 @@ -4421,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4431,7 +4610,7 @@ Вперше помічена src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4465,7 +4644,7 @@ Орієнтовний час src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4475,7 +4654,7 @@ За кілька годин (або довше) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4485,11 +4664,11 @@ Нащадок src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4499,37 +4678,40 @@ Предок src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor Flow + Потік src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow Hide diagram + Сховати діаграму src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram Show more + Показати більше src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4543,9 +4725,10 @@ Show less + Показати менше src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4555,9 +4738,10 @@ Show diagram + Показати діаграму src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4566,7 +4750,7 @@ Час блокування src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4575,7 +4759,7 @@ Транзакція не знайдена. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4584,7 +4768,7 @@ Чекаємо її появи в мемпулі... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4593,7 +4777,7 @@ Поточна ставка комісії src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4739,22 +4923,25 @@ Show more inputs to reveal fee data + Показати більше входів, щоб порахувати комісію src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + лишається src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining other inputs + інші входи src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 12 @@ -4763,6 +4950,7 @@ other outputs + інші виходи src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 13 @@ -4771,6 +4959,7 @@ Input + Вхід src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 42 @@ -4783,6 +4972,7 @@ Output + Вихід src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html 43 @@ -4795,6 +4985,7 @@ This transaction saved % on fees by using native SegWit + Ця транзакція зекономила % на комісії використовуючи нативний SegWit src/app/components/tx-features/tx-features.component.html 2 @@ -4821,6 +5012,7 @@ This transaction saved % on fees by using SegWit and could save % more by fully upgrading to native SegWit + Ця транзакція зекономила % використовуючи SegWit і могла б зекономити % якщо б вона використовувала нативний SegWit src/app/components/tx-features/tx-features.component.html 4 @@ -4829,6 +5021,7 @@ This transaction could save % on fees by upgrading to native SegWit or % by upgrading to SegWit-P2SH + Ця транзакція могла зекономити % на комісії якщо б вона використовувала нативний SegWit або % якщо б вона використовувала SegWit-P2SH src/app/components/tx-features/tx-features.component.html 6 @@ -4837,6 +5030,7 @@ This transaction uses Taproot and thereby saved at least % on fees + Ця транзакція використовує Taproot і тому зекономила як мініум % на комісії src/app/components/tx-features/tx-features.component.html 12 @@ -4845,6 +5039,7 @@ Taproot + Taproot src/app/components/tx-features/tx-features.component.html 12 @@ -4870,6 +5065,7 @@ This transaction uses Taproot and already saved at least % on fees, but could save an additional % by fully using Taproot + Ця транзакція використовує Taproot і вже зекономила як мініум % на комісії, але могла б зекономити додаткові % повністю перейшовши на Taproot src/app/components/tx-features/tx-features.component.html 14 @@ -4878,6 +5074,7 @@ This transaction could save % on fees by using Taproot + Ця транзакція могла зекономити % на комісії використавши Taproot src/app/components/tx-features/tx-features.component.html 16 @@ -4886,6 +5083,7 @@ This transaction does not use Taproot + Ця транзакція не використовує Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -4903,6 +5101,7 @@ This transaction supports Replace-By-Fee (RBF) allowing fee bumping + Ця транзакція підтримує Replace-By-Fee (RBF), що дозволяє збільшення комісії src/app/components/tx-features/tx-features.component.html 28 @@ -4987,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Мінімальна комісія src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5011,7 +5201,7 @@ Очищення src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5021,7 +5211,7 @@ Використання пам'яті src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5031,15 +5221,25 @@ L-BTC в обігу src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation - - REST API service + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space лише надає дані про мережу Bitcoin. Він не зможе допомогти вам повернути кошти, підтвердити вашу транзакцію швидше, і т. д. src/app/docs/api-docs/api-docs.component.html - 39,40 + 13 + + faq.big-disclaimer + + + REST API service + Сервіс REST API + + src/app/docs/api-docs/api-docs.component.html + 41,42 api-docs.title @@ -5048,11 +5248,11 @@ Ендпоїнт src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5061,11 +5261,11 @@ Опис src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5073,7 +5273,7 @@ Надсилання за замовчуванням за замовчуванням: action: 'want', data: ['blocks', ...] щоб вказати, що має бути надіслано. Доступно: blocks, mempool-blocks, live-2h-chart та stats.Надіслати транзакції пов'язані з адресою: 'track-address': '3PbJ...bF9B' щоб отримати всі нові транзакції які містять дану адресу у входах чи виходах. Повертає масив транзакцій. address-transactions для нових мемпул транзакцій та block-transactions для нових підтверджених транзакцій. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5142,6 +5342,7 @@ Base fee + Базова комісія src/app/lightning/channel/channel-box/channel-box.component.html 29 @@ -5154,6 +5355,7 @@ mSats + mSats src/app/lightning/channel/channel-box/channel-box.component.html 35 @@ -5174,6 +5376,7 @@ This channel supports zero base fee routing + Цей канал підтримує маршрутизацію з нульовою базовою комісією src/app/lightning/channel/channel-box/channel-box.component.html 44 @@ -5182,6 +5385,7 @@ Zero base fee + Нульова базова комісія src/app/lightning/channel/channel-box/channel-box.component.html 45 @@ -5190,6 +5394,7 @@ This channel does not support zero base fee routing + Цей канал не підтримує маршрутизацію з нульовою базовою комісією src/app/lightning/channel/channel-box/channel-box.component.html 50 @@ -5198,6 +5403,7 @@ Non-zero base fee + Не нульова базова комісія src/app/lightning/channel/channel-box/channel-box.component.html 51 @@ -5206,6 +5412,7 @@ Min HTLC + Мінімальний HTLC src/app/lightning/channel/channel-box/channel-box.component.html 57 @@ -5214,6 +5421,7 @@ Max HTLC + Максимальний HTLC src/app/lightning/channel/channel-box/channel-box.component.html 63 @@ -5222,6 +5430,7 @@ Timelock delta + Дельта блокування по часу src/app/lightning/channel/channel-box/channel-box.component.html 69 @@ -5230,18 +5439,20 @@ channels + канали src/app/lightning/channel/channel-box/channel-box.component.html 79 src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Початковий баланс src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5251,6 +5462,7 @@ Closing balance + Кінцевий баланс src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5260,6 +5472,7 @@ lightning channel + lightning канал src/app/lightning/channel/channel-preview.component.html 3,5 @@ -5268,6 +5481,7 @@ Inactive + неактивний src/app/lightning/channel/channel-preview.component.html 10,11 @@ -5278,12 +5492,13 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive Active + Активний src/app/lightning/channel/channel-preview.component.html 11,12 @@ -5294,12 +5509,13 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active Closed + Закритий src/app/lightning/channel/channel-preview.component.html 12,14 @@ -5314,12 +5530,13 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed Created + Створений src/app/lightning/channel/channel-preview.component.html 23,26 @@ -5332,6 +5549,7 @@ Capacity + Пропускна спроможність src/app/lightning/channel/channel-preview.component.html 27,28 @@ -5342,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5350,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5384,6 +5602,7 @@ ppm + ppm src/app/lightning/channel/channel-preview.component.html 34,35 @@ -5404,6 +5623,7 @@ Lightning channel + Lightning канал src/app/lightning/channel/channel.component.html 2,5 @@ -5416,6 +5636,7 @@ Last update + Востаннє оновлено src/app/lightning/channel/channel.component.html 33,34 @@ -5448,18 +5669,20 @@ Closing date + Дата закриття src/app/lightning/channel/channel.component.html 37,38 src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Закрито src/app/lightning/channel/channel.component.html 52,54 @@ -5468,6 +5691,7 @@ Opening transaction + Відкриваюча транзакція src/app/lightning/channel/channel.component.html 84,85 @@ -5476,6 +5700,7 @@ Closing transaction + Закриваюча транзакція src/app/lightning/channel/channel.component.html 93,95 @@ -5484,13 +5709,39 @@ Channel: + Канал: src/app/lightning/channel/channel.component.ts 37 + + Mutually closed + Взаємно закритий + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Закритий силою + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Закритий силою з штрафом + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open + Відкритий src/app/lightning/channels-list/channels-list.component.html 5,7 @@ -5499,17 +5750,19 @@ No channels to display + Немає каналів для відображення src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list Alias + Псевдонім src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5543,29 +5796,32 @@ Status + Статус src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status Channel ID + ID каналу src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id sats + sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5609,8 +5865,27 @@ shared.sats + + avg + в середньому + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + медіана + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity + Середня пропускна спроможність src/app/lightning/channels-statistics/channels-statistics.component.html 13,15 @@ -5623,6 +5898,7 @@ Avg Fee Rate + Середня ставка комісії src/app/lightning/channels-statistics/channels-statistics.component.html 26,28 @@ -5635,6 +5911,7 @@ The average fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Середня ставка комісії, що стягується нодами маршрутизації, без урахування ставок комісії > 0.5% або 5000ppm src/app/lightning/channels-statistics/channels-statistics.component.html 28,30 @@ -5643,6 +5920,7 @@ Avg Base Fee + Середня базова комісія src/app/lightning/channels-statistics/channels-statistics.component.html 41,43 @@ -5655,6 +5933,7 @@ The average base fee charged by routing nodes, ignoring base fees > 5000ppm + Середня базова комісія, що стягується нодами маршрутизації, без урахування базової комісії > 5000ppm src/app/lightning/channels-statistics/channels-statistics.component.html 43,45 @@ -5663,6 +5942,7 @@ Med Capacity + Середня медіана src/app/lightning/channels-statistics/channels-statistics.component.html 59,61 @@ -5671,6 +5951,7 @@ Med Fee Rate + Медіана ставки комісії src/app/lightning/channels-statistics/channels-statistics.component.html 72,74 @@ -5679,6 +5960,7 @@ The median fee rate charged by routing nodes, ignoring fee rates > 0.5% or 5000ppm + Медіана ставки комісії яка стягується нодами маршрутизації, без урахування ставки комісії > 0.5% чи 5000ppm src/app/lightning/channels-statistics/channels-statistics.component.html 74,76 @@ -5687,6 +5969,7 @@ Med Base Fee + Медіана базової комісії src/app/lightning/channels-statistics/channels-statistics.component.html 87,89 @@ -5695,6 +5978,7 @@ The median base fee charged by routing nodes, ignoring base fees > 5000ppm + Медіана базової комісії, що стягується нодами маршрутизації, без урахування базової комісії > 5000ppm src/app/lightning/channels-statistics/channels-statistics.component.html 89,91 @@ -5703,6 +5987,7 @@ Lightning node group + Група Lightning нод src/app/lightning/group/group-preview.component.html 3,5 @@ -5715,6 +6000,7 @@ Nodes + Ноди src/app/lightning/group/group-preview.component.html 25,29 @@ -5725,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5751,6 +6037,7 @@ Liquidity + Ліквідність src/app/lightning/group/group-preview.component.html 29,31 @@ -5787,6 +6074,7 @@ Channels + Канали src/app/lightning/group/group-preview.component.html 40,43 @@ -5797,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5847,6 +6135,7 @@ Average size + Середній розмір src/app/lightning/group/group-preview.component.html 44,46 @@ -5859,6 +6148,7 @@ Location + Локація src/app/lightning/group/group.component.html 74,77 @@ -5899,6 +6189,7 @@ Network Statistics + Статистика мережі src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 10 @@ -5907,6 +6198,7 @@ Channels Statistics + Статистика каналу src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 24 @@ -5915,6 +6207,7 @@ Lightning Network History + Історія мережі Lightning src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 49 @@ -5923,6 +6216,7 @@ Liquidity Ranking + Рейтинг ліквідності src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 62 @@ -5939,6 +6233,7 @@ Connectivity Ranking + Рейтинг зв'язку src/app/lightning/lightning-dashboard/lightning-dashboard.component.html 76 @@ -5951,30 +6246,57 @@ Fee distribution + Розподіл комісії src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Вихідні комісії + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Вхідні комісії + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week + Відсоткова зміна за останній тиждень src/app/lightning/node-statistics/node-statistics.component.html 5,7 src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week Lightning node + Lightning нода src/app/lightning/node/node-preview.component.html 3,5 @@ -5991,6 +6313,7 @@ Active capacity + Активна пропускна спроможність src/app/lightning/node/node-preview.component.html 20,22 @@ -6003,6 +6326,7 @@ Active channels + Активні канали src/app/lightning/node/node-preview.component.html 26,30 @@ -6015,6 +6339,7 @@ Country + Країна src/app/lightning/node/node-preview.component.html 44,47 @@ -6023,6 +6348,7 @@ No node found for public key "" + Не знайдено ноду для ключа &quot;&quot; src/app/lightning/node/node.component.html 17,19 @@ -6031,6 +6357,7 @@ Average channel size + Середній розмір каналу src/app/lightning/node/node.component.html 40,43 @@ -6039,6 +6366,7 @@ Avg channel distance + Середня відстань каналу src/app/lightning/node/node.component.html 56,57 @@ -6047,6 +6375,7 @@ Color + Колір src/app/lightning/node/node.component.html 79,81 @@ -6055,6 +6384,7 @@ ISP + ISP src/app/lightning/node/node.component.html 86,87 @@ -6067,6 +6397,7 @@ Exclusively on Tor + Ексклюзивно для Tor src/app/lightning/node/node.component.html 93,95 @@ -6075,6 +6406,7 @@ Liquidity ad + Реклама ліквідності src/app/lightning/node/node.component.html 138,141 @@ -6083,6 +6415,7 @@ Lease fee rate + Ставка комісії оренди src/app/lightning/node/node.component.html 144,147 @@ -6092,6 +6425,7 @@ Lease base fee + Базова комісія оренди src/app/lightning/node/node.component.html 152,154 @@ -6100,6 +6434,7 @@ Funding weight + Вага фінансування src/app/lightning/node/node.component.html 158,159 @@ -6108,6 +6443,7 @@ Channel fee rate + Ставка комісії каналу src/app/lightning/node/node.component.html 168,171 @@ -6117,6 +6453,7 @@ Channel base fee + Базова комісія каналу src/app/lightning/node/node.component.html 176,178 @@ -6125,6 +6462,7 @@ Compact lease + Компактна оренда src/app/lightning/node/node.component.html 188,190 @@ -6133,6 +6471,7 @@ TLV extension records + Записи продовження TLV src/app/lightning/node/node.component.html 199,202 @@ -6141,6 +6480,7 @@ Open channels + Відкриті канали src/app/lightning/node/node.component.html 240,243 @@ -6149,6 +6489,7 @@ Closed channels + Закриті канали src/app/lightning/node/node.component.html 244,247 @@ -6157,6 +6498,7 @@ Node: + Нода: src/app/lightning/node/node.component.ts 60 @@ -6164,6 +6506,7 @@ (Tor nodes excluded) + (Без Tor нод) src/app/lightning/nodes-channels-map/nodes-channels-map.component.html 8,11 @@ -6184,6 +6527,7 @@ Lightning Nodes Channels World Map + Мапа каналів Lightning нод src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts 69 @@ -6191,13 +6535,15 @@ No geolocation data available + Немає доступної геолокації src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 Active channels map + Мапа активних каналів src/app/lightning/nodes-channels/node-channels.component.html 2,3 @@ -6206,6 +6552,7 @@ Indexing in progress + Йде індексування src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6217,6 +6564,7 @@ Reachable on Clearnet Only + Доступно тільки через Клірнет src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 164,161 @@ -6228,6 +6576,7 @@ Reachable on Clearnet and Darknet + Доступно через Клірнет та Даркнет src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 185,182 @@ -6239,6 +6588,7 @@ Reachable on Darknet Only + Доступно тільки через Даркнет src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 206,203 @@ -6250,6 +6600,7 @@ Share + Частка src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html 29,31 @@ -6262,6 +6613,7 @@ nodes + нод src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 103,102 @@ -6277,6 +6629,7 @@ BTC capacity + BTC пропускної спроможності src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts 104,102 @@ -6284,6 +6637,7 @@ Lightning nodes in + Lightning нод в src/app/lightning/nodes-per-country/nodes-per-country.component.html 3,4 @@ -6292,6 +6646,7 @@ ISP Count + Кількість ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 34,38 @@ -6300,6 +6655,7 @@ Top ISP + Рейтинг ISP src/app/lightning/nodes-per-country/nodes-per-country.component.html 38,40 @@ -6308,6 +6664,7 @@ Lightning nodes in + Lightning нод в src/app/lightning/nodes-per-country/nodes-per-country.component.ts 35 @@ -6315,6 +6672,7 @@ Clearnet Capacity + Пропускна спроможність Клірнету src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 6,8 @@ -6327,6 +6685,7 @@ How much liquidity is running on nodes advertising at least one clearnet IP address + Скільки ліквідності доступно на нодах, що мають хоча б одну Клірнет IP-адресу src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 8,9 @@ -6335,6 +6694,7 @@ Unknown Capacity + Пропускна спроможність невідома src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 13,15 @@ -6347,6 +6707,7 @@ How much liquidity is running on nodes which ISP was not identifiable + Скільки ліквідності доступно на нодах, чий ISP неможливо ідентифікувати src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 15,16 @@ -6355,6 +6716,7 @@ Tor Capacity + Пропускна спроможність Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6367,6 +6729,7 @@ How much liquidity is running on nodes advertising only Tor addresses + Скільки ліквідності доступно на нодах, що доступні тільки через Tor адресу src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 22,23 @@ -6375,6 +6738,7 @@ Top 100 ISPs hosting LN nodes + Топ 100 ISP провайдерів, які надають послуги хостингу LN нод src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 31,33 @@ -6383,6 +6747,7 @@ BTC + BTC src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts 158,156 @@ -6394,6 +6759,7 @@ Lightning ISP + Lightning ISP src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 3,5 @@ -6402,6 +6768,7 @@ Top country + Рейтинг країн src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 39,41 @@ -6414,6 +6781,7 @@ Top node + Рейтинг нод src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html 45,48 @@ -6422,6 +6790,7 @@ Lightning nodes on ISP: [AS] + Lightning ноди на ISP: [НА ] src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts 44 @@ -6433,6 +6802,7 @@ Lightning nodes on ISP: + Lightning ноди на ISP: src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 2,4 @@ -6441,6 +6811,7 @@ ASN + ASN src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 11,14 @@ -6449,6 +6820,7 @@ Active nodes + Активні ноди src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6457,6 +6829,7 @@ Top 100 oldest lightning nodes + Топ 100 найстаріших lightning нод src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html 3,7 @@ -6465,6 +6838,7 @@ Oldest lightning nodes + Найстаріші lightning ноди src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts 27 @@ -6472,6 +6846,7 @@ Top 100 nodes liquidity ranking + Топ 100 нод за ліквідністю src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html 3,7 @@ -6480,6 +6855,7 @@ Top 100 nodes connectivity ranking + Топ 100 нод за кількістю з'єднань src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html 3,7 @@ -6488,6 +6864,7 @@ Oldest nodes + Найстаріші ноди src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6496,6 +6873,7 @@ Top lightning nodes + Рейтинг lightning нод src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6503,6 +6881,7 @@ Indexing in progress + Йде індексування src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 From 7d8875eb7303ddf0f8ab5a6c39e22c400cc2b527 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Tue, 28 Feb 2023 10:59:39 +0900 Subject: [PATCH 072/102] Use relative path to import price service --- frontend/src/app/components/amount/amount.component.ts | 2 +- .../block-overview-graph/block-overview-graph.component.ts | 2 +- .../block-overview-tooltip/block-overview-tooltip.component.ts | 2 +- frontend/src/app/components/block/block.component.ts | 2 +- .../src/app/components/transaction/transaction.component.ts | 2 +- .../components/transactions-list/transactions-list.component.ts | 2 +- .../tx-bowtie-graph-tooltip.component.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/components/amount/amount.component.ts b/frontend/src/app/components/amount/amount.component.ts index 927504012..479ae4791 100644 --- a/frontend/src/app/components/amount/amount.component.ts +++ b/frontend/src/app/components/amount/amount.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, OnDestroy, Input, ChangeDetectionStrategy, ChangeDetectorRef } from '@angular/core'; import { StateService } from '../../services/state.service'; import { Observable, Subscription } from 'rxjs'; -import { Price } from 'src/app/services/price.service'; +import { Price } from '../../services/price.service'; @Component({ selector: 'app-amount', diff --git a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts index b46f7a3e7..b77792aee 100644 --- a/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts +++ b/frontend/src/app/components/block-overview-graph/block-overview-graph.component.ts @@ -5,7 +5,7 @@ import BlockScene from './block-scene'; import TxSprite from './tx-sprite'; import TxView from './tx-view'; import { Position } from './sprite-types'; -import { Price } from 'src/app/services/price.service'; +import { Price } from '../../services/price.service'; @Component({ selector: 'app-block-overview-graph', diff --git a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts index 1bd2b8714..ea011d045 100644 --- a/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts +++ b/frontend/src/app/components/block-overview-tooltip/block-overview-tooltip.component.ts @@ -1,7 +1,7 @@ import { Component, ElementRef, ViewChild, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core'; import { TransactionStripped } from '../../interfaces/websocket.interface'; import { Position } from '../../components/block-overview-graph/sprite-types.js'; -import { Price } from 'src/app/services/price.service'; +import { Price } from '../../services/price.service'; @Component({ selector: 'app-block-overview-tooltip', diff --git a/frontend/src/app/components/block/block.component.ts b/frontend/src/app/components/block/block.component.ts index 35f47de85..f5a0c93b0 100644 --- a/frontend/src/app/components/block/block.component.ts +++ b/frontend/src/app/components/block/block.component.ts @@ -13,7 +13,7 @@ import { BlockAudit, BlockExtended, TransactionStripped } from '../../interfaces import { ApiService } from '../../services/api.service'; import { BlockOverviewGraphComponent } from '../../components/block-overview-graph/block-overview-graph.component'; import { detectWebGL } from '../../shared/graphs.utils'; -import { PriceService, Price } from 'src/app/services/price.service'; +import { PriceService, Price } from '../../services/price.service'; @Component({ selector: 'app-block', diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts index 4d036e131..4fedc3912 100644 --- a/frontend/src/app/components/transaction/transaction.component.ts +++ b/frontend/src/app/components/transaction/transaction.component.ts @@ -22,7 +22,7 @@ import { SeoService } from '../../services/seo.service'; import { BlockExtended, CpfpInfo } from '../../interfaces/node-api.interface'; import { LiquidUnblinding } from './liquid-ublinding'; import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe'; -import { Price, PriceService } from 'src/app/services/price.service'; +import { Price, PriceService } from '../../services/price.service'; @Component({ selector: 'app-transaction', diff --git a/frontend/src/app/components/transactions-list/transactions-list.component.ts b/frontend/src/app/components/transactions-list/transactions-list.component.ts index 6422d8507..c720d5960 100644 --- a/frontend/src/app/components/transactions-list/transactions-list.component.ts +++ b/frontend/src/app/components/transactions-list/transactions-list.component.ts @@ -9,7 +9,7 @@ import { AssetsService } from '../../services/assets.service'; import { filter, map, tap, switchMap, shareReplay } from 'rxjs/operators'; import { BlockExtended } from '../../interfaces/node-api.interface'; import { ApiService } from '../../services/api.service'; -import { PriceService } from 'src/app/services/price.service'; +import { PriceService } from '../../services/price.service'; @Component({ selector: 'app-transactions-list', diff --git a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts index da8d91ab3..b02637ef0 100644 --- a/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts +++ b/frontend/src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.ts @@ -1,6 +1,6 @@ import { Component, ElementRef, ViewChild, Input, OnChanges, OnInit } from '@angular/core'; import { tap } from 'rxjs'; -import { Price, PriceService } from 'src/app/services/price.service'; +import { Price, PriceService } from '../../services/price.service'; interface Xput { type: 'input' | 'output' | 'fee'; From 174758bdd9effd92bf6bd2e57cf77738da862b51 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 28 Feb 2023 00:20:30 -0500 Subject: [PATCH 073/102] Specify networks in lightning network graph labels --- .../nodes-networks-chart.component.ts | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts b/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts index 0ff9f4af1..e257864fa 100644 --- a/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts +++ b/frontend/src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts @@ -161,28 +161,7 @@ export class NodesNetworksChartComponent implements OnInit { { zlevel: 1, yAxisIndex: 0, - name: $localize`Reachable on Clearnet Only`, - showSymbol: false, - symbol: 'none', - data: data.clearnet_nodes, - type: 'line', - lineStyle: { - width: 2, - }, - areaStyle: { - opacity: 0.5, - }, - stack: 'Total', - color: new graphic.LinearGradient(0, 0.75, 0, 1, [ - { offset: 0, color: '#FFB300' }, - { offset: 1, color: '#FFB300AA' }, - ]), - smooth: false, - }, - { - zlevel: 1, - yAxisIndex: 0, - name: $localize`Reachable on Clearnet and Darknet`, + name: $localize`Clearnet and Darknet`, showSymbol: false, symbol: 'none', data: data.clearnet_tor_nodes, @@ -203,7 +182,28 @@ export class NodesNetworksChartComponent implements OnInit { { zlevel: 1, yAxisIndex: 0, - name: $localize`Reachable on Darknet Only`, + name: $localize`Clearnet (IPv4, IPv6)`, + showSymbol: false, + symbol: 'none', + data: data.clearnet_nodes, + type: 'line', + lineStyle: { + width: 2, + }, + areaStyle: { + opacity: 0.5, + }, + stack: 'Total', + color: new graphic.LinearGradient(0, 0.75, 0, 1, [ + { offset: 0, color: '#FFB300' }, + { offset: 1, color: '#FFB300AA' }, + ]), + smooth: false, + }, + { + zlevel: 1, + yAxisIndex: 0, + name: $localize`Darknet Only (Tor, I2P, cjdns)`, showSymbol: false, symbol: 'none', data: data.tor_nodes, @@ -284,7 +284,7 @@ export class NodesNetworksChartComponent implements OnInit { padding: 10, data: [ { - name: $localize`Reachable on Darknet Only`, + name: $localize`Darknet Only (Tor, I2P, cjdns)`, inactiveColor: 'rgb(110, 112, 121)', textStyle: { color: 'white', @@ -292,7 +292,7 @@ export class NodesNetworksChartComponent implements OnInit { icon: 'roundRect', }, { - name: $localize`Reachable on Clearnet and Darknet`, + name: $localize`Clearnet (IPv4, IPv6)`, inactiveColor: 'rgb(110, 112, 121)', textStyle: { color: 'white', @@ -300,7 +300,7 @@ export class NodesNetworksChartComponent implements OnInit { icon: 'roundRect', }, { - name: $localize`Reachable on Clearnet Only`, + name: $localize`Clearnet and Darknet`, inactiveColor: 'rgb(110, 112, 121)', textStyle: { color: 'white', @@ -317,9 +317,9 @@ export class NodesNetworksChartComponent implements OnInit { }, ], selected: this.widget ? undefined : JSON.parse(this.storageService.getValue('nodes_networks_legend')) ?? { - '$localize`Reachable on Darknet Only`': true, - '$localize`Reachable on Clearnet Only`': true, - '$localize`Reachable on Clearnet and Darknet`': true, + '$localize`Darknet Only (Tor, I2P, cjdns)`': true, + '$localize`Clearnet (IPv4, IPv6)`': true, + '$localize`Clearnet and Darknet`': true, '$localize`:@@e5d8bb389c702588877f039d72178f219453a72d:Unknown`': true, } }, From 4bdad54bb20a81ab81b8f8a558a50dba6852dc89 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 28 Feb 2023 04:54:31 -0500 Subject: [PATCH 074/102] Link api rate limit note to /enterprise --- frontend/src/app/docs/api-docs/api-docs.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/docs/api-docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html index 47332abc3..8c8d6ac36 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.html +++ b/frontend/src/app/docs/api-docs/api-docs.component.html @@ -39,7 +39,7 @@

Below is a reference for the {{ network.val === '' ? 'Bitcoin' : network.val.charAt(0).toUpperCase() + network.val.slice(1) }} REST API service.

-

Note that we enforce rate limits. If you exceed these limits, you will get a polite error encouraging you to run your own Mempool instance. If you repeatedly exceed the limits, you may be banned from accessing the service altogether.

+

Note that we enforce rate limits. If you exceed these limits, you will get an HTTP 429 error. If you repeatedly exceed the limits, you may be banned from accessing the service altogether. Consider an enterprise sponsorship if you need higher API limits.

{{ item.title }}

From 73b90fcd250fc19568ad29e16a5f86f024756c6f Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Fri, 24 Feb 2023 09:44:15 -0500 Subject: [PATCH 075/102] Add skeleton for blocks-bulk endpoint --- .../src/app/docs/api-docs/api-docs-data.ts | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/frontend/src/app/docs/api-docs/api-docs-data.ts b/frontend/src/app/docs/api-docs/api-docs-data.ts index a6e8e418f..2c3bbc06b 100644 --- a/frontend/src/app/docs/api-docs/api-docs-data.ts +++ b/frontend/src/app/docs/api-docs/api-docs-data.ts @@ -2907,6 +2907,54 @@ export const restApiDocsData = [ } }, ... +]` + }, + codeSampleLiquid: emptyCodeSample, + codeSampleLiquidTestnet: emptyCodeSample, + codeSampleBisq: emptyCodeSample, + } + } + }, + { + type: "endpoint", + category: "blocks", + httpRequestMethod: "GET", + fragment: "get-blocks-bulk", + title: "GET Blocks (Bulk)", + description: { + default: "Returns details on the range of blocks between :minHeight and :maxHeight, inclusive, up to 100 blocks. If :maxHeight is not specified, :maxHeight defaults to the current tip." + }, + urlString: "/v1/blocks-bulk/:minHeight[/:maxHeight]", + showConditions: bitcoinNetworks, + showJsExamples: showJsExamplesDefaultFalse, + codeExample: { + default: { + codeTemplate: { + curl: `/api/v1/blocks-bulk/%{1}/%{2}`, + commonJS: ``, + }, + codeSampleMainnet: { + esModule: [], + commonJS: [], + curl: [730000, 730100], + response: `[ + +]`, + }, + codeSampleTestnet: { + esModule: ['2091187'], + commonJS: ['2091187'], + curl: ['2091187'], + response: `[ + +]` + }, + codeSampleSignet: { + esModule: ['53783'], + commonJS: ['53783'], + curl: ['53783'], + response: `[ + ]` }, codeSampleLiquid: emptyCodeSample, From f057b07021ef7e678dbf929d2b1ee2275adb5afe Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Sat, 25 Feb 2023 02:26:06 -0500 Subject: [PATCH 076/102] Add note for special availability Indicating that api endpoint is only available for enterprise sponsors. --- .../src/app/docs/api-docs/api-docs-data.ts | 1 + .../app/docs/api-docs/api-docs.component.html | 2 ++ .../app/docs/api-docs/api-docs.component.scss | 22 +++++++++++++++++++ frontend/src/app/shared/shared.module.ts | 3 ++- 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/docs/api-docs/api-docs-data.ts b/frontend/src/app/docs/api-docs/api-docs-data.ts index 2c3bbc06b..525e19320 100644 --- a/frontend/src/app/docs/api-docs/api-docs-data.ts +++ b/frontend/src/app/docs/api-docs/api-docs-data.ts @@ -2927,6 +2927,7 @@ export const restApiDocsData = [ urlString: "/v1/blocks-bulk/:minHeight[/:maxHeight]", showConditions: bitcoinNetworks, showJsExamples: showJsExamplesDefaultFalse, + specialAvailability: { enterprise: true }, codeExample: { default: { codeTemplate: { diff --git a/frontend/src/app/docs/api-docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html index 47332abc3..4687fe0b2 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.html +++ b/frontend/src/app/docs/api-docs/api-docs.component.html @@ -46,6 +46,8 @@
{{ item.title }} {{ item.category }}
+

This endpoint is available to enterprise sponsors.

+

This endpoint is only supported on official mempool.space instances.

Endpoint
diff --git a/frontend/src/app/docs/api-docs/api-docs.component.scss b/frontend/src/app/docs/api-docs/api-docs.component.scss index 92e78bc55..231871db6 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.scss +++ b/frontend/src/app/docs/api-docs/api-docs.component.scss @@ -284,6 +284,28 @@ h3 { margin-bottom: 0; } +.special-availability { + padding: 16px; + margin-bottom: 15px; + background-color: #1d1f31; +} + +.special-availability table tr td:first-child { + padding-right: 10px; +} + +.special-availability.enterprise fa-icon { + color: #ffc107; +} + +.special-availability.mempoolspace fa-icon { + color: #1bd8f4; +} + +.special-availability p { + margin: 0; +} + @media (max-width: 992px) { h3 { diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts index fd257db85..46d831309 100644 --- a/frontend/src/app/shared/shared.module.ts +++ b/frontend/src/app/shared/shared.module.ts @@ -4,7 +4,7 @@ import { NgbCollapseModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstra import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome'; import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle, faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown, - faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft } from '@fortawesome/free-solid-svg-icons'; + faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft, faStar } from '@fortawesome/free-solid-svg-icons'; import { InfiniteScrollModule } from 'ngx-infinite-scroll'; import { MasterPageComponent } from '../components/master-page/master-page.component'; import { PreviewTitleComponent } from '../components/master-page-preview/preview-title.component'; @@ -309,5 +309,6 @@ export class SharedModule { library.addIcons(faQrcode); library.addIcons(faArrowRightArrowLeft); library.addIcons(faExchangeAlt); + library.addIcons(faStar); } } From 852513500af5b5fd94415fe6bc842982acf53c3d Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Sun, 26 Feb 2023 03:12:41 -0500 Subject: [PATCH 077/102] Add example responses for blocks-bulk --- .../src/app/docs/api-docs/api-docs-data.ts | 185 +++++++++++++++++- 1 file changed, 175 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/docs/api-docs/api-docs-data.ts b/frontend/src/app/docs/api-docs/api-docs-data.ts index 525e19320..d3d50fe79 100644 --- a/frontend/src/app/docs/api-docs/api-docs-data.ts +++ b/frontend/src/app/docs/api-docs/api-docs-data.ts @@ -2937,25 +2937,190 @@ export const restApiDocsData = [ codeSampleMainnet: { esModule: [], commonJS: [], - curl: [730000, 730100], + curl: [100000,100000], response: `[ - + { + "height": 100000, + "hash": "000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506", + "timestamp": 1293623863, + "median_timestamp": 1293622620, + "previous_block_hash": "000000000002d01c1fccc21636b607dfd930d31d01c3a62104612a1719011250", + "difficulty": 14484.1623612254, + "header": "0100000050120119172a610421a6c3011dd330d9df07b63616c2cc1f1cd00200000000006657a9252aacd5c0b2940996ecff952228c3067cc38d4885efb5a4ac4247e9f337221b4d4c86041b0f2b5710", + "version": 1, + "bits": 453281356, + "nonce": 274148111, + "size": 957, + "weight": 3828, + "tx_count": 4, + "merkle_root": "f3e94742aca4b5ef85488dc37c06c3282295ffec960994b2c0d5ac2a25a95766", + "reward": 5000000000, + "total_fee_amt": 0, + "avg_fee_amt": 0, + "median_fee_amt": 0, + "fee_amt_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "avg_fee_rate": 0, + "median_fee_rate": 0, + "fee_rate_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "total_inputs": 3, + "total_input_amt": 5301000000, + "total_outputs": 6, + "total_output_amt": 5301000000, + "segwit_total_txs": 0, + "segwit_total_size": 0, + "segwit_total_weight": 0, + "avg_tx_size": 185.25, + "utxoset_change": 3, + "utxoset_size": 71888, + "coinbase_raw": "044c86041b020602", + "coinbase_address": null, + "coinbase_signature": "OP_PUSHBYTES_65 041b0e8c2567c12536aa13357b79a073dc4444acb83c4ec7a0e2f99dd7457516c5817242da796924ca4e99947d087fedf9ce467cb9f7c6287078f801df276fdf84 OP_CHECKSIG", + "coinbase_signature_ascii": "\u0004L�\u0004\u001b\u0002\u0006\u0002", + "pool_slug": "unknown", + "orphans": [] + } ]`, }, codeSampleTestnet: { - esModule: ['2091187'], - commonJS: ['2091187'], - curl: ['2091187'], + esModule: [], + commonJS: [], + curl: [100000,100000], response: `[ - + { + "height": 100000, + "hash": "00000000009e2958c15ff9290d571bf9459e93b19765c6801ddeccadbb160a1e", + "timestamp": 1376123972, + "median_timestamp": 1677396660, + "previous_block_hash": "000000004956cc2edd1a8caa05eacfa3c69f4c490bfc9ace820257834115ab35", + "difficulty": 271.7576739288896, + "header": "0200000035ab154183570282ce9afc0b494c9fc6a3cfea05aa8c1add2ecc56490000000038ba3d78e4500a5a7570dbe61960398add4410d278b21cd9708e6d9743f374d544fc055227f1001c29c1ea3b", + "version": 2, + "bits": 469823783, + "nonce": 1005240617, + "size": 221, + "weight": 884, + "tx_count": 1, + "merkle_root": "d574f343976d8e70d91cb278d21044dd8a396019e6db70755a0a50e4783dba38", + "reward": 5000000000, + "total_fee_amt": 0, + "avg_fee_amt": 0, + "median_fee_amt": 0, + "fee_amt_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "avg_fee_rate": 0, + "median_fee_rate": 0, + "fee_rate_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "total_inputs": 0, + "total_input_amt": null, + "total_outputs": 1, + "total_output_amt": 0, + "segwit_total_txs": 0, + "segwit_total_size": 0, + "segwit_total_weight": 0, + "avg_tx_size": 0, + "utxoset_change": 1, + "utxoset_size": null, + "coinbase_raw": "03a08601000427f1001c046a510100522cfabe6d6d0000000000000000000068692066726f6d20706f6f6c7365727665726aac1eeeed88", + "coinbase_address": "mtkbaiLiUH3fvGJeSzuN3kUgmJzqinLejJ", + "coinbase_signature": "OP_DUP OP_HASH160 OP_PUSHBYTES_20 912e2b234f941f30b18afbb4fa46171214bf66c8 OP_EQUALVERIFY OP_CHECKSIG", + "coinbase_signature_ascii": "\u0003 �\u0001\u0000\u0004'ñ\u0000\u001c\u0004jQ\u0001\u0000R,ú¾mm\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000hi from poolserverj¬\u001eîí�", + "pool_slug": "unknown", + "orphans": [] + } ]` }, codeSampleSignet: { - esModule: ['53783'], - commonJS: ['53783'], - curl: ['53783'], + esModule: [], + commonJS: [], + curl: [100000,100000], response: `[ - + { + "height": 100000, + "hash": "0000008753108390007b3f5c26e5d924191567e147876b84489b0c0cf133a0bf", + "timestamp": 1658421183, + "median_timestamp": 1658418056, + "previous_block_hash": "000000b962a13c3dd3f81917bc8646a0c98224adcd5124026d4fdfcb76a76d30", + "difficulty": 0.002781447610743506, + "header": "00000020306da776cbdf4f6d022451cdad2482c9a04686bc1719f8d33d3ca162b90000001367fb15320ebb1932fd589f8f38866b692ca8a4ad6100a4bc732d212916d0efbf7fd9628567011e47662d00", + "version": 536870912, + "bits": 503408517, + "nonce": 2975303, + "size": 343, + "weight": 1264, + "tx_count": 1, + "merkle_root": "efd01629212d73bca40061ada4a82c696b86388f9f58fd3219bb0e3215fb6713", + "reward": 5000000000, + "total_fee_amt": 0, + "avg_fee_amt": 0, + "median_fee_amt": 0, + "fee_amt_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "avg_fee_rate": 0, + "median_fee_rate": 0, + "fee_rate_percentiles": { + "min": 0, + "perc_10": 0, + "perc_25": 0, + "perc_50": 0, + "perc_75": 0, + "perc_90": 0, + "max": 0 + }, + "total_inputs": 0, + "total_input_amt": null, + "total_outputs": 2, + "total_output_amt": 0, + "segwit_total_txs": 0, + "segwit_total_size": 0, + "segwit_total_weight": 0, + "avg_tx_size": 0, + "utxoset_change": 2, + "utxoset_size": null, + "coinbase_raw": "03a08601", + "coinbase_address": "tb1psfjl80vk0yp3agcq6ylueas29rau00mfq90mhejerpgccg33xhasd9gjyd", + "coinbase_signature": "OP_PUSHNUM_1 OP_PUSHBYTES_32 8265f3bd9679031ea300d13fccf60a28fbc7bf69015fbbe65918518c223135fb", + "coinbase_signature_ascii": "\u0003 �\u0001", + "pool_slug": "unknown", + "orphans": [] + } ]` }, codeSampleLiquid: emptyCodeSample, From 54f7e59978bd839baae9490ddd26a13a1f9cabf0 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 28 Feb 2023 04:15:45 -0500 Subject: [PATCH 078/102] Correct number of blocks returned for bulk-blocks --- frontend/src/app/docs/api-docs/api-docs-data.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/app/docs/api-docs/api-docs-data.ts b/frontend/src/app/docs/api-docs/api-docs-data.ts index d3d50fe79..62d031613 100644 --- a/frontend/src/app/docs/api-docs/api-docs-data.ts +++ b/frontend/src/app/docs/api-docs/api-docs-data.ts @@ -2922,12 +2922,11 @@ export const restApiDocsData = [ fragment: "get-blocks-bulk", title: "GET Blocks (Bulk)", description: { - default: "Returns details on the range of blocks between :minHeight and :maxHeight, inclusive, up to 100 blocks. If :maxHeight is not specified, :maxHeight defaults to the current tip." + default: "

Returns details on the range of blocks between :minHeight and :maxHeight, inclusive, up to 10 blocks. If :maxHeight is not specified, it defaults to the current tip.

To return data for more than 10 blocks, consider becoming an enterprise sponsor.

" }, urlString: "/v1/blocks-bulk/:minHeight[/:maxHeight]", showConditions: bitcoinNetworks, showJsExamples: showJsExamplesDefaultFalse, - specialAvailability: { enterprise: true }, codeExample: { default: { codeTemplate: { From 7e093d912b8422595eff2bbf8c54ee40f04d01d1 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 28 Feb 2023 04:39:32 -0500 Subject: [PATCH 079/102] Remove special availability note mechanism --- .../app/docs/api-docs/api-docs.component.html | 2 -- .../app/docs/api-docs/api-docs.component.scss | 22 ------------------- frontend/src/app/shared/shared.module.ts | 3 +-- 3 files changed, 1 insertion(+), 26 deletions(-) diff --git a/frontend/src/app/docs/api-docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html index 4687fe0b2..47332abc3 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.html +++ b/frontend/src/app/docs/api-docs/api-docs.component.html @@ -46,8 +46,6 @@
{{ item.title }} {{ item.category }}
-

This endpoint is available to enterprise sponsors.

-

This endpoint is only supported on official mempool.space instances.

Endpoint
diff --git a/frontend/src/app/docs/api-docs/api-docs.component.scss b/frontend/src/app/docs/api-docs/api-docs.component.scss index 231871db6..92e78bc55 100644 --- a/frontend/src/app/docs/api-docs/api-docs.component.scss +++ b/frontend/src/app/docs/api-docs/api-docs.component.scss @@ -284,28 +284,6 @@ h3 { margin-bottom: 0; } -.special-availability { - padding: 16px; - margin-bottom: 15px; - background-color: #1d1f31; -} - -.special-availability table tr td:first-child { - padding-right: 10px; -} - -.special-availability.enterprise fa-icon { - color: #ffc107; -} - -.special-availability.mempoolspace fa-icon { - color: #1bd8f4; -} - -.special-availability p { - margin: 0; -} - @media (max-width: 992px) { h3 { diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts index 46d831309..fd257db85 100644 --- a/frontend/src/app/shared/shared.module.ts +++ b/frontend/src/app/shared/shared.module.ts @@ -4,7 +4,7 @@ import { NgbCollapseModule, NgbTypeaheadModule } from '@ng-bootstrap/ng-bootstra import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome'; import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle, faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown, - faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft, faStar } from '@fortawesome/free-solid-svg-icons'; + faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl, faDownload, faQrcode, faArrowRightArrowLeft, faArrowsRotate, faCircleLeft } from '@fortawesome/free-solid-svg-icons'; import { InfiniteScrollModule } from 'ngx-infinite-scroll'; import { MasterPageComponent } from '../components/master-page/master-page.component'; import { PreviewTitleComponent } from '../components/master-page-preview/preview-title.component'; @@ -309,6 +309,5 @@ export class SharedModule { library.addIcons(faQrcode); library.addIcons(faArrowRightArrowLeft); library.addIcons(faExchangeAlt); - library.addIcons(faStar); } } From f09a2aab241da0c8018b614db44d880537645103 Mon Sep 17 00:00:00 2001 From: Mononaut Date: Tue, 28 Feb 2023 21:30:20 -0600 Subject: [PATCH 080/102] Reset scrolling blockchain cache when network changes --- frontend/src/app/services/cache.service.ts | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/services/cache.service.ts b/frontend/src/app/services/cache.service.ts index 15ef99859..5eefd6e0a 100644 --- a/frontend/src/app/services/cache.service.ts +++ b/frontend/src/app/services/cache.service.ts @@ -17,6 +17,7 @@ export class CacheService { txCache: { [txid: string]: Transaction } = {}; + network: string; blockCache: { [height: number]: BlockExtended } = {}; blockLoading: { [height: number]: boolean } = {}; copiesInBlockQueue: { [height: number]: number } = {}; @@ -33,6 +34,10 @@ export class CacheService { this.stateService.chainTip$.subscribe((height) => { this.tip = height; }); + this.stateService.networkChanged$.subscribe((network) => { + this.network = network; + this.resetBlockCache(); + }); } setTxCache(transactions) { @@ -68,15 +73,17 @@ export class CacheService { } catch (e) { console.log("failed to load blocks: ", e.message); } - for (let i = 0; i < chunkSize; i++) { - delete this.blockLoading[maxHeight - i]; - } if (result && result.length) { result.forEach(block => { - this.addBlockToCache(block); - this.loadedBlocks$.next(block); + if (this.blockLoading[block.height]) { + this.addBlockToCache(block); + this.loadedBlocks$.next(block); + } }); } + for (let i = 0; i < chunkSize; i++) { + delete this.blockLoading[maxHeight - i]; + } this.clearBlocks(); } else { this.bumpBlockPriority(height); @@ -104,6 +111,14 @@ export class CacheService { } } + // remove all blocks from the cache + resetBlockCache() { + this.blockCache = {}; + this.blockLoading = {}; + this.copiesInBlockQueue = {}; + this.blockPriorities = []; + } + getCachedBlock(height) { return this.blockCache[height]; } From af2e3cb42a33a873c24e54cbe6f89de7464f608f Mon Sep 17 00:00:00 2001 From: Mononaut Date: Tue, 28 Feb 2023 21:36:16 -0600 Subject: [PATCH 081/102] Center-align blockchain after resetting scroll --- frontend/src/app/components/start/start.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/components/start/start.component.ts b/frontend/src/app/components/start/start.component.ts index c7b8a83bc..0855cad05 100644 --- a/frontend/src/app/components/start/start.component.ts +++ b/frontend/src/app/components/start/start.component.ts @@ -267,6 +267,7 @@ export class StartComponent implements OnInit, OnDestroy { resetScroll(): void { this.scrollToBlock(this.chainTip); + this.blockchainContainer.nativeElement.scrollLeft = 0; } getPageIndexOf(height: number): number { From a67656389ea75f591b90f9164b717d7629038a66 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Wed, 1 Mar 2023 13:50:15 +0900 Subject: [PATCH 082/102] Fix chain divergence detection upon new block (use the new interface) --- backend/src/api/blocks.ts | 14 +++++++------- backend/src/repositories/BlocksRepository.ts | 11 +++++++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 75d1ec300..12eb3b693 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -570,18 +570,18 @@ class Blocks { if (Common.indexingEnabled()) { if (!fastForwarded) { const lastBlock = await blocksRepository.$getBlockByHeight(blockExtended.height - 1); - if (lastBlock !== null && blockExtended.previousblockhash !== lastBlock['hash']) { - logger.warn(`Chain divergence detected at block ${lastBlock['height']}, re-indexing most recent data`); + if (lastBlock !== null && blockExtended.previousblockhash !== lastBlock.id) { + logger.warn(`Chain divergence detected at block ${lastBlock.height}, re-indexing most recent data`); // We assume there won't be a reorg with more than 10 block depth - await BlocksRepository.$deleteBlocksFrom(lastBlock['height'] - 10); + await BlocksRepository.$deleteBlocksFrom(lastBlock.height - 10); await HashratesRepository.$deleteLastEntries(); - await BlocksSummariesRepository.$deleteBlocksFrom(lastBlock['height'] - 10); - await cpfpRepository.$deleteClustersFrom(lastBlock['height'] - 10); + await BlocksSummariesRepository.$deleteBlocksFrom(lastBlock.height - 10); + await cpfpRepository.$deleteClustersFrom(lastBlock.height - 10); for (let i = 10; i >= 0; --i) { - const newBlock = await this.$indexBlock(lastBlock['height'] - i); + const newBlock = await this.$indexBlock(lastBlock.height - i); await this.$getStrippedBlockTransactions(newBlock.id, true, true); if (config.MEMPOOL.CPFP_INDEXING) { - await this.$indexCPFP(newBlock.id, lastBlock['height'] - i); + await this.$indexCPFP(newBlock.id, lastBlock.height - i); } } await mining.$indexDifficultyAdjustments(); diff --git a/backend/src/repositories/BlocksRepository.ts b/backend/src/repositories/BlocksRepository.ts index 9cd31bbab..80df1ac92 100644 --- a/backend/src/repositories/BlocksRepository.ts +++ b/backend/src/repositories/BlocksRepository.ts @@ -525,8 +525,15 @@ class BlocksRepository { public async $validateChain(): Promise { try { const start = new Date().getTime(); - const [blocks]: any[] = await DB.query(`SELECT height, hash, previous_block_hash, - UNIX_TIMESTAMP(blockTimestamp) as timestamp FROM blocks ORDER BY height`); + const [blocks]: any[] = await DB.query(` + SELECT + height, + hash, + previous_block_hash, + UNIX_TIMESTAMP(blockTimestamp) AS timestamp + FROM blocks + ORDER BY height + `); let partialMsg = false; let idx = 1; From 87d678e268c7f5dfed8df4060d7c2048ea156116 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Wed, 1 Mar 2023 16:52:24 +0900 Subject: [PATCH 083/102] Run ln forensics last --- backend/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 6f259a2bd..0ef107b76 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -199,8 +199,8 @@ class Server { try { await fundingTxFetcher.$init(); await networkSyncService.$startService(); - await forensicsService.$startService(); await lightningStatsUpdater.$startService(); + await forensicsService.$startService(); } catch(e) { logger.err(`Nodejs lightning backend crashed. Restarting in 1 minute. Reason: ${(e instanceof Error ? e.message : e)}`); await Common.sleep$(1000 * 60); From d5342a4e9aaa944aa19ebf53b6fc1e0639527532 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Wed, 1 Mar 2023 17:26:53 +0900 Subject: [PATCH 084/102] Add frontend config flag to toggle historical price fetching --- docker/frontend/entrypoint.sh | 2 ++ frontend/mempool-frontend-config.sample.json | 3 ++- frontend/src/app/services/price.service.ts | 2 +- frontend/src/app/services/state.service.ts | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docker/frontend/entrypoint.sh b/docker/frontend/entrypoint.sh index 18cb782e9..45d852c45 100644 --- a/docker/frontend/entrypoint.sh +++ b/docker/frontend/entrypoint.sh @@ -35,6 +35,7 @@ __AUDIT__=${AUDIT:=false} __MAINNET_BLOCK_AUDIT_START_HEIGHT__=${MAINNET_BLOCK_AUDIT_START_HEIGHT:=0} __TESTNET_BLOCK_AUDIT_START_HEIGHT__=${TESTNET_BLOCK_AUDIT_START_HEIGHT:=0} __SIGNET_BLOCK_AUDIT_START_HEIGHT__=${SIGNET_BLOCK_AUDIT_START_HEIGHT:=0} +__HISTORICAL_PRICE__=${HISTORICAL_PRICE:=true} # Export as environment variables to be used by envsubst export __TESTNET_ENABLED__ @@ -60,6 +61,7 @@ export __AUDIT__ export __MAINNET_BLOCK_AUDIT_START_HEIGHT__ export __TESTNET_BLOCK_AUDIT_START_HEIGHT__ export __SIGNET_BLOCK_AUDIT_START_HEIGHT__ +export __HISTORICAL_PRICE__ folder=$(find /var/www/mempool -name "config.js" | xargs dirname) echo ${folder} diff --git a/frontend/mempool-frontend-config.sample.json b/frontend/mempool-frontend-config.sample.json index 9035315a4..084cbd0ef 100644 --- a/frontend/mempool-frontend-config.sample.json +++ b/frontend/mempool-frontend-config.sample.json @@ -21,5 +21,6 @@ "MAINNET_BLOCK_AUDIT_START_HEIGHT": 0, "TESTNET_BLOCK_AUDIT_START_HEIGHT": 0, "SIGNET_BLOCK_AUDIT_START_HEIGHT": 0, - "LIGHTNING": false + "LIGHTNING": false, + "HISTORICAL_PRICE": true } diff --git a/frontend/src/app/services/price.service.ts b/frontend/src/app/services/price.service.ts index e3ec93c8b..93c4ce449 100644 --- a/frontend/src/app/services/price.service.ts +++ b/frontend/src/app/services/price.service.ts @@ -70,7 +70,7 @@ export class PriceService { } getBlockPrice$(blockTimestamp: number, singlePrice = false): Observable { - if (this.stateService.env.BASE_MODULE !== 'mempool') { + if (this.stateService.env.BASE_MODULE !== 'mempool' || !this.stateService.env.HISTORICAL_PRICE) { return of(undefined); } diff --git a/frontend/src/app/services/state.service.ts b/frontend/src/app/services/state.service.ts index 33de7823d..c56a5e79e 100644 --- a/frontend/src/app/services/state.service.ts +++ b/frontend/src/app/services/state.service.ts @@ -43,6 +43,7 @@ export interface Env { MAINNET_BLOCK_AUDIT_START_HEIGHT: number; TESTNET_BLOCK_AUDIT_START_HEIGHT: number; SIGNET_BLOCK_AUDIT_START_HEIGHT: number; + HISTORICAL_PRICE: boolean; } const defaultEnv: Env = { @@ -72,6 +73,7 @@ const defaultEnv: Env = { 'MAINNET_BLOCK_AUDIT_START_HEIGHT': 0, 'TESTNET_BLOCK_AUDIT_START_HEIGHT': 0, 'SIGNET_BLOCK_AUDIT_START_HEIGHT': 0, + 'HISTORICAL_PRICE': true, }; @Injectable({ From 9c5a9f2eba71abab75086d41f64cacb6a87edfff Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Wed, 1 Mar 2023 17:33:37 +0900 Subject: [PATCH 085/102] Only run migration 57 if bitcoin --- backend/src/api/database-migration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index f4801deb6..d40637e74 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -501,7 +501,7 @@ class DatabaseMigration { await this.updateToSchemaVersion(56); } - if (databaseSchemaVersion < 57) { + if (databaseSchemaVersion < 57 && isBitcoin === true) { await this.$executeQuery(`ALTER TABLE nodes MODIFY updated_at datetime NULL`); await this.updateToSchemaVersion(57); } From 9043d23a03753d42359de28674495e8c11a8e431 Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Wed, 1 Mar 2023 19:11:03 +0900 Subject: [PATCH 086/102] Ignore negative USD prices --- backend/src/repositories/PricesRepository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/repositories/PricesRepository.ts b/backend/src/repositories/PricesRepository.ts index 83336eaff..6493735ee 100644 --- a/backend/src/repositories/PricesRepository.ts +++ b/backend/src/repositories/PricesRepository.ts @@ -40,7 +40,7 @@ export const MAX_PRICES = { class PricesRepository { public async $savePrices(time: number, prices: IConversionRates): Promise { - if (prices.USD === 0) { + if (prices.USD === -1) { // Some historical price entries have no USD prices, so we just ignore them to avoid future UX issues // As of today there are only 4 (on 2013-09-05, 2013-0909, 2013-09-12 and 2013-09-26) so that's fine return; From 3265b32a5688ba77f94b5cda995666ba27fc06e5 Mon Sep 17 00:00:00 2001 From: softsimon Date: Wed, 1 Mar 2023 19:14:54 +0900 Subject: [PATCH 087/102] Pull from transifex 1/3 --- frontend/src/locale/messages.fr.xlf | 688 +++++++++++++++++++--------- frontend/src/locale/messages.mk.xlf | 649 +++++++++++++++++--------- frontend/src/locale/messages.vi.xlf | 688 +++++++++++++++++++--------- 3 files changed, 1340 insertions(+), 685 deletions(-) diff --git a/frontend/src/locale/messages.fr.xlf b/frontend/src/locale/messages.fr.xlf index 61342d809..476dd8cfe 100644 --- a/frontend/src/locale/messages.fr.xlf +++ b/frontend/src/locale/messages.fr.xlf @@ -11,6 +11,7 @@ Slide of + Diapositive de node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1530,7 +1544,7 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 @@ -1567,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1583,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1666,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1888,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1901,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1914,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1923,7 +1937,7 @@ Erreur lors du chargement des données des actifs. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2047,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2063,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2075,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2088,15 +2102,15 @@ Indexage des blocs src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2121,6 +2135,7 @@ not available + pas disponible src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2140,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2166,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2184,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2200,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2218,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2270,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2298,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2312,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + État de l'audit src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2331,6 +2347,7 @@ Match + Correspond src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2339,6 +2356,7 @@ Removed + Supprimée src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2347,6 +2365,7 @@ Marginal fee rate + Taux de frais marginal src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2359,6 +2378,7 @@ Recently broadcasted + Récemment envoyée src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2424,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2454,15 +2474,15 @@ Taille src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2486,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2498,11 +2518,11 @@ Poids src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2510,11 +2530,23 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Taille par poids + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2530,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Frais médian @@ -2548,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2565,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2587,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2600,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2625,25 +2648,42 @@ Previous Block - - Block health + + Health + Santé src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown Inconnue src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2667,7 +2707,7 @@ L'envergure des frais src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2680,7 +2720,7 @@ Basé sur une transaction segwit standard de 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2704,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Subvention + frais: + + Subsidy + fees + Subvention + frais src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Attendu src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + bêta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Réel src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Bloc attendu src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Bloc réel src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2755,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2764,7 +2821,7 @@ racine de Merkle src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2773,7 +2830,7 @@ Difficulté src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2802,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2811,20 +2868,30 @@ Hex d'en-tête de bloc src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Audit + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Détails src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2846,11 +2913,11 @@ Une erreur est survenue lors du chargement. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2872,9 +2939,10 @@ Why is this block empty? + Pourquoi ce bloc est-il vide ? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2920,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Récompense @@ -2995,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3234,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3247,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3260,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3274,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3531,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3557,7 +3613,7 @@ Explorateur Lightning src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3565,21 +3621,12 @@ master-page.lightning - - beta - bêta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Documentation src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3659,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Émettre une transaction + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Chance des pools (1 semaine) @@ -3726,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3756,12 +3829,25 @@ mining.rank + + Avg Health + Santé moyenne + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Bloc vides src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3770,7 +3856,7 @@ Tous les mineurs src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3779,7 +3865,7 @@ Chance des pools src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3788,7 +3874,7 @@ Nombre de pool src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3797,7 +3883,7 @@ Pool de minage src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4024,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Émettre une transaction - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Transaction hex @@ -4051,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4083,6 +4151,7 @@ Avg Block Fees + Frais de bloc moyens src/app/components/reward-stats/reward-stats.component.html 17 @@ -4095,6 +4164,7 @@ Average fees per block in the past 144 blocks + Frais moyens par bloc au cours des 144 derniers blocs src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4103,6 +4173,7 @@ BTC/block + BTC/bloc src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4112,6 +4183,7 @@ Avg Tx Fee + Frais Tx Moy src/app/components/reward-stats/reward-stats.component.html 30 @@ -4172,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Hauteur de bloc Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Transaction Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Adresse Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Bloc de Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Adresses Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Noeuds Lightning + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Canaux Lightning + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Aller à &quot;&quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool par vBytes (sat/vByte) @@ -4429,6 +4573,7 @@ This transaction replaced: + Cette transaction a remplacé : src/app/components/transaction/transaction.component.html 10,12 @@ -4438,6 +4583,7 @@ Replaced + Remplacée src/app/components/transaction/transaction.component.html 36,39 @@ -4454,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4464,7 +4610,7 @@ Vu pour la première fois src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4498,7 +4644,7 @@ HAP src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4508,7 +4654,7 @@ Dans plusieurs heures (ou plus) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4518,11 +4664,11 @@ Descendant src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4532,7 +4678,7 @@ Ancêtre src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4542,11 +4688,11 @@ Flux src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4556,7 +4702,7 @@ Masquer le diagramme src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4565,7 +4711,7 @@ Montrer plus src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4582,7 +4728,7 @@ Montrer moins src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4595,7 +4741,7 @@ Afficher le diagramme src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4604,7 +4750,7 @@ Temps de verrouillage src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4613,7 +4759,7 @@ Transaction introuvable. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4622,7 +4768,7 @@ Veuillez patienter pendant que nous attendons qu'elle apparaisse dans le mempool src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4631,7 +4777,7 @@ Taux de frais effectif src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4777,17 +4923,19 @@ Show more inputs to reveal fee data + Afficher plus d'entrées pour révéler les données de frais src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + restantes src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4935,6 +5083,7 @@ This transaction does not use Taproot + Cette transaction n'utilise pas Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -5037,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Frais minimums src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5061,7 +5201,7 @@ Purgées src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5071,7 +5211,7 @@ Mémoire utilisée src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5081,16 +5221,25 @@ L-BTC en circulation src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space fournit simplement des données sur le réseau Bitcoin. Il ne peut pas vous aider à récupérer des fonds, à confirmer vos transactions plus rapidement, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Service d'API REST src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5099,11 +5248,11 @@ Point de terminaison src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5112,11 +5261,11 @@ Description src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5124,7 +5273,7 @@ Pousser par défaut : action: 'want', data: ['blocks', ...] pour exprimer ce que vous voulez pousser. Disponible: blocks, mempool-blocks, live-2h-chart, et stats.Pousse les transactions liées à l'adresse : 'track-address': '3PbJ...bF9B' pour recevoir toutes les nouvelles transactions contenant cette adresse en entrée ou en sortie. Renvoie un tableau de transactions. address-transactions pour les nouvelles transactions mempool, et block-transactions pour les nouvelles transactions confirmées en bloc. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5297,12 +5446,13 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Solde de départ src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5312,6 +5462,7 @@ Closing balance + Solde de clôture src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5341,7 +5492,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5358,7 +5509,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5379,7 +5530,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5409,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5417,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5525,12 +5676,13 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Fermée par src/app/lightning/channel/channel.component.html 52,54 @@ -5563,6 +5715,30 @@ 37 + + Mutually closed + Mutuellement fermé + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Fermeture Forcée + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Fermeture forcée avec pénalité + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open Ouvert @@ -5577,7 +5753,7 @@ Aucun canal à afficher src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5586,7 +5762,7 @@ Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5623,7 +5799,7 @@ Statut src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5632,7 +5808,7 @@ ID du canal src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5641,11 +5817,11 @@ sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5689,6 +5865,24 @@ shared.sats + + avg + moy. + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + med. + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity Capacité moy @@ -5817,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5891,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6052,12 +6246,37 @@ Fee distribution + Répartition des frais src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Frais de sortie + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Frais entrants + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week Variation sur une semaine @@ -6067,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6147,6 +6366,7 @@ Avg channel distance + Distance moyenne des canaux src/app/lightning/node/node.component.html 56,57 @@ -6186,6 +6406,7 @@ Liquidity ad + Annonce de liquidité src/app/lightning/node/node.component.html 138,141 @@ -6194,6 +6415,7 @@ Lease fee rate + Taux de frais de location src/app/lightning/node/node.component.html 144,147 @@ -6203,6 +6425,7 @@ Lease base fee + Frais de base de location src/app/lightning/node/node.component.html 152,154 @@ -6211,6 +6434,7 @@ Funding weight + Poids du financement src/app/lightning/node/node.component.html 158,159 @@ -6219,6 +6443,7 @@ Channel fee rate + Taux de frais de canal src/app/lightning/node/node.component.html 168,171 @@ -6228,6 +6453,7 @@ Channel base fee + Frais de base du canal src/app/lightning/node/node.component.html 176,178 @@ -6236,6 +6462,7 @@ Compact lease + Location compacte src/app/lightning/node/node.component.html 188,190 @@ -6244,6 +6471,7 @@ TLV extension records + Enregistrements d'extension TLV src/app/lightning/node/node.component.html 199,202 @@ -6310,7 +6538,7 @@ Aucune donnée de géolocalisation disponible src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6324,6 +6552,7 @@ Indexing in progress + Indexation en cours src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6591,6 +6820,7 @@ Active nodes + Nœuds actifs src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 diff --git a/frontend/src/locale/messages.mk.xlf b/frontend/src/locale/messages.mk.xlf index 61ffc6a69..8747463ee 100644 --- a/frontend/src/locale/messages.mk.xlf +++ b/frontend/src/locale/messages.mk.xlf @@ -11,6 +11,7 @@ Slide of + Слајд of node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -355,11 +357,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -380,11 +382,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -422,7 +424,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -447,7 +449,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -590,11 +592,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -735,6 +737,7 @@ View more » + Види повеќе » src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 92,97 @@ -772,14 +775,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -790,14 +801,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -985,7 +1004,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1033,7 +1052,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1049,11 +1068,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1103,7 +1122,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1125,7 +1144,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1137,10 +1156,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1153,11 +1168,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1185,11 +1200,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1206,11 +1221,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1228,7 +1243,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1248,7 +1263,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1264,7 +1279,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1457,6 +1472,7 @@ Community Integrations + Интеграции од заедницата src/app/components/about/about.component.html 191,193 @@ -1474,6 +1490,7 @@ Project Translators + Преведувачи src/app/components/about/about.component.html 301,303 @@ -1524,11 +1541,12 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 Multisig of + Multisig од src/app/components/address-labels/address-labels.component.ts 107 @@ -1560,7 +1578,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1576,7 +1594,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1602,6 +1620,7 @@ of transaction + од трансакција src/app/components/address/address.component.html 59 @@ -1610,6 +1629,7 @@ of transactions + од трансакции src/app/components/address/address.component.html 60 @@ -1656,7 +1676,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1784,6 +1804,7 @@ Group of assets + Група на асети src/app/components/assets/asset-group/asset-group.component.html 8,9 @@ -1816,6 +1837,7 @@ Featured + Промовиран src/app/components/assets/assets-nav/assets-nav.component.html 9 @@ -1823,6 +1845,7 @@ All + Сите src/app/components/assets/assets-nav/assets-nav.component.html 13 @@ -1875,7 +1898,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1888,7 +1911,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1901,7 +1924,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1910,7 +1933,7 @@ Грешка во вчитувањето на податоците за средствата. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2022,6 +2045,7 @@ At block: + Во блок: src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 188 @@ -2032,11 +2056,12 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 Around block: + Околу блок: src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts 190 @@ -2047,7 +2072,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2058,7 +2083,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2070,15 +2095,15 @@ Indexing blocks src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2103,6 +2128,7 @@ not available + не е достапно src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2122,7 +2148,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2148,11 +2174,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2166,11 +2192,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2182,7 +2208,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2200,19 +2226,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2252,27 +2278,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2280,7 +2306,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2294,11 +2320,11 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize @@ -2321,6 +2347,7 @@ Removed + Одстрането src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2349,6 +2376,7 @@ Added + Додадено src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 42 @@ -2401,7 +2429,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2430,15 +2458,15 @@ Големина src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2462,7 +2490,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2474,11 +2502,11 @@ Тежина src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2486,11 +2514,22 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2505,14 +2544,6 @@ shared.block-title - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Средна провизија @@ -2522,7 +2553,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2539,11 +2570,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2561,7 +2592,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2574,7 +2605,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2599,24 +2630,40 @@ Previous Block - - Block health + + Health src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2640,7 +2687,7 @@ Оспег на провизии src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2653,7 +2700,7 @@ Базирано на просечна segwit трансакција од 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2677,49 +2724,61 @@ Transaction fee tooltip - - Subsidy + fees: - Награда + провизија: + + Subsidy + fees src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + бета + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2728,7 +2787,7 @@ Битови src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2737,7 +2796,7 @@ Merkle root src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2746,7 +2805,7 @@ Сложеност src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2775,7 +2834,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2784,20 +2843,29 @@ Хекс од заглавието на блокот src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Детали src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2818,11 +2886,11 @@ Error loading data. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2846,7 +2914,7 @@ Why is this block empty? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2891,18 +2959,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward @@ -2964,7 +3020,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3190,7 +3246,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3203,7 +3259,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3216,7 +3272,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3230,7 +3286,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3470,7 +3526,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3494,7 +3550,7 @@ Lightning Explorer src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3502,20 +3558,12 @@ master-page.lightning - - beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Документација src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3592,6 +3640,32 @@ dashboard.adjustments + + Broadcast Transaction + Емитирај ја Трансакцијата + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) @@ -3652,7 +3726,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3680,11 +3754,23 @@ mining.rank + + Avg Health + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3692,7 +3778,7 @@ All miners src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3700,7 +3786,7 @@ Pools Luck (1w) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3708,7 +3794,7 @@ Pools Count (1w) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3716,7 +3802,7 @@ Mining Pools src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -3930,24 +4016,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Емитирај ја Трансакцијата - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex @@ -3956,7 +4024,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4071,6 +4139,70 @@ search-form.search-title + + Bitcoin Block Height + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool прикажан по vBytes (sat/vByte) @@ -4353,7 +4485,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4363,7 +4495,7 @@ Пратена src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4397,7 +4529,7 @@ Потврдена src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4407,7 +4539,7 @@ За неколку часа (или повеќе) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4417,11 +4549,11 @@ Наследник src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4431,7 +4563,7 @@ Претходник src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4440,11 +4572,11 @@ Flow src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4453,7 +4585,7 @@ Hide diagram src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4461,7 +4593,7 @@ Show more src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4477,7 +4609,7 @@ Show less src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4489,7 +4621,7 @@ Show diagram src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4498,7 +4630,7 @@ Locktime src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4507,7 +4639,7 @@ Трансакцијата не е пронајдена src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4516,7 +4648,7 @@ Се чека да се појави во mempool-от... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4525,7 +4657,7 @@ Ефективна профизија src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4672,7 +4804,7 @@ Show more inputs to reveal fee data src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info @@ -4680,7 +4812,7 @@ remaining src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4918,21 +5050,12 @@ dashboard.latest-transactions - - USD - во USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Минимум src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -4942,7 +5065,7 @@ Отфрлање src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -4952,7 +5075,7 @@ Искористена меморија src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -4962,15 +5085,23 @@ L-BTC во циркулација src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -4979,11 +5110,11 @@ Endpoint src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -4992,11 +5123,11 @@ Опис src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5004,7 +5135,7 @@ Објавување: action: 'want', data: ['blocks', ...] за да специфираш што да биде објавено. Достапни полиња: blocks, mempool-blocks, live-2h-chart, и stats.Објави трансакции поврзани со адресса: 'track-address': '3PbJ...bF9B' за да ги добиеш сите нови трансакции што ја содржат таа адреса како влез или излез. Враќа низа од транссакции. address-transactions за нови трансакции во mempool-от, и block-transactions за поврдени трансакции во најновиот блок. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5166,7 +5297,7 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels @@ -5208,7 +5339,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5224,7 +5355,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5244,7 +5375,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5272,7 +5403,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5280,7 +5411,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5384,7 +5515,7 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date @@ -5419,6 +5550,27 @@ 37 + + Mutually closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open @@ -5431,7 +5583,7 @@ No channels to display src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5439,7 +5591,7 @@ Alias src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5475,7 +5627,7 @@ Status src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5483,7 +5635,7 @@ Channel ID src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5491,11 +5643,11 @@ sats src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5539,6 +5691,22 @@ shared.sats + + avg + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity @@ -5655,11 +5823,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5727,11 +5895,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -5887,6 +6055,28 @@ lightning.node-fee-distribution + + Outgoing Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week @@ -5895,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6123,7 +6313,7 @@ No geolocation data available src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6285,6 +6475,7 @@ Tor Capacity + Капацитет на Tor src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html 20,22 @@ -6379,6 +6570,7 @@ Active nodes + Активни нодови src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 @@ -6418,6 +6610,7 @@ Oldest nodes + Најстари нодови src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html 36 @@ -6426,6 +6619,7 @@ Top lightning nodes + Топ lightning нодови src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts 22 @@ -6433,6 +6627,7 @@ Indexing in progress + Индексирањето е во прогрес src/app/lightning/statistics-chart/lightning-statistics-chart.component.html 52,55 diff --git a/frontend/src/locale/messages.vi.xlf b/frontend/src/locale/messages.vi.xlf index 4af52e030..41e5e9281 100644 --- a/frontend/src/locale/messages.vi.xlf +++ b/frontend/src/locale/messages.vi.xlf @@ -11,6 +11,7 @@ Slide of + Slide of node_modules/src/carousel/carousel.ts 175,181 @@ -147,6 +148,7 @@ + node_modules/src/progressbar/progressbar.ts 30,33 @@ -357,11 +359,11 @@ src/app/components/block/block.component.html - 290,291 + 310,311 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 26,27 + 46,47 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -382,11 +384,11 @@ src/app/components/block/block.component.html - 291,292 + 311,312 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 27,28 + 47,48 src/app/components/mempool-blocks/mempool-blocks.component.html @@ -424,7 +426,7 @@ src/app/components/block/block.component.html - 40,41 + 38,39 block.hash @@ -449,7 +451,7 @@ src/app/components/block/block.component.html - 44,46 + 42,44 src/app/components/blocks-list/blocks-list.component.html @@ -592,11 +594,11 @@ src/app/components/master-page/master-page.component.html - 49,51 + 48,50 src/app/components/pool-ranking/pool-ranking.component.html - 94,96 + 94,95 @@ -775,14 +777,22 @@ src/app/components/about/about.component.html 385,389 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 88 + src/app/dashboard/dashboard.component.html - 150,152 + 157,159 src/app/docs/docs/docs.component.html 51 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 97 + Terms of Service shared.terms-of-service @@ -793,14 +803,22 @@ src/app/bisq/bisq-main-dashboard/bisq-main-dashboard.component.html 113,120 + + src/app/components/mining-dashboard/mining-dashboard.component.html + 90 + src/app/dashboard/dashboard.component.html - 152,154 + 159,161 src/app/docs/docs/docs.component.html 53 + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 99 + Privacy Policy shared.privacy-policy @@ -988,7 +1006,7 @@ src/app/dashboard/dashboard.component.html - 124,125 + 124,126 @@ -1036,7 +1054,7 @@ src/app/components/transaction/transaction.component.html - 158,160 + 152,154 src/app/components/transactions-list/transactions-list.component.html @@ -1052,11 +1070,11 @@ src/app/components/block/block.component.html - 246,247 + 252,253 src/app/components/transaction/transaction.component.html - 288,290 + 282,284 transaction.version @@ -1106,7 +1124,7 @@ src/app/components/transactions-list/transactions-list.component.html - 294,295 + 296,297 Transaction singular confirmation count shared.confirmation-count.singular @@ -1128,7 +1146,7 @@ src/app/components/transactions-list/transactions-list.component.html - 295,296 + 297,298 Transaction plural confirmation count shared.confirmation-count.plural @@ -1140,10 +1158,6 @@ src/app/bisq/bisq-transaction/bisq-transaction.component.html 43,45 - - src/app/components/transaction/transaction.component.html - 65,67 - Transaction included in block transaction.included-in-block @@ -1156,11 +1170,11 @@ src/app/components/transaction/transaction.component.html - 77,80 + 71,74 src/app/components/transaction/transaction.component.html - 135,138 + 129,132 Transaction features transaction.features @@ -1188,11 +1202,11 @@ src/app/components/transaction/transaction.component.html - 262,267 + 256,261 src/app/components/transaction/transaction.component.html - 406,412 + 400,406 transaction.details @@ -1209,11 +1223,11 @@ src/app/components/transaction/transaction.component.html - 249,253 + 243,247 src/app/components/transaction/transaction.component.html - 377,383 + 371,377 Transaction inputs and outputs transaction.inputs-and-outputs @@ -1231,7 +1245,7 @@ src/app/components/transaction/transaction.component.ts - 241,240 + 244,243 @@ -1251,7 +1265,7 @@ src/app/components/transaction/transaction.component.html - 159,160 + 153,154 src/app/dashboard/dashboard.component.html @@ -1267,7 +1281,7 @@ src/app/components/transaction/transaction.component.html - 72,73 + 66,67 Transaction Confirmed state transaction.confirmed @@ -1530,7 +1544,7 @@ src/app/components/master-page/master-page.component.html - 58,61 + 57,60 @@ -1567,7 +1581,7 @@ src/app/components/amount/amount.component.html - 6,9 + 18,21 src/app/components/asset-circulation/asset-circulation.component.html @@ -1583,7 +1597,7 @@ src/app/components/transactions-list/transactions-list.component.html - 302,304 + 304,306 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -1666,7 +1680,7 @@ src/app/components/assets/assets.component.html - 29,31 + 31,33 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -1888,7 +1902,7 @@ src/app/components/assets/assets.component.html - 30,31 + 32,33 Asset ticker header @@ -1901,7 +1915,7 @@ src/app/components/assets/assets.component.html - 31,34 + 33,36 Asset Issuer Domain header @@ -1914,7 +1928,7 @@ src/app/components/assets/assets.component.html - 32,36 + 34,38 Asset ID header @@ -1923,7 +1937,7 @@ Lỗi khi tải dữ liệu tài sản. src/app/components/assets/assets.component.html - 48,53 + 50,55 Asset data load error @@ -2047,7 +2061,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 161 + 165 @@ -2063,7 +2077,7 @@ src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 163 + 167 @@ -2075,7 +2089,7 @@ src/app/components/block-fees-graph/block-fees-graph.component.ts - 62 + 67 src/app/components/graphs/graphs.component.html @@ -2088,15 +2102,15 @@ Lập chỉ mục khối src/app/components/block-fees-graph/block-fees-graph.component.ts - 110,105 + 116,111 src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 108,103 + 113,108 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 115,110 + 116,111 src/app/components/hashrate-chart/hashrate-chart.component.ts @@ -2121,6 +2135,7 @@ not available + không có sẵn src/app/components/block-overview-graph/block-overview-graph.component.html 5 @@ -2140,7 +2155,7 @@ src/app/components/transaction/transaction.component.html - 476 + 472 src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html @@ -2166,11 +2181,11 @@ src/app/components/transaction/transaction.component.html - 476,477 + 472 src/app/components/transactions-list/transactions-list.component.html - 286,287 + 288 sat shared.sat @@ -2184,11 +2199,11 @@ src/app/components/transaction/transaction.component.html - 161,165 + 155,159 src/app/components/transaction/transaction.component.html - 479,481 + 475,477 src/app/lightning/channel/channel-box/channel-box.component.html @@ -2200,7 +2215,7 @@ src/app/lightning/channels-list/channels-list.component.html - 38,39 + 41,42 Transaction fee rate transaction.fee-rate @@ -2218,19 +2233,19 @@ src/app/components/block/block.component.html - 125,128 + 124,127 src/app/components/block/block.component.html - 129 + 128,130 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 12,14 + 19,22 src/app/components/blockchain-blocks/blockchain-blocks.component.html - 15,17 + 30,33 src/app/components/fees-box/fees-box.component.html @@ -2270,27 +2285,27 @@ src/app/components/transaction/transaction.component.html - 173,174 + 167,168 src/app/components/transaction/transaction.component.html - 184,185 + 178,179 src/app/components/transaction/transaction.component.html - 195,196 + 189,190 src/app/components/transaction/transaction.component.html - 481,484 + 477,480 src/app/components/transaction/transaction.component.html - 492,494 + 488,490 src/app/components/transactions-list/transactions-list.component.html - 286 + 286,287 src/app/dashboard/dashboard.component.html @@ -2298,7 +2313,7 @@ src/app/dashboard/dashboard.component.html - 204,208 + 213,217 sat/vB shared.sat-vbyte @@ -2312,17 +2327,18 @@ src/app/components/transaction/transaction.component.html - 160,162 + 154,156 src/app/components/transaction/transaction.component.html - 274,277 + 268,271 Transaction Virtual Size transaction.vsize Audit status + Trạng thái kiểm tra src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 36 @@ -2331,6 +2347,7 @@ Match + Khớp src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 38 @@ -2339,6 +2356,7 @@ Removed + Đã xoá src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 39 @@ -2347,6 +2365,7 @@ Marginal fee rate + Tỷ lệ phí cận biên src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 40 @@ -2359,6 +2378,7 @@ Recently broadcasted + Truyền phát gần đây src/app/components/block-overview-tooltip/block-overview-tooltip.component.html 41 @@ -2424,7 +2444,7 @@ src/app/components/block-rewards-graph/block-rewards-graph.component.ts - 60 + 65 src/app/components/graphs/graphs.component.html @@ -2454,15 +2474,15 @@ Kích thước src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 180,179 + 184,183 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 226,224 + 239,237 src/app/components/block/block.component.html - 50,52 + 48,50 src/app/components/blocks-list/blocks-list.component.html @@ -2486,7 +2506,7 @@ src/app/components/transaction/transaction.component.html - 270,272 + 264,266 src/app/dashboard/dashboard.component.html @@ -2498,11 +2518,11 @@ Khối lượng src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 188,187 + 192,191 src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts - 257,254 + 270,267 src/app/components/block/block-preview.component.html @@ -2510,11 +2530,23 @@ src/app/components/block/block.component.html - 54,56 + 52,54 src/app/components/transaction/transaction.component.html - 278,280 + 272,274 + + + + Size per weight + Kích thước mỗi trọng lượng + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 200,199 + + + src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts + 282,279 @@ -2530,15 +2562,6 @@ shared.block-title - - - - - src/app/components/block/block-preview.component.html - 11,12 - - shared.block-title - Median fee Phí trung bình @@ -2548,7 +2571,7 @@ src/app/components/block/block.component.html - 128,129 + 127,128 src/app/components/mempool-block/mempool-block.component.html @@ -2565,11 +2588,11 @@ src/app/components/block/block.component.html - 133,135 + 138,140 src/app/components/block/block.component.html - 159,162 + 164,167 src/app/components/mempool-block/mempool-block.component.html @@ -2587,7 +2610,7 @@ src/app/components/block/block.component.html - 168,170 + 173,175 block.miner @@ -2600,7 +2623,7 @@ src/app/components/block/block.component.ts - 227 + 242 @@ -2625,25 +2648,42 @@ Previous Block - - Block health + + Health + Sức khỏe src/app/components/block/block.component.html - 58,61 + 56 - block.health + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + + src/app/components/blocks-list/blocks-list.component.html + 18,19 + + latest-blocks.health Unknown không xác định src/app/components/block/block.component.html - 69,72 + 67,70 src/app/components/blocks-list/blocks-list.component.html 60,63 + + src/app/components/pool-ranking/pool-ranking.component.html + 121,124 + + + src/app/lightning/channel/closing-type/closing-type.component.ts + 32 + src/app/lightning/node/node.component.html 52,55 @@ -2667,7 +2707,7 @@ Khoảng phí src/app/components/block/block.component.html - 124,125 + 123,124 src/app/components/mempool-block/mempool-block.component.html @@ -2680,7 +2720,7 @@ Dựa trên giao dịch segwit gốc trung bình là 140 vBytes src/app/components/block/block.component.html - 129,131 + 131,136 src/app/components/fees-box/fees-box.component.html @@ -2704,49 +2744,66 @@ Transaction fee tooltip - - Subsidy + fees: - Trợ cấp + phí: + + Subsidy + fees + Trợ cấp + phí src/app/components/block/block.component.html - 148,151 + 153,156 src/app/components/block/block.component.html - 163,167 + 168,172 Total subsidy and fees in a block block.subsidy-and-fees - - Projected + + Expected + Dự kiến src/app/components/block/block.component.html - 210,212 + 216 - block.projected + block.expected + + + beta + bản beta + + src/app/components/block/block.component.html + 216,217 + + + src/app/components/block/block.component.html + 222,224 + + beta Actual + Thực tế src/app/components/block/block.component.html - 212,216 + 218,222 block.actual - - Projected Block + + Expected Block + Khối dự kiến src/app/components/block/block.component.html - 216,218 + 222 - block.projected-block + block.expected-block Actual Block + Khối thực tế src/app/components/block/block.component.html - 225,227 + 231 block.actual-block @@ -2755,7 +2812,7 @@ Bits src/app/components/block/block.component.html - 250,252 + 256,258 block.bits @@ -2764,7 +2821,7 @@ Merkle root src/app/components/block/block.component.html - 254,256 + 260,262 block.merkle-root @@ -2773,7 +2830,7 @@ Độ khó src/app/components/block/block.component.html - 265,268 + 271,274 src/app/components/difficulty-adjustments-table/difficulty-adjustments-table.component.html @@ -2802,7 +2859,7 @@ Nonce src/app/components/block/block.component.html - 269,271 + 275,277 block.nonce @@ -2811,20 +2868,30 @@ Khối tiêu đề Hex src/app/components/block/block.component.html - 273,274 + 279,280 block.header + + Audit + Kiểm tra + + src/app/components/block/block.component.html + 297,301 + + Toggle Audit + block.toggle-audit + Details Chi tiết src/app/components/block/block.component.html - 284,288 + 304,308 src/app/components/transaction/transaction.component.html - 254,259 + 248,253 src/app/lightning/channel/channel.component.html @@ -2846,11 +2913,11 @@ Lỗi trong lúc tải dữ liệu. src/app/components/block/block.component.html - 303,305 + 323,325 src/app/components/block/block.component.html - 339,343 + 362,366 src/app/lightning/channel/channel-preview.component.html @@ -2872,9 +2939,10 @@ Why is this block empty? + Tại sao khối này trống? src/app/components/block/block.component.html - 361,367 + 384,390 block.empty-block-explanation @@ -2920,18 +2988,6 @@ latest-blocks.mined - - Health - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - - src/app/components/blocks-list/blocks-list.component.html - 18,19 - - latest-blocks.health - Reward Phần thưởng @@ -2995,7 +3051,7 @@ src/app/dashboard/dashboard.component.html - 210,214 + 219,223 dashboard.txs @@ -3234,7 +3290,7 @@ src/app/dashboard/dashboard.component.html - 237,238 + 246,247 dashboard.incoming-transactions @@ -3247,7 +3303,7 @@ src/app/dashboard/dashboard.component.html - 240,243 + 249,252 dashboard.backend-is-synchronizing @@ -3260,7 +3316,7 @@ src/app/dashboard/dashboard.component.html - 245,250 + 254,259 vB/s shared.vbytes-per-second @@ -3274,7 +3330,7 @@ src/app/dashboard/dashboard.component.html - 208,209 + 217,218 Unconfirmed count dashboard.unconfirmed @@ -3531,7 +3587,7 @@ src/app/components/master-page/master-page.component.html - 52,54 + 51,53 src/app/components/statistics/statistics.component.ts @@ -3557,7 +3613,7 @@ Trình duyệt Lightning src/app/components/master-page/master-page.component.html - 44,45 + 44,47 src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts @@ -3565,21 +3621,12 @@ master-page.lightning - - beta - bản beta - - src/app/components/master-page/master-page.component.html - 45,48 - - beta - Documentation Tài liệu src/app/components/master-page/master-page.component.html - 55,57 + 54,56 src/app/docs/docs/docs.component.html @@ -3659,6 +3706,32 @@ dashboard.adjustments + + Broadcast Transaction + Truyền tải Giao dịch + + src/app/components/mining-dashboard/mining-dashboard.component.html + 92 + + + src/app/components/push-transaction/push-transaction.component.html + 2 + + + src/app/components/push-transaction/push-transaction.component.html + 8 + + + src/app/dashboard/dashboard.component.html + 161,169 + + + src/app/lightning/lightning-dashboard/lightning-dashboard.component.html + 102 + + Broadcast Transaction + shared.broadcast-transaction + Pools luck (1 week) Pools luck (1 tuần) @@ -3726,7 +3799,7 @@ src/app/components/pool-ranking/pool-ranking.component.html - 136,138 + 152,154 master-page.blocks @@ -3756,12 +3829,25 @@ mining.rank + + Avg Health + Sức khỏe trung bình + + src/app/components/pool-ranking/pool-ranking.component.html + 96,97 + + + src/app/components/pool-ranking/pool-ranking.component.html + 96,98 + + latest-blocks.avg_health + Empty blocks Các khối trống src/app/components/pool-ranking/pool-ranking.component.html - 95,98 + 97,100 mining.empty-blocks @@ -3770,7 +3856,7 @@ Tất cả thợ đào src/app/components/pool-ranking/pool-ranking.component.html - 113,114 + 129,130 mining.all-miners @@ -3779,7 +3865,7 @@ Pool Luck (1 tuần) src/app/components/pool-ranking/pool-ranking.component.html - 130,132 + 146,148 mining.miners-luck @@ -3788,7 +3874,7 @@ Số lượng Pool (1 tuần) src/app/components/pool-ranking/pool-ranking.component.html - 142,144 + 158,160 mining.miners-count @@ -3797,7 +3883,7 @@ Pool đào src/app/components/pool-ranking/pool-ranking.component.ts - 57 + 58 @@ -4024,24 +4110,6 @@ latest-blocks.coinbasetag - - Broadcast Transaction - Truyền tải Giao dịch - - src/app/components/push-transaction/push-transaction.component.html - 2 - - - src/app/components/push-transaction/push-transaction.component.html - 8 - - - src/app/dashboard/dashboard.component.html - 154,161 - - Broadcast Transaction - shared.broadcast-transaction - Transaction hex Hex giao dịch @@ -4051,7 +4119,7 @@ src/app/components/transaction/transaction.component.html - 296,297 + 290,291 transaction.hex @@ -4083,6 +4151,7 @@ Avg Block Fees + Phí khối trung bình src/app/components/reward-stats/reward-stats.component.html 17 @@ -4095,6 +4164,7 @@ Average fees per block in the past 144 blocks + Phí trung bình cho mỗi khối trong 144 khối vừa qua src/app/components/reward-stats/reward-stats.component.html 18,20 @@ -4103,6 +4173,7 @@ BTC/block + BTC/khối src/app/components/reward-stats/reward-stats.component.html 21,24 @@ -4112,6 +4183,7 @@ Avg Tx Fee + Phí giao dịch trung bình src/app/components/reward-stats/reward-stats.component.html 30 @@ -4172,6 +4244,78 @@ search-form.search-title + + Bitcoin Block Height + Chiều cao khối Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 3 + + search.bitcoin-block-height + + + Bitcoin Transaction + Giao dịch Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 9 + + search.bitcoin-transaction + + + Bitcoin Address + Địa chỉ Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 15 + + search.bitcoin-address + + + Bitcoin Block + Khối Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 21 + + search.bitcoin-block + + + Bitcoin Addresses + Địa chỉ Bitcoin + + src/app/components/search-form/search-results/search-results.component.html + 27 + + search.bitcoin-addresses + + + Lightning Nodes + Nút Lightning + + src/app/components/search-form/search-results/search-results.component.html + 35 + + search.lightning-nodes + + + Lightning Channels + Kênh Lightning + + src/app/components/search-form/search-results/search-results.component.html + 43 + + search.lightning-channels + + + Go to "" + Tới &quot; &quot; + + src/app/components/search-form/search-results/search-results.component.html + 52 + + search.go-to + Mempool by vBytes (sat/vByte) Mempool theo vBytes (sat / vByte) @@ -4429,6 +4573,7 @@ This transaction replaced: + Giao dịch này đã thay thế: src/app/components/transaction/transaction.component.html 10,12 @@ -4438,6 +4583,7 @@ Replaced + Đã thay thế src/app/components/transaction/transaction.component.html 36,39 @@ -4454,7 +4600,7 @@ src/app/components/transactions-list/transactions-list.component.html - 298,301 + 300,303 Transaction unconfirmed state transaction.unconfirmed @@ -4464,7 +4610,7 @@ Lần đầu thấy src/app/components/transaction/transaction.component.html - 108,109 + 102,103 src/app/lightning/node/node.component.html @@ -4498,7 +4644,7 @@ Thời gian dự kiến src/app/components/transaction/transaction.component.html - 115,116 + 109,110 Transaction ETA transaction.eta @@ -4508,7 +4654,7 @@ Trong vài giờ (hoặc hơn) src/app/components/transaction/transaction.component.html - 121,124 + 115,118 Transaction ETA in several hours or more transaction.eta.in-several-hours @@ -4518,11 +4664,11 @@ Descendant src/app/components/transaction/transaction.component.html - 168,170 + 162,164 src/app/components/transaction/transaction.component.html - 179,181 + 173,175 Descendant transaction.descendant @@ -4532,7 +4678,7 @@ Ancestor src/app/components/transaction/transaction.component.html - 190,192 + 184,186 Transaction Ancestor transaction.ancestor @@ -4542,11 +4688,11 @@ lưu lượng src/app/components/transaction/transaction.component.html - 208,211 + 202,205 src/app/components/transaction/transaction.component.html - 346,350 + 340,344 Transaction flow transaction.flow @@ -4556,7 +4702,7 @@ Ẩn sơ đồ src/app/components/transaction/transaction.component.html - 211,216 + 205,210 hide-diagram @@ -4565,7 +4711,7 @@ Hiển thị nhiều hơn src/app/components/transaction/transaction.component.html - 231,233 + 225,227 src/app/components/transactions-list/transactions-list.component.html @@ -4582,7 +4728,7 @@ Hiển thị ít hơn src/app/components/transaction/transaction.component.html - 233,239 + 227,233 src/app/components/transactions-list/transactions-list.component.html @@ -4595,7 +4741,7 @@ Hiển thị sơ đồ src/app/components/transaction/transaction.component.html - 253,254 + 247,248 show-diagram @@ -4604,7 +4750,7 @@ Thời gian khóa src/app/components/transaction/transaction.component.html - 292,294 + 286,288 transaction.locktime @@ -4613,7 +4759,7 @@ Không tìm thấy giao dịch. src/app/components/transaction/transaction.component.html - 455,456 + 449,450 transaction.error.transaction-not-found @@ -4622,7 +4768,7 @@ Đang đợi nó xuất hiện trong mempool ... src/app/components/transaction/transaction.component.html - 456,461 + 450,455 transaction.error.waiting-for-it-to-appear @@ -4631,7 +4777,7 @@ Tỷ lệ phí hiệu quả src/app/components/transaction/transaction.component.html - 489,492 + 485,488 Effective transaction fee rate transaction.effective-fee-rate @@ -4777,17 +4923,19 @@ Show more inputs to reveal fee data + Hiển thị thêm đầu vào để tiết lộ dữ liệu phí src/app/components/transactions-list/transactions-list.component.html - 288,291 + 290,293 transactions-list.load-to-reveal-fee-info remaining + còn lại src/app/components/transactions-list/transactions-list.component.html - 330,331 + 332,333 x-remaining @@ -4935,6 +5083,7 @@ This transaction does not use Taproot + Giao dịch này không sử dụng Taproot src/app/components/tx-features/tx-features.component.html 18 @@ -5037,21 +5186,12 @@ dashboard.latest-transactions - - USD - USD - - src/app/dashboard/dashboard.component.html - 126,127 - - dashboard.latest-transactions.USD - Minimum fee Phí tối thiểu src/app/dashboard/dashboard.component.html - 201,202 + 210,211 Minimum mempool fee dashboard.minimum-fee @@ -5061,7 +5201,7 @@ Thanh lọc src/app/dashboard/dashboard.component.html - 202,203 + 211,212 Purgin below fee dashboard.purging @@ -5071,7 +5211,7 @@ Sử dụng bộ nhớ src/app/dashboard/dashboard.component.html - 214,215 + 223,224 Memory usage dashboard.memory-usage @@ -5081,16 +5221,25 @@ L-BTC đang lưu hành src/app/dashboard/dashboard.component.html - 228,230 + 237,239 dashboard.lbtc-pegs-in-circulation + + mempool.space merely provides data about the Bitcoin network. It cannot help you with retrieving funds, confirming your transaction quicker, etc. + mempool.space chỉ cung cấp dữ liệu về mạng Bitcoin. Trang không thể giúp bạn lấy tiền, xác nhận giao dịch của bạn nhanh hơn, v.v. + + src/app/docs/api-docs/api-docs.component.html + 13 + + faq.big-disclaimer + REST API service Dịch vụ REST API src/app/docs/api-docs/api-docs.component.html - 39,40 + 41,42 api-docs.title @@ -5099,11 +5248,11 @@ Điểm cuối src/app/docs/api-docs/api-docs.component.html - 48,49 + 50,51 src/app/docs/api-docs/api-docs.component.html - 102,105 + 104,107 Api docs endpoint @@ -5112,11 +5261,11 @@ Sự miêu tả src/app/docs/api-docs/api-docs.component.html - 67,68 + 69,70 src/app/docs/api-docs/api-docs.component.html - 106,107 + 108,109 @@ -5124,7 +5273,7 @@ Push mặc định: hành động: 'want', dữ liệu: ['blocks', ...] để thể hiện những gì bạn muốn đẩy. Có sẵn: khối , mempool-khối , live-2h-chart c195a641ez0c195ez0. Đẩy các giao dịch liên quan đến địa chỉ: 'track-address': '3PbJ ... bF9B' a0c95ez0 đầu vào để nhận các giao dịch đầu vào a0c95ez0 a0c95ez0 đó để nhận địa chỉ đầu vào là all95ez0. Trả về một mảng các giao dịch. địa chỉ-giao dịch cho các giao dịch mempool mới và giao dịch khối cho các giao dịch được xác nhận khối mới. src/app/docs/api-docs/api-docs.component.html - 107,108 + 109,110 api-docs.websocket.websocket @@ -5297,12 +5446,13 @@ src/app/lightning/channels-list/channels-list.component.html - 120,121 + 123,124 lightning.x-channels Starting balance + Số dư bắt đầu src/app/lightning/channel/channel-close-box/channel-close-box.component.html 6 @@ -5312,6 +5462,7 @@ Closing balance + Số dư kết thúc src/app/lightning/channel/channel-close-box/channel-close-box.component.html 12 @@ -5341,7 +5492,7 @@ src/app/lightning/channels-list/channels-list.component.html - 65,66 + 68,69 status.inactive @@ -5358,7 +5509,7 @@ src/app/lightning/channels-list/channels-list.component.html - 66,68 + 69,71 status.active @@ -5379,7 +5530,7 @@ src/app/lightning/channels-list/channels-list.component.html - 68,70 + 71,73 status.closed @@ -5409,7 +5560,7 @@ src/app/lightning/channels-list/channels-list.component.html - 40,43 + 43,46 src/app/lightning/node-statistics/node-statistics.component.html @@ -5417,7 +5568,7 @@ src/app/lightning/node-statistics/node-statistics.component.html - 47,50 + 46,49 src/app/lightning/nodes-list/nodes-list.component.html @@ -5525,12 +5676,13 @@ src/app/lightning/channels-list/channels-list.component.html - 39,40 + 42,43 lightning.closing_date Closed by + Đóng bởi src/app/lightning/channel/channel.component.html 52,54 @@ -5563,6 +5715,30 @@ 37 + + Mutually closed + Đóng lẫn nhau + + src/app/lightning/channel/closing-type/closing-type.component.ts + 20 + + + + Force closed + Buộc đóng + + src/app/lightning/channel/closing-type/closing-type.component.ts + 24 + + + + Force closed with penalty + Bắt buộc đóng với khoản phạt + + src/app/lightning/channel/closing-type/closing-type.component.ts + 28 + + Open Mở @@ -5577,7 +5753,7 @@ Không có kênh nào để hiển thị src/app/lightning/channels-list/channels-list.component.html - 29,35 + 29,37 lightning.empty-channels-list @@ -5586,7 +5762,7 @@ Tên riêng src/app/lightning/channels-list/channels-list.component.html - 35,37 + 38,40 src/app/lightning/group/group.component.html @@ -5623,7 +5799,7 @@ Trạng thái src/app/lightning/channels-list/channels-list.component.html - 37,38 + 40,41 status @@ -5632,7 +5808,7 @@ ID kênh src/app/lightning/channels-list/channels-list.component.html - 41,45 + 44,48 channels.id @@ -5641,11 +5817,11 @@ satoshi src/app/lightning/channels-list/channels-list.component.html - 60,64 + 63,67 src/app/lightning/channels-list/channels-list.component.html - 84,88 + 87,91 src/app/lightning/channels-statistics/channels-statistics.component.html @@ -5689,6 +5865,24 @@ shared.sats + + avg + trung bình + + src/app/lightning/channels-statistics/channels-statistics.component.html + 3,5 + + statistics.average-small + + + med + trung vị + + src/app/lightning/channels-statistics/channels-statistics.component.html + 6,9 + + statistics.median-small + Avg Capacity Công suất trung bình @@ -5817,11 +6011,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 17,18 + 16,17 src/app/lightning/node-statistics/node-statistics.component.html - 54,57 + 53,56 src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html @@ -5891,11 +6085,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 29,30 + 28,29 src/app/lightning/node-statistics/node-statistics.component.html - 61,64 + 60,63 src/app/lightning/nodes-list/nodes-list.component.html @@ -6052,12 +6246,37 @@ Fee distribution + Phân bổ phí src/app/lightning/node-fee-chart/node-fee-chart.component.html 2 lightning.node-fee-distribution + + Outgoing Fees + Phí đầu ra + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 170 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 208 + + + + Incoming Fees + Phí đầu vào + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 178 + + + src/app/lightning/node-fee-chart/node-fee-chart.component.ts + 222 + + Percentage change past week Phần trăm thay đổi trong tuần trước @@ -6067,11 +6286,11 @@ src/app/lightning/node-statistics/node-statistics.component.html - 18,20 + 17,19 src/app/lightning/node-statistics/node-statistics.component.html - 30,32 + 29,31 mining.percentage-change-last-week @@ -6147,6 +6366,7 @@ Avg channel distance + Khoảng cách kênh trung bình src/app/lightning/node/node.component.html 56,57 @@ -6186,6 +6406,7 @@ Liquidity ad + Quảng cáo thanh khoản src/app/lightning/node/node.component.html 138,141 @@ -6194,6 +6415,7 @@ Lease fee rate + Giá thuê src/app/lightning/node/node.component.html 144,147 @@ -6203,6 +6425,7 @@ Lease base fee + Phí thuê cơ sở src/app/lightning/node/node.component.html 152,154 @@ -6211,6 +6434,7 @@ Funding weight + Trọng lượng nguồn quỹ src/app/lightning/node/node.component.html 158,159 @@ -6219,6 +6443,7 @@ Channel fee rate + Phí kênh src/app/lightning/node/node.component.html 168,171 @@ -6228,6 +6453,7 @@ Channel base fee + Phí kênh cơ sở src/app/lightning/node/node.component.html 176,178 @@ -6236,6 +6462,7 @@ Compact lease + Thuê gói nhỏ src/app/lightning/node/node.component.html 188,190 @@ -6244,6 +6471,7 @@ TLV extension records + Hồ sơ gia hạn TLV src/app/lightning/node/node.component.html 199,202 @@ -6310,7 +6538,7 @@ Không có sẵn dữ liệu vị trí địa lý src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts - 218,213 + 219,214 @@ -6324,6 +6552,7 @@ Indexing in progress + Đang lập chỉ mục src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts 121,116 @@ -6591,6 +6820,7 @@ Active nodes + Các nút hoạt động src/app/lightning/nodes-per-isp/nodes-per-isp.component.html 14,18 From 2309a769cd470456ce7802e91d1013cbf00bdc8c Mon Sep 17 00:00:00 2001 From: Mononaut Date: Wed, 1 Mar 2023 11:30:33 -0600 Subject: [PATCH 088/102] Don't try to fetch cpfp if database disabled --- backend/src/api/bitcoin/bitcoin.routes.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/src/api/bitcoin/bitcoin.routes.ts b/backend/src/api/bitcoin/bitcoin.routes.ts index 78d027663..2fc497650 100644 --- a/backend/src/api/bitcoin/bitcoin.routes.ts +++ b/backend/src/api/bitcoin/bitcoin.routes.ts @@ -217,7 +217,15 @@ class BitcoinRoutes { res.json(cpfpInfo); return; } else { - const cpfpInfo = await transactionRepository.$getCpfpInfo(req.params.txId); + let cpfpInfo; + if (config.DATABASE.ENABLED) { + cpfpInfo = await transactionRepository.$getCpfpInfo(req.params.txId); + } else { + res.json({ + ancestors: [] + }); + return; + } if (cpfpInfo) { res.json(cpfpInfo); return; From be4bd691eec804092b263ec51cb7377dce30b12e Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 2 Mar 2023 10:08:40 +0900 Subject: [PATCH 089/102] Remove useless code --- backend/src/api/blocks.ts | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 12eb3b693..aa33f1ff7 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -748,30 +748,15 @@ class Blocks { return returnBlocks; } - // Check if block height exist in local cache to skip the hash lookup - const blockByHeight = this.getBlocks().find((b) => b.height === currentHeight); - let startFromHash: string | null = null; - if (blockByHeight) { - startFromHash = blockByHeight.id; - } else if (!Common.indexingEnabled()) { - startFromHash = await bitcoinApi.$getBlockHash(currentHeight); - } - - let nextHash = startFromHash; for (let i = 0; i < limit && currentHeight >= 0; i++) { let block = this.getBlocks().find((b) => b.height === currentHeight); if (block) { // Using the memory cache (find by height) returnBlocks.push(block); - } else if (Common.indexingEnabled()) { + } else { // Using indexing (find by height, index on the fly, save in database) block = await this.$indexBlock(currentHeight); returnBlocks.push(block); - } else if (nextHash !== null) { - // Without indexing, query block on the fly using bitoin backend, follow previous hash links - block = await this.$indexBlock(currentHeight); - nextHash = block.previousblockhash; - returnBlocks.push(block); } currentHeight--; } From 5129116fe452f68b4d23a04abe68ea6ec968718a Mon Sep 17 00:00:00 2001 From: nymkappa <1612910616@pm.me> Date: Thu, 2 Mar 2023 10:45:14 +0900 Subject: [PATCH 090/102] Don't run CI on "review_requested" event --- .github/workflows/cypress.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress.yml index 8c720917e..bc66678d4 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress.yml @@ -4,7 +4,7 @@ on: push: branches: [master] pull_request: - types: [opened, review_requested, synchronize] + types: [opened, synchronize] jobs: cypress: From ec0d8b7c485ce923ccea9393d9099b986a462aca Mon Sep 17 00:00:00 2001 From: wiz Date: Thu, 2 Mar 2023 19:30:02 +0900 Subject: [PATCH 091/102] ops: Remove fork repos from upgrade script --- production/mempool-build-all | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production/mempool-build-all b/production/mempool-build-all index aa764da7d..b45c0edc6 100755 --- a/production/mempool-build-all +++ b/production/mempool-build-all @@ -38,7 +38,7 @@ update_repo() cd "$HOME/${site}" || exit 1 git fetch origin || exit 1 - for remote in origin hunicus mononaut;do + for remote in origin;do git remote add "${remote}" "https://github.com/${remote}/mempool" >/dev/null 2>&1 git fetch "${remote}" || exit 1 done From 7b01286ed270b7646e591e02f40ad4e755e3d658 Mon Sep 17 00:00:00 2001 From: softsimon Date: Thu, 2 Mar 2023 21:50:09 +0900 Subject: [PATCH 092/102] Run the go to anchor whenever data is loaded --- .../app/components/about/about.component.ts | 38 ++++++++++++------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/frontend/src/app/components/about/about.component.ts b/frontend/src/app/components/about/about.component.ts index 33c6ac5a2..0f71645d6 100644 --- a/frontend/src/app/components/about/about.component.ts +++ b/frontend/src/app/components/about/about.component.ts @@ -6,8 +6,9 @@ import { Observable } from 'rxjs'; import { ApiService } from '../../services/api.service'; import { IBackendInfo } from '../../interfaces/websocket.interface'; import { Router, ActivatedRoute } from '@angular/router'; -import { map } from 'rxjs/operators'; +import { map, tap } from 'rxjs/operators'; import { ITranslators } from '../../interfaces/node-api.interface'; +import { DOCUMENT } from '@angular/common'; @Component({ selector: 'app-about', @@ -33,6 +34,7 @@ export class AboutComponent implements OnInit { private router: Router, private route: ActivatedRoute, @Inject(LOCALE_ID) public locale: string, + @Inject(DOCUMENT) private document: Document, ) { } ngOnInit() { @@ -40,17 +42,21 @@ export class AboutComponent implements OnInit { this.seoService.setTitle($localize`:@@004b222ff9ef9dd4771b777950ca1d0e4cd4348a:About`); this.websocketService.want(['blocks']); - this.sponsors$ = this.apiService.getDonation$(); + this.sponsors$ = this.apiService.getDonation$() + .pipe( + tap(() => this.goToAnchor()) + ); this.translators$ = this.apiService.getTranslators$() .pipe( map((translators) => { for (const t in translators) { if (translators[t] === '') { - delete translators[t] + delete translators[t]; } } return translators; - }) + }), + tap(() => this.goToAnchor()) ); this.allContributors$ = this.apiService.getContributor$().pipe( map((contributors) => { @@ -58,20 +64,24 @@ export class AboutComponent implements OnInit { regular: contributors.filter((user) => !user.core_constributor), core: contributors.filter((user) => user.core_constributor), }; - }) + }), + tap(() => this.goToAnchor()) ); } - ngAfterViewInit() { - const that = this; - setTimeout( () => { - if( this.route.snapshot.fragment ) { - if (document.getElementById( this.route.snapshot.fragment )) { - document.getElementById( this.route.snapshot.fragment ).scrollIntoView({behavior: "smooth", block: "center"}); - } + ngAfterViewInit() { + this.goToAnchor(); + } + + goToAnchor() { + setTimeout(() => { + if (this.route.snapshot.fragment) { + if (this.document.getElementById(this.route.snapshot.fragment)) { + this.document.getElementById(this.route.snapshot.fragment).scrollIntoView({behavior: 'smooth'}); } - }, 1 ); - } + } + }, 1); + } sponsor(): void { if (this.officialMempoolSpace && this.stateService.env.BASE_MODULE === 'mempool') { From a54684ad7491c01d98916b91da2e0c8c6c8c059a Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Thu, 2 Mar 2023 07:51:30 -0500 Subject: [PATCH 093/102] Add promo video to about page --- .../app/components/about/about.component.html | 23 +++++++++--------- .../app/components/about/about.component.scss | 9 +++++++ frontend/src/resources/mempool-promo.jpg | Bin 0 -> 47149 bytes frontend/sync-assets.js | 10 ++++++-- 4 files changed, 29 insertions(+), 13 deletions(-) create mode 100644 frontend/src/resources/mempool-promo.jpg diff --git a/frontend/src/app/components/about/about.component.html b/frontend/src/app/components/about/about.component.html index 03323b6ed..05167f7bb 100644 --- a/frontend/src/app/components/about/about.component.html +++ b/frontend/src/app/components/about/about.component.html @@ -13,17 +13,7 @@

Our mempool and blockchain explorer for the Bitcoin community, focusing on the transaction fee market and multi-layer ecosystem, completely self-hosted without any trusted third-parties.

- +

Enterprise Sponsors 🚀

@@ -383,6 +373,17 @@ - +

Enterprise Sponsors 🚀

diff --git a/frontend/src/app/components/about/about.component.scss b/frontend/src/app/components/about/about.component.scss index d50c09027..694c113f2 100644 --- a/frontend/src/app/components/about/about.component.scss +++ b/frontend/src/app/components/about/about.component.scss @@ -35,7 +35,9 @@ } video { - margin-top: 48px; + width: 640px; + max-width: 90%; + margin-top: 30px; } .social-icons { From bc2d8dd7c3ab912ec886b896e8bb148f5e907862 Mon Sep 17 00:00:00 2001 From: wiz Date: Thu, 2 Mar 2023 22:42:56 +0900 Subject: [PATCH 095/102] Add mempool promo video (via YouTube) in README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index cde9b5adb..6e3652a78 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # The Mempool Open Source Project™ [![mempool](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/ry4br7/master&style=flat-square)](https://dashboard.cypress.io/projects/ry4br7/runs) +[![mempool promo video](https://raw.githubusercontent.com/mempool/mempool-promo/master/promo.jpg)](https://youtu.be/hFIF61INmQs) + Mempool is the fully-featured mempool visualizer, explorer, and API service running at [mempool.space](https://mempool.space/). It is an open-source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market that is evolving Bitcoin into a multi-layer ecosystem. From 210843916e9c2292680cbbf5837abea47e3434e5 Mon Sep 17 00:00:00 2001 From: wiz Date: Thu, 2 Mar 2023 22:45:51 +0900 Subject: [PATCH 096/102] Add mempool promo video (via GitHub) in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e3652a78..d2f9f9382 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # The Mempool Open Source Project™ [![mempool](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/ry4br7/master&style=flat-square)](https://dashboard.cypress.io/projects/ry4br7/runs) -[![mempool promo video](https://raw.githubusercontent.com/mempool/mempool-promo/master/promo.jpg)](https://youtu.be/hFIF61INmQs) +https://user-images.githubusercontent.com/232186/222445818-234aa6c9-c233-4c52-b3f0-e32b8232893b.mp4 Mempool is the fully-featured mempool visualizer, explorer, and API service running at [mempool.space](https://mempool.space/). From 4f689885e63bc93e7f8e6d04ef468e596a47c184 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:02:35 +0900 Subject: [PATCH 097/102] Remove margin from about video --- frontend/src/app/components/about/about.component.scss | 2 +- frontend/sync-assets.js | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/src/app/components/about/about.component.scss b/frontend/src/app/components/about/about.component.scss index 694c113f2..35df3fc46 100644 --- a/frontend/src/app/components/about/about.component.scss +++ b/frontend/src/app/components/about/about.component.scss @@ -37,7 +37,7 @@ video { width: 640px; max-width: 90%; - margin-top: 30px; + margin-top: 0; } .social-icons { diff --git a/frontend/sync-assets.js b/frontend/sync-assets.js index c1941a771..a39d913c8 100644 --- a/frontend/sync-assets.js +++ b/frontend/sync-assets.js @@ -92,8 +92,9 @@ console.log('Downloading testnet assets'); download(PATH + 'assets-testnet.json', testnetAssetsJsonUrl); console.log('Downloading testnet assets minimal'); download(PATH + 'assets-testnet.minimal.json', testnetAssetsMinimalJsonUrl); -console.log('Downloading promo video'); -if (!fs.existsSync(promoVideo)) +if (!fs.existsSync(promoVideo)) { + console.log('Downloading promo video'); download(promoVideo, promoVideoUrl); +} console.log('Downloading mining pool logos'); downloadMiningPoolLogos(); From 89d9c1d78d354c00da9903f9474e6231e53bf1d4 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Thu, 2 Mar 2023 23:38:47 +0900 Subject: [PATCH 098/102] Only show electrum tab on desktop --- frontend/src/app/docs/docs/docs.component.html | 2 +- frontend/src/app/docs/docs/docs.component.scss | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/docs/docs/docs.component.html b/frontend/src/app/docs/docs/docs.component.html index b0c51ad16..cf3bdb070 100644 --- a/frontend/src/app/docs/docs/docs.component.html +++ b/frontend/src/app/docs/docs/docs.component.html @@ -32,7 +32,7 @@ -
  • +