Merge branch 'master' into nymkappa/mega-branch
This commit is contained in:
commit
f3fd70a846
@ -16,6 +16,7 @@
|
|||||||
"MEMPOOL_BLOCKS_AMOUNT": 8,
|
"MEMPOOL_BLOCKS_AMOUNT": 8,
|
||||||
"INDEXING_BLOCKS_AMOUNT": 11000,
|
"INDEXING_BLOCKS_AMOUNT": 11000,
|
||||||
"BLOCKS_SUMMARIES_INDEXING": false,
|
"BLOCKS_SUMMARIES_INDEXING": false,
|
||||||
|
"GOGGLES_INDEXING": false,
|
||||||
"USE_SECOND_NODE_FOR_MINFEE": false,
|
"USE_SECOND_NODE_FOR_MINFEE": false,
|
||||||
"EXTERNAL_ASSETS": [],
|
"EXTERNAL_ASSETS": [],
|
||||||
"EXTERNAL_MAX_RETRY": 1,
|
"EXTERNAL_MAX_RETRY": 1,
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
"NETWORK": "__MEMPOOL_NETWORK__",
|
"NETWORK": "__MEMPOOL_NETWORK__",
|
||||||
"BACKEND": "__MEMPOOL_BACKEND__",
|
"BACKEND": "__MEMPOOL_BACKEND__",
|
||||||
"BLOCKS_SUMMARIES_INDEXING": true,
|
"BLOCKS_SUMMARIES_INDEXING": true,
|
||||||
|
"GOGGLES_INDEXING": false,
|
||||||
"HTTP_PORT": 1,
|
"HTTP_PORT": 1,
|
||||||
"SPAWN_CLUSTER_PROCS": 2,
|
"SPAWN_CLUSTER_PROCS": 2,
|
||||||
"API_URL_PREFIX": "__MEMPOOL_API_URL_PREFIX__",
|
"API_URL_PREFIX": "__MEMPOOL_API_URL_PREFIX__",
|
||||||
|
@ -17,6 +17,7 @@ describe('Mempool Backend Config', () => {
|
|||||||
NETWORK: 'mainnet',
|
NETWORK: 'mainnet',
|
||||||
BACKEND: 'none',
|
BACKEND: 'none',
|
||||||
BLOCKS_SUMMARIES_INDEXING: false,
|
BLOCKS_SUMMARIES_INDEXING: false,
|
||||||
|
GOGGLES_INDEXING: false,
|
||||||
HTTP_PORT: 8999,
|
HTTP_PORT: 8999,
|
||||||
SPAWN_CLUSTER_PROCS: 0,
|
SPAWN_CLUSTER_PROCS: 0,
|
||||||
API_URL_PREFIX: '/api/v1/',
|
API_URL_PREFIX: '/api/v1/',
|
||||||
|
@ -566,7 +566,7 @@ class Blocks {
|
|||||||
*/
|
*/
|
||||||
public async $classifyBlocks(): Promise<void> {
|
public async $classifyBlocks(): Promise<void> {
|
||||||
// classification requires an esplora backend
|
// classification requires an esplora backend
|
||||||
if (!Common.blocksSummariesIndexingEnabled() || config.MEMPOOL.BACKEND !== 'esplora') {
|
if (!Common.gogglesIndexingEnabled() || config.MEMPOOL.BACKEND !== 'esplora') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,6 +617,7 @@ class Blocks {
|
|||||||
// classify
|
// classify
|
||||||
const { transactions: classifiedTxs } = this.summarizeBlockTransactions(blockHash, cpfpSummary.transactions);
|
const { transactions: classifiedTxs } = this.summarizeBlockTransactions(blockHash, cpfpSummary.transactions);
|
||||||
await BlocksSummariesRepository.$saveTransactions(height, blockHash, classifiedTxs, 1);
|
await BlocksSummariesRepository.$saveTransactions(height, blockHash, classifiedTxs, 1);
|
||||||
|
await Common.sleep$(250);
|
||||||
}
|
}
|
||||||
if (unclassifiedTemplates[height]) {
|
if (unclassifiedTemplates[height]) {
|
||||||
// classify template
|
// classify template
|
||||||
@ -656,6 +657,7 @@ class Blocks {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
await BlocksSummariesRepository.$saveTemplate({ height, template: { id: blockHash, transactions: classifiedTemplate }, version: 1 });
|
await BlocksSummariesRepository.$saveTemplate({ height, template: { id: blockHash, transactions: classifiedTemplate }, version: 1 });
|
||||||
|
await Common.sleep$(250);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.warn(`Failed to classify template or block summary at ${height}`, logger.tags.goggles);
|
logger.warn(`Failed to classify template or block summary at ${height}`, logger.tags.goggles);
|
||||||
|
@ -508,6 +508,13 @@ export class Common {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gogglesIndexingEnabled(): boolean {
|
||||||
|
return (
|
||||||
|
Common.blocksSummariesIndexingEnabled() &&
|
||||||
|
config.MEMPOOL.GOGGLES_INDEXING === true
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static cpfpIndexingEnabled(): boolean {
|
static cpfpIndexingEnabled(): boolean {
|
||||||
return (
|
return (
|
||||||
Common.indexingEnabled() &&
|
Common.indexingEnabled() &&
|
||||||
|
@ -20,6 +20,7 @@ interface IConfig {
|
|||||||
MEMPOOL_BLOCKS_AMOUNT: number;
|
MEMPOOL_BLOCKS_AMOUNT: number;
|
||||||
INDEXING_BLOCKS_AMOUNT: number;
|
INDEXING_BLOCKS_AMOUNT: number;
|
||||||
BLOCKS_SUMMARIES_INDEXING: boolean;
|
BLOCKS_SUMMARIES_INDEXING: boolean;
|
||||||
|
GOGGLES_INDEXING: boolean;
|
||||||
USE_SECOND_NODE_FOR_MINFEE: boolean;
|
USE_SECOND_NODE_FOR_MINFEE: boolean;
|
||||||
EXTERNAL_ASSETS: string[];
|
EXTERNAL_ASSETS: string[];
|
||||||
EXTERNAL_MAX_RETRY: number;
|
EXTERNAL_MAX_RETRY: number;
|
||||||
@ -175,6 +176,7 @@ const defaults: IConfig = {
|
|||||||
'MEMPOOL_BLOCKS_AMOUNT': 8,
|
'MEMPOOL_BLOCKS_AMOUNT': 8,
|
||||||
'INDEXING_BLOCKS_AMOUNT': 11000, // 0 = disable indexing, -1 = index all blocks
|
'INDEXING_BLOCKS_AMOUNT': 11000, // 0 = disable indexing, -1 = index all blocks
|
||||||
'BLOCKS_SUMMARIES_INDEXING': false,
|
'BLOCKS_SUMMARIES_INDEXING': false,
|
||||||
|
'GOGGLES_INDEXING': false,
|
||||||
'USE_SECOND_NODE_FOR_MINFEE': false,
|
'USE_SECOND_NODE_FOR_MINFEE': false,
|
||||||
'EXTERNAL_ASSETS': [],
|
'EXTERNAL_ASSETS': [],
|
||||||
'EXTERNAL_MAX_RETRY': 1,
|
'EXTERNAL_MAX_RETRY': 1,
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
"STDOUT_LOG_MIN_PRIORITY": "__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__",
|
"STDOUT_LOG_MIN_PRIORITY": "__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__",
|
||||||
"INDEXING_BLOCKS_AMOUNT": __MEMPOOL_INDEXING_BLOCKS_AMOUNT__,
|
"INDEXING_BLOCKS_AMOUNT": __MEMPOOL_INDEXING_BLOCKS_AMOUNT__,
|
||||||
"BLOCKS_SUMMARIES_INDEXING": __MEMPOOL_BLOCKS_SUMMARIES_INDEXING__,
|
"BLOCKS_SUMMARIES_INDEXING": __MEMPOOL_BLOCKS_SUMMARIES_INDEXING__,
|
||||||
|
"GOGGLES_INDEXING": __MEMPOOL_GOGGLES_INDEXING__,
|
||||||
"AUTOMATIC_BLOCK_REINDEXING": __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__,
|
"AUTOMATIC_BLOCK_REINDEXING": __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__,
|
||||||
"AUDIT": __MEMPOOL_AUDIT__,
|
"AUDIT": __MEMPOOL_AUDIT__,
|
||||||
"ADVANCED_GBT_AUDIT": __MEMPOOL_ADVANCED_GBT_AUDIT__,
|
"ADVANCED_GBT_AUDIT": __MEMPOOL_ADVANCED_GBT_AUDIT__,
|
||||||
|
@ -17,6 +17,7 @@ __MEMPOOL_INITIAL_BLOCKS_AMOUNT__=${MEMPOOL_INITIAL_BLOCKS_AMOUNT:=8}
|
|||||||
__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__=${MEMPOOL_MEMPOOL_BLOCKS_AMOUNT:=8}
|
__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__=${MEMPOOL_MEMPOOL_BLOCKS_AMOUNT:=8}
|
||||||
__MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=11000}
|
__MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=11000}
|
||||||
__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__=${MEMPOOL_BLOCKS_SUMMARIES_INDEXING:=false}
|
__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__=${MEMPOOL_BLOCKS_SUMMARIES_INDEXING:=false}
|
||||||
|
__MEMPOOL_GOGGLES_INDEXING__=${MEMPOOL_GOGGLES_INDEXING:=false}
|
||||||
__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__=${MEMPOOL_USE_SECOND_NODE_FOR_MINFEE:=false}
|
__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__=${MEMPOOL_USE_SECOND_NODE_FOR_MINFEE:=false}
|
||||||
__MEMPOOL_EXTERNAL_ASSETS__=${MEMPOOL_EXTERNAL_ASSETS:=[]}
|
__MEMPOOL_EXTERNAL_ASSETS__=${MEMPOOL_EXTERNAL_ASSETS:=[]}
|
||||||
__MEMPOOL_EXTERNAL_MAX_RETRY__=${MEMPOOL_EXTERNAL_MAX_RETRY:=1}
|
__MEMPOOL_EXTERNAL_MAX_RETRY__=${MEMPOOL_EXTERNAL_MAX_RETRY:=1}
|
||||||
@ -170,6 +171,7 @@ sed -i "s!__MEMPOOL_INITIAL_BLOCKS_AMOUNT__!${__MEMPOOL_INITIAL_BLOCKS_AMOUNT__}
|
|||||||
sed -i "s!__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__!${__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__!${__MEMPOOL_MEMPOOL_BLOCKS_AMOUNT__}!g" mempool-config.json
|
||||||
sed -i "s!__MEMPOOL_INDEXING_BLOCKS_AMOUNT__!${__MEMPOOL_INDEXING_BLOCKS_AMOUNT__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_INDEXING_BLOCKS_AMOUNT__!${__MEMPOOL_INDEXING_BLOCKS_AMOUNT__}!g" mempool-config.json
|
||||||
sed -i "s!__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__!${__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__!${__MEMPOOL_BLOCKS_SUMMARIES_INDEXING__}!g" mempool-config.json
|
||||||
|
sed -i "s!__MEMPOOL_GOGGLES_INDEXING__!${__MEMPOOL_GOGGLES_INDEXING__}!g" mempool-config.json
|
||||||
sed -i "s!__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__!${__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__!${__MEMPOOL_USE_SECOND_NODE_FOR_MINFEE__}!g" mempool-config.json
|
||||||
sed -i "s!__MEMPOOL_EXTERNAL_ASSETS__!${__MEMPOOL_EXTERNAL_ASSETS__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_EXTERNAL_ASSETS__!${__MEMPOOL_EXTERNAL_ASSETS__}!g" mempool-config.json
|
||||||
sed -i "s!__MEMPOOL_EXTERNAL_MAX_RETRY__!${__MEMPOOL_EXTERNAL_MAX_RETRY__}!g" mempool-config.json
|
sed -i "s!__MEMPOOL_EXTERNAL_MAX_RETRY__!${__MEMPOOL_EXTERNAL_MAX_RETRY__}!g" mempool-config.json
|
||||||
|
@ -68,7 +68,6 @@ export class AccelerationFeesGraphComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
this.seoService.setTitle($localize`:@@bcf34abc2d9ed8f45a2f65dd464c46694e9a181e:Acceleration Fees`);
|
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
if (this.widget) {
|
if (this.widget) {
|
||||||
this.miningWindowPreference = '1m';
|
this.miningWindowPreference = '1m';
|
||||||
@ -88,6 +87,7 @@ export class AccelerationFeesGraphComponent implements OnInit, OnDestroy {
|
|||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
this.seoService.setTitle($localize`:@@bcf34abc2d9ed8f45a2f65dd464c46694e9a181e:Acceleration Fees`);
|
||||||
this.miningWindowPreference = this.miningService.getDefaultTimespan('1w');
|
this.miningWindowPreference = this.miningService.getDefaultTimespan('1w');
|
||||||
this.radioGroupForm = this.formBuilder.group({ dateSpan: this.miningWindowPreference });
|
this.radioGroupForm = this.formBuilder.group({ dateSpan: this.miningWindowPreference });
|
||||||
this.radioGroupForm.controls.dateSpan.setValue(this.miningWindowPreference);
|
this.radioGroupForm.controls.dateSpan.setValue(this.miningWindowPreference);
|
||||||
|
@ -63,7 +63,22 @@ tr, td, th {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.txid {
|
.txid {
|
||||||
width: 25%;
|
@media (max-width: 500px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.fee, .block, .status {
|
||||||
|
width: 15%;
|
||||||
|
|
||||||
|
@media (max-width: 720px) {
|
||||||
|
width: 20%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.widget {
|
||||||
|
.txid {
|
||||||
|
width: 30%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
@ -74,9 +89,9 @@ tr, td, th {
|
|||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.fee-rate {
|
.fee-rate {
|
||||||
width: 20%;
|
width: 20%;
|
||||||
@media (max-width: 1060px) and (min-width: 768px) {
|
@media (max-width: 1060px) and (min-width: 768px) {
|
||||||
text-align: start !important;
|
text-align: start !important;
|
||||||
@ -90,9 +105,9 @@ tr, td, th {
|
|||||||
@media (max-width: 410px) {
|
@media (max-width: 410px) {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bid {
|
.bid {
|
||||||
width: 30%;
|
width: 30%;
|
||||||
min-width: 150px;
|
min-width: 150px;
|
||||||
@media (max-width: 840px) and (min-width: 768px) {
|
@media (max-width: 840px) and (min-width: 768px) {
|
||||||
@ -101,28 +116,29 @@ tr, td, th {
|
|||||||
@media (max-width: 410px) {
|
@media (max-width: 410px) {
|
||||||
text-align: start !important;
|
text-align: start !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.time {
|
.time {
|
||||||
width: 25%;
|
width: 25%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fee {
|
.fee {
|
||||||
width: 35%;
|
width: 30%;
|
||||||
@media (max-width: 1060px) and (min-width: 768px) {
|
@media (max-width: 1060px) and (min-width: 768px) {
|
||||||
text-align: start !important;
|
text-align: start !important;
|
||||||
}
|
}
|
||||||
@media (max-width: 500px) {
|
@media (max-width: 500px) {
|
||||||
text-align: start !important;
|
text-align: start !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.block {
|
.block {
|
||||||
width: 20%;
|
width: 20%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
width: 20%
|
width: 20%
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tooltip text */
|
/* Tooltip text */
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="card list-card">
|
<div class="card list-card">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<a class="title-link" href="" [routerLink]="['/acceleration-list' | relativeUrl]">
|
<a class="title-link" href="" [routerLink]="['/acceleration/list' | relativeUrl]">
|
||||||
<h5 class="card-title d-inline" i18n="dashboard.recent-accelerations">Recent Accelerations</h5>
|
<h5 class="card-title d-inline" i18n="dashboard.recent-accelerations">Recent Accelerations</h5>
|
||||||
<span> </span>
|
<span> </span>
|
||||||
<fa-icon [icon]="['fas', 'external-link-alt']" [fixedWidth]="true" style="vertical-align: 'text-top'; font-size: 13px; color: #4a68b9"></fa-icon>
|
<fa-icon [icon]="['fas', 'external-link-alt']" [fixedWidth]="true" style="vertical-align: 'text-top'; font-size: 13px; color: #4a68b9"></fa-icon>
|
||||||
|
@ -47,20 +47,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" *ngIf="showHalving">
|
<div class="item" *ngIf="showHalving">
|
||||||
<h5 class="card-title" i18n="difficulty-box.next-halving" i18n-ngbTooltip="difficulty-box.next-halving"
|
<h5 class="card-title" i18n="difficulty-box.next-halving">Next Halving</h5>
|
||||||
ngbTooltip="Next Halving" placement="bottom" #averagefee [disableTooltip]="!isEllipsisActive(averagefee)">Next Halving</h5>
|
<div class="card-text" i18n-ngbTooltip="mining.average-fee" [ngbTooltip]="halvingBlocksLeft" [tooltipContext]="{ epochData: epochData }" placement="bottom">
|
||||||
<div class="card-text">
|
<span>{{ timeUntilHalving | date }}</span>
|
||||||
<ng-container *ngTemplateOutlet="epochData.blocksUntilHalving === 1 ? blocksSingular : blocksPlural; context: {$implicit: epochData.blocksUntilHalving }"></ng-container>
|
<div class="symbol" *ngIf="blocksUntilHalving === 1; else approxTime">
|
||||||
<ng-template #blocksPlural let-i i18n="shared.blocks">{{ i }} <span class="shared-block">blocks</span></ng-template>
|
<app-time kind="until" [time]="epochData.timeAvg + now" [fastRender]="false" [fixedRender]="true" [precision]="1" minUnit="minute"></app-time>
|
||||||
<ng-template #blocksSingular let-i i18n="shared.block">{{ i }} <span class="shared-block">block</span></ng-template>
|
</div>
|
||||||
|
<ng-template #approxTime>
|
||||||
|
<div class="symbol">
|
||||||
|
<app-time kind="until" [time]="timeUntilHalving" [fastRender]="false" [fixedRender]="true" [precision]="0" [numUnits]="2" [units]="['year', 'day', 'hour', 'minute']"></app-time>
|
||||||
|
</div>
|
||||||
|
</ng-template>
|
||||||
</div>
|
</div>
|
||||||
<div class="symbol"><app-time kind="until" [time]="epochData.timeUntilHalving" [fastRender]="true" [precision]="1"></app-time></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<ng-template #halvingBlocksLeft let-epochData="epochData">
|
||||||
|
<ng-container *ngTemplateOutlet="epochData.blocksUntilHalving === 1 ? blocksSingular : blocksPlural; context: {$implicit: epochData.blocksUntilHalving }"></ng-container>
|
||||||
|
<ng-template #blocksPlural let-i i18n="shared.blocks">{{ i }} <span class="shared-block">blocks</span></ng-template>
|
||||||
|
<ng-template #blocksSingular let-i i18n="shared.block">{{ i }} <span class="shared-block">block</span></ng-template>
|
||||||
|
</ng-template>
|
||||||
|
|
||||||
<ng-template #loadingDifficulty>
|
<ng-template #loadingDifficulty>
|
||||||
<div class="difficulty-skeleton loading-container">
|
<div class="difficulty-skeleton loading-container">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
|
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
|
||||||
import { combineLatest, Observable, timer } from 'rxjs';
|
import { combineLatest, Observable } from 'rxjs';
|
||||||
import { map, switchMap } from 'rxjs/operators';
|
import { map } from 'rxjs/operators';
|
||||||
import { StateService } from '../../services/state.service';
|
import { StateService } from '../../services/state.service';
|
||||||
|
|
||||||
interface EpochProgress {
|
interface EpochProgress {
|
||||||
@ -15,6 +15,7 @@ interface EpochProgress {
|
|||||||
previousRetarget: number;
|
previousRetarget: number;
|
||||||
blocksUntilHalving: number;
|
blocksUntilHalving: number;
|
||||||
timeUntilHalving: number;
|
timeUntilHalving: number;
|
||||||
|
timeAvg: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -26,6 +27,9 @@ interface EpochProgress {
|
|||||||
export class DifficultyMiningComponent implements OnInit {
|
export class DifficultyMiningComponent implements OnInit {
|
||||||
isLoadingWebSocket$: Observable<boolean>;
|
isLoadingWebSocket$: Observable<boolean>;
|
||||||
difficultyEpoch$: Observable<EpochProgress>;
|
difficultyEpoch$: Observable<EpochProgress>;
|
||||||
|
blocksUntilHalving: number | null = null;
|
||||||
|
timeUntilHalving = 0;
|
||||||
|
now = new Date().getTime();
|
||||||
|
|
||||||
@Input() showProgress = true;
|
@Input() showProgress = true;
|
||||||
@Input() showHalving = false;
|
@Input() showHalving = false;
|
||||||
@ -64,8 +68,9 @@ export class DifficultyMiningComponent implements OnInit {
|
|||||||
colorPreviousAdjustments = '#ffffff66';
|
colorPreviousAdjustments = '#ffffff66';
|
||||||
}
|
}
|
||||||
|
|
||||||
const blocksUntilHalving = 210000 - (maxHeight % 210000);
|
this.blocksUntilHalving = 210000 - (maxHeight % 210000);
|
||||||
const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 600000);
|
this.timeUntilHalving = new Date().getTime() + (this.blocksUntilHalving * 600000);
|
||||||
|
this.now = new Date().getTime();
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
base: `${da.progressPercent.toFixed(2)}%`,
|
base: `${da.progressPercent.toFixed(2)}%`,
|
||||||
@ -77,8 +82,9 @@ export class DifficultyMiningComponent implements OnInit {
|
|||||||
newDifficultyHeight: da.nextRetargetHeight,
|
newDifficultyHeight: da.nextRetargetHeight,
|
||||||
estimatedRetargetDate: da.estimatedRetargetDate,
|
estimatedRetargetDate: da.estimatedRetargetDate,
|
||||||
previousRetarget: da.previousRetarget,
|
previousRetarget: da.previousRetarget,
|
||||||
blocksUntilHalving,
|
blocksUntilHalving: this.blocksUntilHalving,
|
||||||
timeUntilHalving,
|
timeUntilHalving: this.timeUntilHalving,
|
||||||
|
timeAvg: da.timeAvg,
|
||||||
};
|
};
|
||||||
return data;
|
return data;
|
||||||
})
|
})
|
||||||
|
@ -11,6 +11,13 @@ import { MiningService } from '../../services/mining.service';
|
|||||||
import { download } from '../../shared/graphs.utils';
|
import { download } from '../../shared/graphs.utils';
|
||||||
import { ActivatedRoute } from '@angular/router';
|
import { ActivatedRoute } from '@angular/router';
|
||||||
|
|
||||||
|
interface Hashrate {
|
||||||
|
timestamp: number;
|
||||||
|
avgHashRate: number;
|
||||||
|
share: number;
|
||||||
|
poolName: string;
|
||||||
|
}
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-hashrate-chart-pools',
|
selector: 'app-hashrate-chart-pools',
|
||||||
templateUrl: './hashrate-chart-pools.component.html',
|
templateUrl: './hashrate-chart-pools.component.html',
|
||||||
@ -32,6 +39,7 @@ export class HashrateChartPoolsComponent implements OnInit {
|
|||||||
miningWindowPreference: string;
|
miningWindowPreference: string;
|
||||||
radioGroupForm: UntypedFormGroup;
|
radioGroupForm: UntypedFormGroup;
|
||||||
|
|
||||||
|
hashrates: Hashrate[];
|
||||||
chartOptions: EChartsOption = {};
|
chartOptions: EChartsOption = {};
|
||||||
chartInitOptions = {
|
chartInitOptions = {
|
||||||
renderer: 'svg',
|
renderer: 'svg',
|
||||||
@ -87,26 +95,66 @@ export class HashrateChartPoolsComponent implements OnInit {
|
|||||||
return this.apiService.getHistoricalPoolsHashrate$(timespan)
|
return this.apiService.getHistoricalPoolsHashrate$(timespan)
|
||||||
.pipe(
|
.pipe(
|
||||||
tap((response) => {
|
tap((response) => {
|
||||||
const hashrates = response.body;
|
this.hashrates = response.body;
|
||||||
// Prepare series (group all hashrates data point by pool)
|
// Prepare series (group all hashrates data point by pool)
|
||||||
const grouped = {};
|
const series = this.applyHashrates();
|
||||||
for (const hashrate of hashrates) {
|
if (series.length === 0) {
|
||||||
if (!grouped.hasOwnProperty(hashrate.poolName)) {
|
this.cd.markForCheck();
|
||||||
grouped[hashrate.poolName] = [];
|
throw new Error();
|
||||||
}
|
}
|
||||||
grouped[hashrate.poolName].push(hashrate);
|
}),
|
||||||
|
map((response) => {
|
||||||
|
return {
|
||||||
|
blockCount: parseInt(response.headers.get('x-total-count'), 10),
|
||||||
}
|
}
|
||||||
|
}),
|
||||||
|
retryWhen((errors) => errors.pipe(
|
||||||
|
delay(60000)
|
||||||
|
))
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
share()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
applyHashrates(): any[] {
|
||||||
|
const times: { [time: number]: { hashrates: { [pool: string]: Hashrate } } } = {};
|
||||||
|
const pools = {};
|
||||||
|
for (const hashrate of this.hashrates) {
|
||||||
|
if (!times[hashrate.timestamp]) {
|
||||||
|
times[hashrate.timestamp] = { hashrates: {} };
|
||||||
|
}
|
||||||
|
times[hashrate.timestamp].hashrates[hashrate.poolName] = hashrate;
|
||||||
|
if (!pools[hashrate.poolName]) {
|
||||||
|
pools[hashrate.poolName] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const sortedTimes = Object.keys(times).sort((a,b) => parseInt(a) - parseInt(b)).map(time => ({ time: parseInt(time), hashrates: times[time].hashrates }));
|
||||||
|
const lastHashrates = sortedTimes[sortedTimes.length - 1].hashrates;
|
||||||
|
const sortedPools = Object.keys(pools).sort((a,b) => {
|
||||||
|
if (lastHashrates[b]?.share ?? lastHashrates[a]?.share ?? false) {
|
||||||
|
// sort by descending share of hashrate in latest period
|
||||||
|
return (lastHashrates[b]?.share || 0) - (lastHashrates[a]?.share || 0);
|
||||||
|
} else {
|
||||||
|
// tiebreak by pool name
|
||||||
|
b < a;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const series = [];
|
const series = [];
|
||||||
const legends = [];
|
const legends = [];
|
||||||
for (const name in grouped) {
|
for (const name of sortedPools) {
|
||||||
|
const data = sortedTimes.map(({ time, hashrates }) => {
|
||||||
|
return [time * 1000, (hashrates[name]?.share || 0) * 100];
|
||||||
|
});
|
||||||
series.push({
|
series.push({
|
||||||
zlevel: 0,
|
zlevel: 0,
|
||||||
stack: 'Total',
|
stack: 'Total',
|
||||||
name: name,
|
name: name,
|
||||||
showSymbol: false,
|
showSymbol: false,
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: grouped[name].map((val) => [val.timestamp * 1000, val.share * 100]),
|
data,
|
||||||
type: 'line',
|
type: 'line',
|
||||||
lineStyle: { width: 0 },
|
lineStyle: { width: 0 },
|
||||||
areaStyle: { opacity: 1 },
|
areaStyle: { opacity: 1 },
|
||||||
@ -137,23 +185,7 @@ export class HashrateChartPoolsComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
this.isLoading = false;
|
this.isLoading = false;
|
||||||
|
|
||||||
if (series.length === 0) {
|
return series;
|
||||||
this.cd.markForCheck();
|
|
||||||
throw new Error();
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
map((response) => {
|
|
||||||
return {
|
|
||||||
blockCount: parseInt(response.headers.get('x-total-count'), 10),
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
retryWhen((errors) => errors.pipe(
|
|
||||||
delay(60000)
|
|
||||||
))
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
share()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
prepareChartOptions(data) {
|
prepareChartOptions(data) {
|
||||||
@ -256,6 +288,7 @@ export class HashrateChartPoolsComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
}],
|
}],
|
||||||
};
|
};
|
||||||
|
this.cd.markForCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
onChartInit(ec) {
|
onChartInit(ec) {
|
||||||
|
@ -53,7 +53,10 @@
|
|||||||
<a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a>
|
<a class="nav-link" [routerLink]="['/' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'tachometer-alt']" [fixedWidth]="true" i18n-title="master-page.dashboard" title="Dashboard"></fa-icon></a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="stateService.env.ACCELERATOR">
|
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-home" *ngIf="stateService.env.ACCELERATOR">
|
||||||
<a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.accelerator-dashboard" title="Accelerator Dashboard"></fa-icon></a>
|
<a class="nav-link" [routerLink]="['/acceleration' | relativeUrl]" (click)="collapse()">
|
||||||
|
<fa-icon [icon]="['fas', 'rocket']" [fixedWidth]="true" i18n-title="master-page.accelerator-dashboard" title="Accelerator Dashboard"></fa-icon>
|
||||||
|
<span class="badge badge-pill badge-warning beta" i18n="beta">beta</span>
|
||||||
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD">
|
<li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}" id="btn-pools" *ngIf="stateService.env.MINING_DASHBOARD">
|
||||||
<a class="nav-link" [routerLink]="['/mining' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="mining.mining-dashboard" title="Mining Dashboard"></fa-icon></a>
|
<a class="nav-link" [routerLink]="['/mining' | relativeUrl]" (click)="collapse()"><fa-icon [icon]="['fas', 'hammer']" [fixedWidth]="true" i18n-title="mining.mining-dashboard" title="Mining Dashboard"></fa-icon></a>
|
||||||
|
@ -211,7 +211,15 @@ nav {
|
|||||||
margin: 24px 0px 0px -15px;
|
margin: 24px 0px 0px -15px;
|
||||||
font-size: 8px;
|
font-size: 8px;
|
||||||
@media (max-width: 767.98px) {
|
@media (max-width: 767.98px) {
|
||||||
margin: 33px 0px 0px -19px;
|
margin: 30px 0px 0px -19px;
|
||||||
|
font-size: 7px;
|
||||||
|
}
|
||||||
|
@media (max-width: 3429px) {
|
||||||
|
margin: 25px 0px 0px -19px;
|
||||||
|
font-size: 7px;
|
||||||
|
}
|
||||||
|
@media (max-width: 369px) {
|
||||||
|
margin: 20px 0px 0px -19px;
|
||||||
font-size: 7px;
|
font-size: 7px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ import { dates } from '../../shared/i18n/dates';
|
|||||||
export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
interval: number;
|
interval: number;
|
||||||
text: string;
|
text: string;
|
||||||
units: string[] = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second'];
|
|
||||||
precisionThresholds = {
|
precisionThresholds = {
|
||||||
year: 100,
|
year: 100,
|
||||||
month: 18,
|
month: 18,
|
||||||
@ -29,6 +28,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
@Input() fixedRender = false;
|
@Input() fixedRender = false;
|
||||||
@Input() relative = false;
|
@Input() relative = false;
|
||||||
@Input() precision: number = 0;
|
@Input() precision: number = 0;
|
||||||
|
@Input() numUnits: number = 1;
|
||||||
|
@Input() units: string[] = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second'];
|
||||||
@Input() minUnit: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' = 'second';
|
@Input() minUnit: 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' = 'second';
|
||||||
@Input() fractionDigits: number = 0;
|
@Input() fractionDigits: number = 0;
|
||||||
|
|
||||||
@ -94,6 +95,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let counter: number;
|
let counter: number;
|
||||||
|
const result = [];
|
||||||
|
let usedUnits = 0;
|
||||||
for (const [index, unit] of this.units.entries()) {
|
for (const [index, unit] of this.units.entries()) {
|
||||||
let precisionUnit = this.units[Math.min(this.units.length - 1, index + this.precision)];
|
let precisionUnit = this.units[Math.min(this.units.length - 1, index + this.precision)];
|
||||||
counter = Math.floor(seconds / this.intervals[unit]);
|
counter = Math.floor(seconds / this.intervals[unit]);
|
||||||
@ -105,16 +108,38 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
counter = Math.max(1, counter);
|
counter = Math.max(1, counter);
|
||||||
}
|
}
|
||||||
if (counter > 0) {
|
if (counter > 0) {
|
||||||
let rounded = Math.round(seconds / this.intervals[precisionUnit]);
|
let rounded;
|
||||||
if (this.fractionDigits) {
|
const roundFactor = Math.pow(10,this.fractionDigits || 0);
|
||||||
const roundFactor = Math.pow(10,this.fractionDigits);
|
if (this.kind === 'until' && usedUnits < this.numUnits) {
|
||||||
|
rounded = Math.floor((seconds / this.intervals[precisionUnit]) * roundFactor) / roundFactor;
|
||||||
|
} else {
|
||||||
rounded = Math.round((seconds / this.intervals[precisionUnit]) * roundFactor) / roundFactor;
|
rounded = Math.round((seconds / this.intervals[precisionUnit]) * roundFactor) / roundFactor;
|
||||||
}
|
}
|
||||||
const dateStrings = dates(rounded);
|
if (this.kind !== 'until' || this.numUnits === 1) {
|
||||||
switch (this.kind) {
|
return this.formatTime(this.kind, precisionUnit, rounded);
|
||||||
|
} else {
|
||||||
|
if (!usedUnits) {
|
||||||
|
result.push(this.formatTime(this.kind, precisionUnit, rounded));
|
||||||
|
} else {
|
||||||
|
result.push(this.formatTime('', precisionUnit, rounded));
|
||||||
|
}
|
||||||
|
seconds -= (rounded * this.intervals[precisionUnit]);
|
||||||
|
usedUnits++;
|
||||||
|
if (usedUnits >= this.numUnits) {
|
||||||
|
return result.join(', ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result.join(', ');
|
||||||
|
}
|
||||||
|
|
||||||
|
private formatTime(kind, unit, number): string {
|
||||||
|
const dateStrings = dates(number);
|
||||||
|
switch (kind) {
|
||||||
case 'since':
|
case 'since':
|
||||||
if (rounded === 1) {
|
if (number === 1) {
|
||||||
switch (precisionUnit) { // singular (1 day)
|
switch (unit) { // singular (1 day)
|
||||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYear}:DATE: ago`; break;
|
case 'year': return $localize`:@@time-since:${dateStrings.i18nYear}:DATE: ago`; break;
|
||||||
case 'month': return $localize`:@@time-since:${dateStrings.i18nMonth}:DATE: ago`; break;
|
case 'month': return $localize`:@@time-since:${dateStrings.i18nMonth}:DATE: ago`; break;
|
||||||
case 'week': return $localize`:@@time-since:${dateStrings.i18nWeek}:DATE: ago`; break;
|
case 'week': return $localize`:@@time-since:${dateStrings.i18nWeek}:DATE: ago`; break;
|
||||||
@ -124,7 +149,7 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
case 'second': return $localize`:@@time-since:${dateStrings.i18nSecond}:DATE: ago`; break;
|
case 'second': return $localize`:@@time-since:${dateStrings.i18nSecond}:DATE: ago`; break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (precisionUnit) { // plural (2 days)
|
switch (unit) { // plural (2 days)
|
||||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYears}:DATE: ago`; break;
|
case 'year': return $localize`:@@time-since:${dateStrings.i18nYears}:DATE: ago`; break;
|
||||||
case 'month': return $localize`:@@time-since:${dateStrings.i18nMonths}:DATE: ago`; break;
|
case 'month': return $localize`:@@time-since:${dateStrings.i18nMonths}:DATE: ago`; break;
|
||||||
case 'week': return $localize`:@@time-since:${dateStrings.i18nWeeks}:DATE: ago`; break;
|
case 'week': return $localize`:@@time-since:${dateStrings.i18nWeeks}:DATE: ago`; break;
|
||||||
@ -136,8 +161,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'until':
|
case 'until':
|
||||||
if (rounded === 1) {
|
if (number === 1) {
|
||||||
switch (precisionUnit) { // singular (In ~1 day)
|
switch (unit) { // singular (In ~1 day)
|
||||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYear}:DATE:`; break;
|
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYear}:DATE:`; break;
|
||||||
case 'month': return $localize`:@@time-until:In ~${dateStrings.i18nMonth}:DATE:`; break;
|
case 'month': return $localize`:@@time-until:In ~${dateStrings.i18nMonth}:DATE:`; break;
|
||||||
case 'week': return $localize`:@@time-until:In ~${dateStrings.i18nWeek}:DATE:`; break;
|
case 'week': return $localize`:@@time-until:In ~${dateStrings.i18nWeek}:DATE:`; break;
|
||||||
@ -147,7 +172,7 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSecond}:DATE:`;
|
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSecond}:DATE:`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (precisionUnit) { // plural (In ~2 days)
|
switch (unit) { // plural (In ~2 days)
|
||||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYears}:DATE:`; break;
|
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYears}:DATE:`; break;
|
||||||
case 'month': return $localize`:@@time-until:In ~${dateStrings.i18nMonths}:DATE:`; break;
|
case 'month': return $localize`:@@time-until:In ~${dateStrings.i18nMonths}:DATE:`; break;
|
||||||
case 'week': return $localize`:@@time-until:In ~${dateStrings.i18nWeeks}:DATE:`; break;
|
case 'week': return $localize`:@@time-until:In ~${dateStrings.i18nWeeks}:DATE:`; break;
|
||||||
@ -159,8 +184,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'span':
|
case 'span':
|
||||||
if (rounded === 1) {
|
if (number === 1) {
|
||||||
switch (precisionUnit) { // singular (1 day)
|
switch (unit) { // singular (1 day)
|
||||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYear}:DATE:`; break;
|
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYear}:DATE:`; break;
|
||||||
case 'month': return $localize`:@@time-span:After ${dateStrings.i18nMonth}:DATE:`; break;
|
case 'month': return $localize`:@@time-span:After ${dateStrings.i18nMonth}:DATE:`; break;
|
||||||
case 'week': return $localize`:@@time-span:After ${dateStrings.i18nWeek}:DATE:`; break;
|
case 'week': return $localize`:@@time-span:After ${dateStrings.i18nWeek}:DATE:`; break;
|
||||||
@ -170,7 +195,7 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSecond}:DATE:`; break;
|
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSecond}:DATE:`; break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (precisionUnit) { // plural (2 days)
|
switch (unit) { // plural (2 days)
|
||||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYears}:DATE:`; break;
|
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYears}:DATE:`; break;
|
||||||
case 'month': return $localize`:@@time-span:After ${dateStrings.i18nMonths}:DATE:`; break;
|
case 'month': return $localize`:@@time-span:After ${dateStrings.i18nMonths}:DATE:`; break;
|
||||||
case 'week': return $localize`:@@time-span:After ${dateStrings.i18nWeeks}:DATE:`; break;
|
case 'week': return $localize`:@@time-span:After ${dateStrings.i18nWeeks}:DATE:`; break;
|
||||||
@ -182,8 +207,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (rounded === 1) {
|
if (number === 1) {
|
||||||
switch (precisionUnit) { // singular (1 day)
|
switch (unit) { // singular (1 day)
|
||||||
case 'year': return dateStrings.i18nYear; break;
|
case 'year': return dateStrings.i18nYear; break;
|
||||||
case 'month': return dateStrings.i18nMonth; break;
|
case 'month': return dateStrings.i18nMonth; break;
|
||||||
case 'week': return dateStrings.i18nWeek; break;
|
case 'week': return dateStrings.i18nWeek; break;
|
||||||
@ -193,7 +218,7 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
case 'second': return dateStrings.i18nSecond; break;
|
case 'second': return dateStrings.i18nSecond; break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (precisionUnit) { // plural (2 days)
|
switch (unit) { // plural (2 days)
|
||||||
case 'year': return dateStrings.i18nYears; break;
|
case 'year': return dateStrings.i18nYears; break;
|
||||||
case 'month': return dateStrings.i18nMonths; break;
|
case 'month': return dateStrings.i18nMonths; break;
|
||||||
case 'week': return dateStrings.i18nWeeks; break;
|
case 'week': return dateStrings.i18nWeeks; break;
|
||||||
@ -205,7 +230,4 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ const routes: Routes = [
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'acceleration-list',
|
path: 'acceleration/list',
|
||||||
data: { networks: ['bitcoin'] },
|
data: { networks: ['bitcoin'] },
|
||||||
component: AccelerationsListComponent,
|
component: AccelerationsListComponent,
|
||||||
},
|
},
|
||||||
|
@ -25,30 +25,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquid",
|
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquid",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3001",
|
|
||||||
"http://node202.va1.mempool.space:3001",
|
|
||||||
"http://node203.va1.mempool.space:3001",
|
|
||||||
"http://node204.va1.mempool.space:3001",
|
|
||||||
"http://node205.va1.mempool.space:3001",
|
|
||||||
"http://node206.va1.mempool.space:3001",
|
|
||||||
"http://node201.fmt.mempool.space:3001",
|
"http://node201.fmt.mempool.space:3001",
|
||||||
"http://node202.fmt.mempool.space:3001",
|
"http://node202.fmt.mempool.space:3001",
|
||||||
"http://node203.fmt.mempool.space:3001",
|
"http://node203.fmt.mempool.space:3001",
|
||||||
"http://node204.fmt.mempool.space:3001",
|
"http://node204.fmt.mempool.space:3001",
|
||||||
"http://node205.fmt.mempool.space:3001",
|
"http://node205.fmt.mempool.space:3001",
|
||||||
"http://node206.fmt.mempool.space:3001",
|
"http://node206.fmt.mempool.space:3001",
|
||||||
|
"http://node201.va1.mempool.space:3001",
|
||||||
|
"http://node202.va1.mempool.space:3001",
|
||||||
|
"http://node203.va1.mempool.space:3001",
|
||||||
|
"http://node204.va1.mempool.space:3001",
|
||||||
|
"http://node205.va1.mempool.space:3001",
|
||||||
|
"http://node206.va1.mempool.space:3001",
|
||||||
|
"http://node207.va1.mempool.space:3001",
|
||||||
|
"http://node208.va1.mempool.space:3001",
|
||||||
|
"http://node209.va1.mempool.space:3001",
|
||||||
|
"http://node210.va1.mempool.space:3001",
|
||||||
|
"http://node211.va1.mempool.space:3001",
|
||||||
|
"http://node212.va1.mempool.space:3001",
|
||||||
|
"http://node213.va1.mempool.space:3001",
|
||||||
|
"http://node214.va1.mempool.space:3001",
|
||||||
"http://node201.fra.mempool.space:3001",
|
"http://node201.fra.mempool.space:3001",
|
||||||
"http://node202.fra.mempool.space:3001",
|
"http://node202.fra.mempool.space:3001",
|
||||||
"http://node203.fra.mempool.space:3001",
|
"http://node203.fra.mempool.space:3001",
|
||||||
"http://node204.fra.mempool.space:3001",
|
"http://node204.fra.mempool.space:3001",
|
||||||
"http://node205.fra.mempool.space:3001",
|
"http://node205.fra.mempool.space:3001",
|
||||||
"http://node206.fra.mempool.space:3001",
|
"http://node206.fra.mempool.space:3001",
|
||||||
|
"http://node207.fra.mempool.space:3001",
|
||||||
|
"http://node208.fra.mempool.space:3001",
|
||||||
|
"http://node209.fra.mempool.space:3001",
|
||||||
|
"http://node210.fra.mempool.space:3001",
|
||||||
|
"http://node211.fra.mempool.space:3001",
|
||||||
|
"http://node212.fra.mempool.space:3001",
|
||||||
|
"http://node213.fra.mempool.space:3001",
|
||||||
|
"http://node214.fra.mempool.space:3001",
|
||||||
"http://node201.tk7.mempool.space:3001",
|
"http://node201.tk7.mempool.space:3001",
|
||||||
"http://node202.tk7.mempool.space:3001",
|
"http://node202.tk7.mempool.space:3001",
|
||||||
"http://node203.tk7.mempool.space:3001",
|
"http://node203.tk7.mempool.space:3001",
|
||||||
"http://node204.tk7.mempool.space:3001",
|
"http://node204.tk7.mempool.space:3001",
|
||||||
"http://node205.tk7.mempool.space:3001",
|
"http://node205.tk7.mempool.space:3001",
|
||||||
"http://node206.tk7.mempool.space:3001"
|
"http://node206.tk7.mempool.space:3001",
|
||||||
|
"http://node207.tk7.mempool.space:3001",
|
||||||
|
"http://node208.tk7.mempool.space:3001",
|
||||||
|
"http://node209.tk7.mempool.space:3001",
|
||||||
|
"http://node210.tk7.mempool.space:3001",
|
||||||
|
"http://node211.tk7.mempool.space:3001",
|
||||||
|
"http://node212.tk7.mempool.space:3001",
|
||||||
|
"http://node213.tk7.mempool.space:3001",
|
||||||
|
"http://node214.tk7.mempool.space:3001"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DATABASE": {
|
"DATABASE": {
|
||||||
|
@ -25,30 +25,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquidtestnet",
|
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquidtestnet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3004",
|
|
||||||
"http://node202.va1.mempool.space:3004",
|
|
||||||
"http://node203.va1.mempool.space:3004",
|
|
||||||
"http://node204.va1.mempool.space:3004",
|
|
||||||
"http://node205.va1.mempool.space:3004",
|
|
||||||
"http://node206.va1.mempool.space:3004",
|
|
||||||
"http://node201.fmt.mempool.space:3004",
|
"http://node201.fmt.mempool.space:3004",
|
||||||
"http://node202.fmt.mempool.space:3004",
|
"http://node202.fmt.mempool.space:3004",
|
||||||
"http://node203.fmt.mempool.space:3004",
|
"http://node203.fmt.mempool.space:3004",
|
||||||
"http://node204.fmt.mempool.space:3004",
|
"http://node204.fmt.mempool.space:3004",
|
||||||
"http://node205.fmt.mempool.space:3004",
|
"http://node205.fmt.mempool.space:3004",
|
||||||
"http://node206.fmt.mempool.space:3004",
|
"http://node206.fmt.mempool.space:3004",
|
||||||
|
"http://node201.va1.mempool.space:3004",
|
||||||
|
"http://node202.va1.mempool.space:3004",
|
||||||
|
"http://node203.va1.mempool.space:3004",
|
||||||
|
"http://node204.va1.mempool.space:3004",
|
||||||
|
"http://node205.va1.mempool.space:3004",
|
||||||
|
"http://node206.va1.mempool.space:3004",
|
||||||
|
"http://node207.va1.mempool.space:3004",
|
||||||
|
"http://node208.va1.mempool.space:3004",
|
||||||
|
"http://node209.va1.mempool.space:3004",
|
||||||
|
"http://node210.va1.mempool.space:3004",
|
||||||
|
"http://node211.va1.mempool.space:3004",
|
||||||
|
"http://node212.va1.mempool.space:3004",
|
||||||
|
"http://node213.va1.mempool.space:3004",
|
||||||
|
"http://node214.va1.mempool.space:3004",
|
||||||
"http://node201.fra.mempool.space:3004",
|
"http://node201.fra.mempool.space:3004",
|
||||||
"http://node202.fra.mempool.space:3004",
|
"http://node202.fra.mempool.space:3004",
|
||||||
"http://node203.fra.mempool.space:3004",
|
"http://node203.fra.mempool.space:3004",
|
||||||
"http://node204.fra.mempool.space:3004",
|
"http://node204.fra.mempool.space:3004",
|
||||||
"http://node205.fra.mempool.space:3004",
|
"http://node205.fra.mempool.space:3004",
|
||||||
"http://node206.fra.mempool.space:3004",
|
"http://node206.fra.mempool.space:3004",
|
||||||
|
"http://node207.fra.mempool.space:3004",
|
||||||
|
"http://node208.fra.mempool.space:3004",
|
||||||
|
"http://node209.fra.mempool.space:3004",
|
||||||
|
"http://node210.fra.mempool.space:3004",
|
||||||
|
"http://node211.fra.mempool.space:3004",
|
||||||
|
"http://node212.fra.mempool.space:3004",
|
||||||
|
"http://node213.fra.mempool.space:3004",
|
||||||
|
"http://node214.fra.mempool.space:3004",
|
||||||
"http://node201.tk7.mempool.space:3004",
|
"http://node201.tk7.mempool.space:3004",
|
||||||
"http://node202.tk7.mempool.space:3004",
|
"http://node202.tk7.mempool.space:3004",
|
||||||
"http://node203.tk7.mempool.space:3004",
|
"http://node203.tk7.mempool.space:3004",
|
||||||
"http://node204.tk7.mempool.space:3004",
|
"http://node204.tk7.mempool.space:3004",
|
||||||
"http://node205.tk7.mempool.space:3004",
|
"http://node205.tk7.mempool.space:3004",
|
||||||
"http://node206.tk7.mempool.space:3004"
|
"http://node206.tk7.mempool.space:3004",
|
||||||
|
"http://node207.tk7.mempool.space:3004",
|
||||||
|
"http://node208.tk7.mempool.space:3004",
|
||||||
|
"http://node209.tk7.mempool.space:3004",
|
||||||
|
"http://node210.tk7.mempool.space:3004",
|
||||||
|
"http://node211.tk7.mempool.space:3004",
|
||||||
|
"http://node212.tk7.mempool.space:3004",
|
||||||
|
"http://node213.tk7.mempool.space:3004",
|
||||||
|
"http://node214.tk7.mempool.space:3004"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DATABASE": {
|
"DATABASE": {
|
||||||
|
@ -18,30 +18,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3000",
|
|
||||||
"http://node202.va1.mempool.space:3000",
|
|
||||||
"http://node203.va1.mempool.space:3000",
|
|
||||||
"http://node204.va1.mempool.space:3000",
|
|
||||||
"http://node205.va1.mempool.space:3000",
|
|
||||||
"http://node206.va1.mempool.space:3000",
|
|
||||||
"http://node201.fmt.mempool.space:3000",
|
"http://node201.fmt.mempool.space:3000",
|
||||||
"http://node202.fmt.mempool.space:3000",
|
"http://node202.fmt.mempool.space:3000",
|
||||||
"http://node203.fmt.mempool.space:3000",
|
"http://node203.fmt.mempool.space:3000",
|
||||||
"http://node204.fmt.mempool.space:3000",
|
"http://node204.fmt.mempool.space:3000",
|
||||||
"http://node205.fmt.mempool.space:3000",
|
"http://node205.fmt.mempool.space:3000",
|
||||||
"http://node206.fmt.mempool.space:3000",
|
"http://node206.fmt.mempool.space:3000",
|
||||||
|
"http://node201.va1.mempool.space:3000",
|
||||||
|
"http://node202.va1.mempool.space:3000",
|
||||||
|
"http://node203.va1.mempool.space:3000",
|
||||||
|
"http://node204.va1.mempool.space:3000",
|
||||||
|
"http://node205.va1.mempool.space:3000",
|
||||||
|
"http://node206.va1.mempool.space:3000",
|
||||||
|
"http://node207.va1.mempool.space:3000",
|
||||||
|
"http://node208.va1.mempool.space:3000",
|
||||||
|
"http://node209.va1.mempool.space:3000",
|
||||||
|
"http://node210.va1.mempool.space:3000",
|
||||||
|
"http://node211.va1.mempool.space:3000",
|
||||||
|
"http://node212.va1.mempool.space:3000",
|
||||||
|
"http://node213.va1.mempool.space:3000",
|
||||||
|
"http://node214.va1.mempool.space:3000",
|
||||||
"http://node201.fra.mempool.space:3000",
|
"http://node201.fra.mempool.space:3000",
|
||||||
"http://node202.fra.mempool.space:3000",
|
"http://node202.fra.mempool.space:3000",
|
||||||
"http://node203.fra.mempool.space:3000",
|
"http://node203.fra.mempool.space:3000",
|
||||||
"http://node204.fra.mempool.space:3000",
|
"http://node204.fra.mempool.space:3000",
|
||||||
"http://node205.fra.mempool.space:3000",
|
"http://node205.fra.mempool.space:3000",
|
||||||
"http://node206.fra.mempool.space:3000",
|
"http://node206.fra.mempool.space:3000",
|
||||||
|
"http://node207.fra.mempool.space:3000",
|
||||||
|
"http://node208.fra.mempool.space:3000",
|
||||||
|
"http://node209.fra.mempool.space:3000",
|
||||||
|
"http://node210.fra.mempool.space:3000",
|
||||||
|
"http://node211.fra.mempool.space:3000",
|
||||||
|
"http://node212.fra.mempool.space:3000",
|
||||||
|
"http://node213.fra.mempool.space:3000",
|
||||||
|
"http://node214.fra.mempool.space:3000",
|
||||||
"http://node201.tk7.mempool.space:3000",
|
"http://node201.tk7.mempool.space:3000",
|
||||||
"http://node202.tk7.mempool.space:3000",
|
"http://node202.tk7.mempool.space:3000",
|
||||||
"http://node203.tk7.mempool.space:3000",
|
"http://node203.tk7.mempool.space:3000",
|
||||||
"http://node204.tk7.mempool.space:3000",
|
"http://node204.tk7.mempool.space:3000",
|
||||||
"http://node205.tk7.mempool.space:3000",
|
"http://node205.tk7.mempool.space:3000",
|
||||||
"http://node206.tk7.mempool.space:3000"
|
"http://node206.tk7.mempool.space:3000",
|
||||||
|
"http://node207.tk7.mempool.space:3000",
|
||||||
|
"http://node208.tk7.mempool.space:3000",
|
||||||
|
"http://node209.tk7.mempool.space:3000",
|
||||||
|
"http://node210.tk7.mempool.space:3000",
|
||||||
|
"http://node211.tk7.mempool.space:3000",
|
||||||
|
"http://node212.tk7.mempool.space:3000",
|
||||||
|
"http://node213.tk7.mempool.space:3000",
|
||||||
|
"http://node214.tk7.mempool.space:3000"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LIGHTNING": {
|
"LIGHTNING": {
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
"POLL_RATE_MS": 1000,
|
"POLL_RATE_MS": 1000,
|
||||||
"INDEXING_BLOCKS_AMOUNT": -1,
|
"INDEXING_BLOCKS_AMOUNT": -1,
|
||||||
"BLOCKS_SUMMARIES_INDEXING": true,
|
"BLOCKS_SUMMARIES_INDEXING": true,
|
||||||
|
"GOGGLES_INDEXING": true,
|
||||||
"AUDIT": true,
|
"AUDIT": true,
|
||||||
"CPFP_INDEXING": true,
|
"CPFP_INDEXING": true,
|
||||||
"ADVANCED_GBT_AUDIT": true,
|
"ADVANCED_GBT_AUDIT": true,
|
||||||
@ -38,30 +39,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3000",
|
|
||||||
"http://node202.va1.mempool.space:3000",
|
|
||||||
"http://node203.va1.mempool.space:3000",
|
|
||||||
"http://node204.va1.mempool.space:3000",
|
|
||||||
"http://node205.va1.mempool.space:3000",
|
|
||||||
"http://node206.va1.mempool.space:3000",
|
|
||||||
"http://node201.fmt.mempool.space:3000",
|
"http://node201.fmt.mempool.space:3000",
|
||||||
"http://node202.fmt.mempool.space:3000",
|
"http://node202.fmt.mempool.space:3000",
|
||||||
"http://node203.fmt.mempool.space:3000",
|
"http://node203.fmt.mempool.space:3000",
|
||||||
"http://node204.fmt.mempool.space:3000",
|
"http://node204.fmt.mempool.space:3000",
|
||||||
"http://node205.fmt.mempool.space:3000",
|
"http://node205.fmt.mempool.space:3000",
|
||||||
"http://node206.fmt.mempool.space:3000",
|
"http://node206.fmt.mempool.space:3000",
|
||||||
|
"http://node201.va1.mempool.space:3000",
|
||||||
|
"http://node202.va1.mempool.space:3000",
|
||||||
|
"http://node203.va1.mempool.space:3000",
|
||||||
|
"http://node204.va1.mempool.space:3000",
|
||||||
|
"http://node205.va1.mempool.space:3000",
|
||||||
|
"http://node206.va1.mempool.space:3000",
|
||||||
|
"http://node207.va1.mempool.space:3000",
|
||||||
|
"http://node208.va1.mempool.space:3000",
|
||||||
|
"http://node209.va1.mempool.space:3000",
|
||||||
|
"http://node210.va1.mempool.space:3000",
|
||||||
|
"http://node211.va1.mempool.space:3000",
|
||||||
|
"http://node212.va1.mempool.space:3000",
|
||||||
|
"http://node213.va1.mempool.space:3000",
|
||||||
|
"http://node214.va1.mempool.space:3000",
|
||||||
"http://node201.fra.mempool.space:3000",
|
"http://node201.fra.mempool.space:3000",
|
||||||
"http://node202.fra.mempool.space:3000",
|
"http://node202.fra.mempool.space:3000",
|
||||||
"http://node203.fra.mempool.space:3000",
|
"http://node203.fra.mempool.space:3000",
|
||||||
"http://node204.fra.mempool.space:3000",
|
"http://node204.fra.mempool.space:3000",
|
||||||
"http://node205.fra.mempool.space:3000",
|
"http://node205.fra.mempool.space:3000",
|
||||||
"http://node206.fra.mempool.space:3000",
|
"http://node206.fra.mempool.space:3000",
|
||||||
|
"http://node207.fra.mempool.space:3000",
|
||||||
|
"http://node208.fra.mempool.space:3000",
|
||||||
|
"http://node209.fra.mempool.space:3000",
|
||||||
|
"http://node210.fra.mempool.space:3000",
|
||||||
|
"http://node211.fra.mempool.space:3000",
|
||||||
|
"http://node212.fra.mempool.space:3000",
|
||||||
|
"http://node213.fra.mempool.space:3000",
|
||||||
|
"http://node214.fra.mempool.space:3000",
|
||||||
"http://node201.tk7.mempool.space:3000",
|
"http://node201.tk7.mempool.space:3000",
|
||||||
"http://node202.tk7.mempool.space:3000",
|
"http://node202.tk7.mempool.space:3000",
|
||||||
"http://node203.tk7.mempool.space:3000",
|
"http://node203.tk7.mempool.space:3000",
|
||||||
"http://node204.tk7.mempool.space:3000",
|
"http://node204.tk7.mempool.space:3000",
|
||||||
"http://node205.tk7.mempool.space:3000",
|
"http://node205.tk7.mempool.space:3000",
|
||||||
"http://node206.tk7.mempool.space:3000"
|
"http://node206.tk7.mempool.space:3000",
|
||||||
|
"http://node207.tk7.mempool.space:3000",
|
||||||
|
"http://node208.tk7.mempool.space:3000",
|
||||||
|
"http://node209.tk7.mempool.space:3000",
|
||||||
|
"http://node210.tk7.mempool.space:3000",
|
||||||
|
"http://node211.tk7.mempool.space:3000",
|
||||||
|
"http://node212.tk7.mempool.space:3000",
|
||||||
|
"http://node213.tk7.mempool.space:3000",
|
||||||
|
"http://node214.tk7.mempool.space:3000"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DATABASE": {
|
"DATABASE": {
|
||||||
@ -81,30 +106,54 @@
|
|||||||
"AUDIT": true,
|
"AUDIT": true,
|
||||||
"AUDIT_START_HEIGHT": 774000,
|
"AUDIT_START_HEIGHT": 774000,
|
||||||
"SERVERS": [
|
"SERVERS": [
|
||||||
"node201.va1.mempool.space",
|
|
||||||
"node202.va1.mempool.space",
|
|
||||||
"node203.va1.mempool.space",
|
|
||||||
"node204.va1.mempool.space",
|
|
||||||
"node205.va1.mempool.space",
|
|
||||||
"node206.va1.mempool.space",
|
|
||||||
"node201.fmt.mempool.space",
|
"node201.fmt.mempool.space",
|
||||||
"node202.fmt.mempool.space",
|
"node202.fmt.mempool.space",
|
||||||
"node203.fmt.mempool.space",
|
"node203.fmt.mempool.space",
|
||||||
"node204.fmt.mempool.space",
|
"node204.fmt.mempool.space",
|
||||||
"node205.fmt.mempool.space",
|
"node205.fmt.mempool.space",
|
||||||
"node206.fmt.mempool.space",
|
"node206.fmt.mempool.space",
|
||||||
|
"node201.va1.mempool.space",
|
||||||
|
"node202.va1.mempool.space",
|
||||||
|
"node203.va1.mempool.space",
|
||||||
|
"node204.va1.mempool.space",
|
||||||
|
"node205.va1.mempool.space",
|
||||||
|
"node206.va1.mempool.space",
|
||||||
|
"node207.va1.mempool.space",
|
||||||
|
"node208.va1.mempool.space",
|
||||||
|
"node209.va1.mempool.space",
|
||||||
|
"node210.va1.mempool.space",
|
||||||
|
"node211.va1.mempool.space",
|
||||||
|
"node212.va1.mempool.space",
|
||||||
|
"node213.va1.mempool.space",
|
||||||
|
"node214.va1.mempool.space",
|
||||||
"node201.fra.mempool.space",
|
"node201.fra.mempool.space",
|
||||||
"node202.fra.mempool.space",
|
"node202.fra.mempool.space",
|
||||||
"node203.fra.mempool.space",
|
"node203.fra.mempool.space",
|
||||||
"node204.fra.mempool.space",
|
"node204.fra.mempool.space",
|
||||||
"node205.fra.mempool.space",
|
"node205.fra.mempool.space",
|
||||||
"node206.fra.mempool.space",
|
"node206.fra.mempool.space",
|
||||||
|
"node207.fra.mempool.space",
|
||||||
|
"node208.fra.mempool.space",
|
||||||
|
"node209.fra.mempool.space",
|
||||||
|
"node210.fra.mempool.space",
|
||||||
|
"node211.fra.mempool.space",
|
||||||
|
"node212.fra.mempool.space",
|
||||||
|
"node213.fra.mempool.space",
|
||||||
|
"node214.fra.mempool.space",
|
||||||
"node201.tk7.mempool.space",
|
"node201.tk7.mempool.space",
|
||||||
"node202.tk7.mempool.space",
|
"node202.tk7.mempool.space",
|
||||||
"node203.tk7.mempool.space",
|
"node203.tk7.mempool.space",
|
||||||
"node204.tk7.mempool.space",
|
"node204.tk7.mempool.space",
|
||||||
"node205.tk7.mempool.space",
|
"node205.tk7.mempool.space",
|
||||||
"node206.tk7.mempool.space"
|
"node206.tk7.mempool.space",
|
||||||
|
"node207.tk7.mempool.space",
|
||||||
|
"node208.tk7.mempool.space",
|
||||||
|
"node209.tk7.mempool.space",
|
||||||
|
"node210.tk7.mempool.space",
|
||||||
|
"node211.tk7.mempool.space",
|
||||||
|
"node212.tk7.mempool.space",
|
||||||
|
"node213.tk7.mempool.space",
|
||||||
|
"node214.tk7.mempool.space"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"REDIS": {
|
"REDIS": {
|
||||||
|
@ -18,30 +18,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3003",
|
|
||||||
"http://node202.va1.mempool.space:3003",
|
|
||||||
"http://node203.va1.mempool.space:3003",
|
|
||||||
"http://node204.va1.mempool.space:3003",
|
|
||||||
"http://node205.va1.mempool.space:3003",
|
|
||||||
"http://node206.va1.mempool.space:3003",
|
|
||||||
"http://node201.fmt.mempool.space:3003",
|
"http://node201.fmt.mempool.space:3003",
|
||||||
"http://node202.fmt.mempool.space:3003",
|
"http://node202.fmt.mempool.space:3003",
|
||||||
"http://node203.fmt.mempool.space:3003",
|
"http://node203.fmt.mempool.space:3003",
|
||||||
"http://node204.fmt.mempool.space:3003",
|
"http://node204.fmt.mempool.space:3003",
|
||||||
"http://node205.fmt.mempool.space:3003",
|
"http://node205.fmt.mempool.space:3003",
|
||||||
"http://node206.fmt.mempool.space:3003",
|
"http://node206.fmt.mempool.space:3003",
|
||||||
|
"http://node201.va1.mempool.space:3003",
|
||||||
|
"http://node202.va1.mempool.space:3003",
|
||||||
|
"http://node203.va1.mempool.space:3003",
|
||||||
|
"http://node204.va1.mempool.space:3003",
|
||||||
|
"http://node205.va1.mempool.space:3003",
|
||||||
|
"http://node206.va1.mempool.space:3003",
|
||||||
|
"http://node207.va1.mempool.space:3003",
|
||||||
|
"http://node208.va1.mempool.space:3003",
|
||||||
|
"http://node209.va1.mempool.space:3003",
|
||||||
|
"http://node210.va1.mempool.space:3003",
|
||||||
|
"http://node211.va1.mempool.space:3003",
|
||||||
|
"http://node212.va1.mempool.space:3003",
|
||||||
|
"http://node213.va1.mempool.space:3003",
|
||||||
|
"http://node214.va1.mempool.space:3003",
|
||||||
"http://node201.fra.mempool.space:3003",
|
"http://node201.fra.mempool.space:3003",
|
||||||
"http://node202.fra.mempool.space:3003",
|
"http://node202.fra.mempool.space:3003",
|
||||||
"http://node203.fra.mempool.space:3003",
|
"http://node203.fra.mempool.space:3003",
|
||||||
"http://node204.fra.mempool.space:3003",
|
"http://node204.fra.mempool.space:3003",
|
||||||
"http://node205.fra.mempool.space:3003",
|
"http://node205.fra.mempool.space:3003",
|
||||||
"http://node206.fra.mempool.space:3003",
|
"http://node206.fra.mempool.space:3003",
|
||||||
|
"http://node207.fra.mempool.space:3003",
|
||||||
|
"http://node208.fra.mempool.space:3003",
|
||||||
|
"http://node209.fra.mempool.space:3003",
|
||||||
|
"http://node210.fra.mempool.space:3003",
|
||||||
|
"http://node211.fra.mempool.space:3003",
|
||||||
|
"http://node212.fra.mempool.space:3003",
|
||||||
|
"http://node213.fra.mempool.space:3003",
|
||||||
|
"http://node214.fra.mempool.space:3003",
|
||||||
"http://node201.tk7.mempool.space:3003",
|
"http://node201.tk7.mempool.space:3003",
|
||||||
"http://node202.tk7.mempool.space:3003",
|
"http://node202.tk7.mempool.space:3003",
|
||||||
"http://node203.tk7.mempool.space:3003",
|
"http://node203.tk7.mempool.space:3003",
|
||||||
"http://node204.tk7.mempool.space:3003",
|
"http://node204.tk7.mempool.space:3003",
|
||||||
"http://node205.tk7.mempool.space:3003",
|
"http://node205.tk7.mempool.space:3003",
|
||||||
"http://node206.tk7.mempool.space:3003"
|
"http://node206.tk7.mempool.space:3003",
|
||||||
|
"http://node207.tk7.mempool.space:3003",
|
||||||
|
"http://node208.tk7.mempool.space:3003",
|
||||||
|
"http://node209.tk7.mempool.space:3003",
|
||||||
|
"http://node210.tk7.mempool.space:3003",
|
||||||
|
"http://node211.tk7.mempool.space:3003",
|
||||||
|
"http://node212.tk7.mempool.space:3003",
|
||||||
|
"http://node213.tk7.mempool.space:3003",
|
||||||
|
"http://node214.tk7.mempool.space:3003"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LIGHTNING": {
|
"LIGHTNING": {
|
||||||
|
@ -27,30 +27,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3003",
|
|
||||||
"http://node202.va1.mempool.space:3003",
|
|
||||||
"http://node203.va1.mempool.space:3003",
|
|
||||||
"http://node204.va1.mempool.space:3003",
|
|
||||||
"http://node205.va1.mempool.space:3003",
|
|
||||||
"http://node206.va1.mempool.space:3003",
|
|
||||||
"http://node201.fmt.mempool.space:3003",
|
"http://node201.fmt.mempool.space:3003",
|
||||||
"http://node202.fmt.mempool.space:3003",
|
"http://node202.fmt.mempool.space:3003",
|
||||||
"http://node203.fmt.mempool.space:3003",
|
"http://node203.fmt.mempool.space:3003",
|
||||||
"http://node204.fmt.mempool.space:3003",
|
"http://node204.fmt.mempool.space:3003",
|
||||||
"http://node205.fmt.mempool.space:3003",
|
"http://node205.fmt.mempool.space:3003",
|
||||||
"http://node206.fmt.mempool.space:3003",
|
"http://node206.fmt.mempool.space:3003",
|
||||||
|
"http://node201.va1.mempool.space:3003",
|
||||||
|
"http://node202.va1.mempool.space:3003",
|
||||||
|
"http://node203.va1.mempool.space:3003",
|
||||||
|
"http://node204.va1.mempool.space:3003",
|
||||||
|
"http://node205.va1.mempool.space:3003",
|
||||||
|
"http://node206.va1.mempool.space:3003",
|
||||||
|
"http://node207.va1.mempool.space:3003",
|
||||||
|
"http://node208.va1.mempool.space:3003",
|
||||||
|
"http://node209.va1.mempool.space:3003",
|
||||||
|
"http://node210.va1.mempool.space:3003",
|
||||||
|
"http://node211.va1.mempool.space:3003",
|
||||||
|
"http://node212.va1.mempool.space:3003",
|
||||||
|
"http://node213.va1.mempool.space:3003",
|
||||||
|
"http://node214.va1.mempool.space:3003",
|
||||||
"http://node201.fra.mempool.space:3003",
|
"http://node201.fra.mempool.space:3003",
|
||||||
"http://node202.fra.mempool.space:3003",
|
"http://node202.fra.mempool.space:3003",
|
||||||
"http://node203.fra.mempool.space:3003",
|
"http://node203.fra.mempool.space:3003",
|
||||||
"http://node204.fra.mempool.space:3003",
|
"http://node204.fra.mempool.space:3003",
|
||||||
"http://node205.fra.mempool.space:3003",
|
"http://node205.fra.mempool.space:3003",
|
||||||
"http://node206.fra.mempool.space:3003",
|
"http://node206.fra.mempool.space:3003",
|
||||||
|
"http://node207.fra.mempool.space:3003",
|
||||||
|
"http://node208.fra.mempool.space:3003",
|
||||||
|
"http://node209.fra.mempool.space:3003",
|
||||||
|
"http://node210.fra.mempool.space:3003",
|
||||||
|
"http://node211.fra.mempool.space:3003",
|
||||||
|
"http://node212.fra.mempool.space:3003",
|
||||||
|
"http://node213.fra.mempool.space:3003",
|
||||||
|
"http://node214.fra.mempool.space:3003",
|
||||||
"http://node201.tk7.mempool.space:3003",
|
"http://node201.tk7.mempool.space:3003",
|
||||||
"http://node202.tk7.mempool.space:3003",
|
"http://node202.tk7.mempool.space:3003",
|
||||||
"http://node203.tk7.mempool.space:3003",
|
"http://node203.tk7.mempool.space:3003",
|
||||||
"http://node204.tk7.mempool.space:3003",
|
"http://node204.tk7.mempool.space:3003",
|
||||||
"http://node205.tk7.mempool.space:3003",
|
"http://node205.tk7.mempool.space:3003",
|
||||||
"http://node206.tk7.mempool.space:3003"
|
"http://node206.tk7.mempool.space:3003",
|
||||||
|
"http://node207.tk7.mempool.space:3003",
|
||||||
|
"http://node208.tk7.mempool.space:3003",
|
||||||
|
"http://node209.tk7.mempool.space:3003",
|
||||||
|
"http://node210.tk7.mempool.space:3003",
|
||||||
|
"http://node211.tk7.mempool.space:3003",
|
||||||
|
"http://node212.tk7.mempool.space:3003",
|
||||||
|
"http://node213.tk7.mempool.space:3003",
|
||||||
|
"http://node214.tk7.mempool.space:3003"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DATABASE": {
|
"DATABASE": {
|
||||||
|
@ -18,30 +18,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3002",
|
|
||||||
"http://node202.va1.mempool.space:3002",
|
|
||||||
"http://node203.va1.mempool.space:3002",
|
|
||||||
"http://node204.va1.mempool.space:3002",
|
|
||||||
"http://node205.va1.mempool.space:3002",
|
|
||||||
"http://node206.va1.mempool.space:3002",
|
|
||||||
"http://node201.fmt.mempool.space:3002",
|
"http://node201.fmt.mempool.space:3002",
|
||||||
"http://node202.fmt.mempool.space:3002",
|
"http://node202.fmt.mempool.space:3002",
|
||||||
"http://node203.fmt.mempool.space:3002",
|
"http://node203.fmt.mempool.space:3002",
|
||||||
"http://node204.fmt.mempool.space:3002",
|
"http://node204.fmt.mempool.space:3002",
|
||||||
"http://node205.fmt.mempool.space:3002",
|
"http://node205.fmt.mempool.space:3002",
|
||||||
"http://node206.fmt.mempool.space:3002",
|
"http://node206.fmt.mempool.space:3002",
|
||||||
|
"http://node201.va1.mempool.space:3002",
|
||||||
|
"http://node202.va1.mempool.space:3002",
|
||||||
|
"http://node203.va1.mempool.space:3002",
|
||||||
|
"http://node204.va1.mempool.space:3002",
|
||||||
|
"http://node205.va1.mempool.space:3002",
|
||||||
|
"http://node206.va1.mempool.space:3002",
|
||||||
|
"http://node207.va1.mempool.space:3002",
|
||||||
|
"http://node208.va1.mempool.space:3002",
|
||||||
|
"http://node209.va1.mempool.space:3002",
|
||||||
|
"http://node210.va1.mempool.space:3002",
|
||||||
|
"http://node211.va1.mempool.space:3002",
|
||||||
|
"http://node212.va1.mempool.space:3002",
|
||||||
|
"http://node213.va1.mempool.space:3002",
|
||||||
|
"http://node214.va1.mempool.space:3002",
|
||||||
"http://node201.fra.mempool.space:3002",
|
"http://node201.fra.mempool.space:3002",
|
||||||
"http://node202.fra.mempool.space:3002",
|
"http://node202.fra.mempool.space:3002",
|
||||||
"http://node203.fra.mempool.space:3002",
|
"http://node203.fra.mempool.space:3002",
|
||||||
"http://node204.fra.mempool.space:3002",
|
"http://node204.fra.mempool.space:3002",
|
||||||
"http://node205.fra.mempool.space:3002",
|
"http://node205.fra.mempool.space:3002",
|
||||||
"http://node206.fra.mempool.space:3002",
|
"http://node206.fra.mempool.space:3002",
|
||||||
|
"http://node207.fra.mempool.space:3002",
|
||||||
|
"http://node208.fra.mempool.space:3002",
|
||||||
|
"http://node209.fra.mempool.space:3002",
|
||||||
|
"http://node210.fra.mempool.space:3002",
|
||||||
|
"http://node211.fra.mempool.space:3002",
|
||||||
|
"http://node212.fra.mempool.space:3002",
|
||||||
|
"http://node213.fra.mempool.space:3002",
|
||||||
|
"http://node214.fra.mempool.space:3002",
|
||||||
"http://node201.tk7.mempool.space:3002",
|
"http://node201.tk7.mempool.space:3002",
|
||||||
"http://node202.tk7.mempool.space:3002",
|
"http://node202.tk7.mempool.space:3002",
|
||||||
"http://node203.tk7.mempool.space:3002",
|
"http://node203.tk7.mempool.space:3002",
|
||||||
"http://node204.tk7.mempool.space:3002",
|
"http://node204.tk7.mempool.space:3002",
|
||||||
"http://node205.tk7.mempool.space:3002",
|
"http://node205.tk7.mempool.space:3002",
|
||||||
"http://node206.tk7.mempool.space:3002"
|
"http://node206.tk7.mempool.space:3002",
|
||||||
|
"http://node207.tk7.mempool.space:3002",
|
||||||
|
"http://node208.tk7.mempool.space:3002",
|
||||||
|
"http://node209.tk7.mempool.space:3002",
|
||||||
|
"http://node210.tk7.mempool.space:3002",
|
||||||
|
"http://node211.tk7.mempool.space:3002",
|
||||||
|
"http://node212.tk7.mempool.space:3002",
|
||||||
|
"http://node213.tk7.mempool.space:3002",
|
||||||
|
"http://node214.tk7.mempool.space:3002"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"LIGHTNING": {
|
"LIGHTNING": {
|
||||||
|
@ -27,30 +27,54 @@
|
|||||||
"ESPLORA": {
|
"ESPLORA": {
|
||||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
||||||
"FALLBACK": [
|
"FALLBACK": [
|
||||||
"http://node201.va1.mempool.space:3002",
|
|
||||||
"http://node202.va1.mempool.space:3002",
|
|
||||||
"http://node203.va1.mempool.space:3002",
|
|
||||||
"http://node204.va1.mempool.space:3002",
|
|
||||||
"http://node205.va1.mempool.space:3002",
|
|
||||||
"http://node206.va1.mempool.space:3002",
|
|
||||||
"http://node201.fmt.mempool.space:3002",
|
"http://node201.fmt.mempool.space:3002",
|
||||||
"http://node202.fmt.mempool.space:3002",
|
"http://node202.fmt.mempool.space:3002",
|
||||||
"http://node203.fmt.mempool.space:3002",
|
"http://node203.fmt.mempool.space:3002",
|
||||||
"http://node204.fmt.mempool.space:3002",
|
"http://node204.fmt.mempool.space:3002",
|
||||||
"http://node205.fmt.mempool.space:3002",
|
"http://node205.fmt.mempool.space:3002",
|
||||||
"http://node206.fmt.mempool.space:3002",
|
"http://node206.fmt.mempool.space:3002",
|
||||||
|
"http://node201.va1.mempool.space:3002",
|
||||||
|
"http://node202.va1.mempool.space:3002",
|
||||||
|
"http://node203.va1.mempool.space:3002",
|
||||||
|
"http://node204.va1.mempool.space:3002",
|
||||||
|
"http://node205.va1.mempool.space:3002",
|
||||||
|
"http://node206.va1.mempool.space:3002",
|
||||||
|
"http://node207.va1.mempool.space:3002",
|
||||||
|
"http://node208.va1.mempool.space:3002",
|
||||||
|
"http://node209.va1.mempool.space:3002",
|
||||||
|
"http://node210.va1.mempool.space:3002",
|
||||||
|
"http://node211.va1.mempool.space:3002",
|
||||||
|
"http://node212.va1.mempool.space:3002",
|
||||||
|
"http://node213.va1.mempool.space:3002",
|
||||||
|
"http://node214.va1.mempool.space:3002",
|
||||||
"http://node201.fra.mempool.space:3002",
|
"http://node201.fra.mempool.space:3002",
|
||||||
"http://node202.fra.mempool.space:3002",
|
"http://node202.fra.mempool.space:3002",
|
||||||
"http://node203.fra.mempool.space:3002",
|
"http://node203.fra.mempool.space:3002",
|
||||||
"http://node204.fra.mempool.space:3002",
|
"http://node204.fra.mempool.space:3002",
|
||||||
"http://node205.fra.mempool.space:3002",
|
"http://node205.fra.mempool.space:3002",
|
||||||
"http://node206.fra.mempool.space:3002",
|
"http://node206.fra.mempool.space:3002",
|
||||||
|
"http://node207.fra.mempool.space:3002",
|
||||||
|
"http://node208.fra.mempool.space:3002",
|
||||||
|
"http://node209.fra.mempool.space:3002",
|
||||||
|
"http://node210.fra.mempool.space:3002",
|
||||||
|
"http://node211.fra.mempool.space:3002",
|
||||||
|
"http://node212.fra.mempool.space:3002",
|
||||||
|
"http://node213.fra.mempool.space:3002",
|
||||||
|
"http://node214.fra.mempool.space:3002",
|
||||||
"http://node201.tk7.mempool.space:3002",
|
"http://node201.tk7.mempool.space:3002",
|
||||||
"http://node202.tk7.mempool.space:3002",
|
"http://node202.tk7.mempool.space:3002",
|
||||||
"http://node203.tk7.mempool.space:3002",
|
"http://node203.tk7.mempool.space:3002",
|
||||||
"http://node204.tk7.mempool.space:3002",
|
"http://node204.tk7.mempool.space:3002",
|
||||||
"http://node205.tk7.mempool.space:3002",
|
"http://node205.tk7.mempool.space:3002",
|
||||||
"http://node206.tk7.mempool.space:3002"
|
"http://node206.tk7.mempool.space:3002",
|
||||||
|
"http://node207.tk7.mempool.space:3002",
|
||||||
|
"http://node208.tk7.mempool.space:3002",
|
||||||
|
"http://node209.tk7.mempool.space:3002",
|
||||||
|
"http://node210.tk7.mempool.space:3002",
|
||||||
|
"http://node211.tk7.mempool.space:3002",
|
||||||
|
"http://node212.tk7.mempool.space:3002",
|
||||||
|
"http://node213.tk7.mempool.space:3002",
|
||||||
|
"http://node214.tk7.mempool.space:3002"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"DATABASE": {
|
"DATABASE": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user