Merge branch 'master' into nymkappa/mega-branch
This commit is contained in:
commit
f3fd70a846
@ -16,6 +16,7 @@
|
||||
"MEMPOOL_BLOCKS_AMOUNT": 8,
|
||||
"INDEXING_BLOCKS_AMOUNT": 11000,
|
||||
"BLOCKS_SUMMARIES_INDEXING": false,
|
||||
"GOGGLES_INDEXING": false,
|
||||
"USE_SECOND_NODE_FOR_MINFEE": false,
|
||||
"EXTERNAL_ASSETS": [],
|
||||
"EXTERNAL_MAX_RETRY": 1,
|
||||
|
@ -4,6 +4,7 @@
|
||||
"NETWORK": "__MEMPOOL_NETWORK__",
|
||||
"BACKEND": "__MEMPOOL_BACKEND__",
|
||||
"BLOCKS_SUMMARIES_INDEXING": true,
|
||||
"GOGGLES_INDEXING": false,
|
||||
"HTTP_PORT": 1,
|
||||
"SPAWN_CLUSTER_PROCS": 2,
|
||||
"API_URL_PREFIX": "__MEMPOOL_API_URL_PREFIX__",
|
||||
|
@ -17,6 +17,7 @@ describe('Mempool Backend Config', () => {
|
||||
NETWORK: 'mainnet',
|
||||
BACKEND: 'none',
|
||||
BLOCKS_SUMMARIES_INDEXING: false,
|
||||
GOGGLES_INDEXING: false,
|
||||
HTTP_PORT: 8999,
|
||||
SPAWN_CLUSTER_PROCS: 0,
|
||||
API_URL_PREFIX: '/api/v1/',
|
||||
|
@ -566,7 +566,7 @@ class Blocks {
|
||||
*/
|
||||
public async $classifyBlocks(): Promise<void> {
|
||||
// classification requires an esplora backend
|
||||
if (!Common.blocksSummariesIndexingEnabled() || config.MEMPOOL.BACKEND !== 'esplora') {
|
||||
if (!Common.gogglesIndexingEnabled() || config.MEMPOOL.BACKEND !== 'esplora') {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -617,6 +617,7 @@ class Blocks {
|
||||
// classify
|
||||
const { transactions: classifiedTxs } = this.summarizeBlockTransactions(blockHash, cpfpSummary.transactions);
|
||||
await BlocksSummariesRepository.$saveTransactions(height, blockHash, classifiedTxs, 1);
|
||||
await Common.sleep$(250);
|
||||
}
|
||||
if (unclassifiedTemplates[height]) {
|
||||
// classify template
|
||||
@ -656,6 +657,7 @@ class Blocks {
|
||||
});
|
||||
}
|
||||
await BlocksSummariesRepository.$saveTemplate({ height, template: { id: blockHash, transactions: classifiedTemplate }, version: 1 });
|
||||
await Common.sleep$(250);
|
||||
}
|
||||
} catch (e) {
|
||||
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 {
|
||||
return (
|
||||
Common.indexingEnabled() &&
|
||||
|
@ -20,6 +20,7 @@ interface IConfig {
|
||||
MEMPOOL_BLOCKS_AMOUNT: number;
|
||||
INDEXING_BLOCKS_AMOUNT: number;
|
||||
BLOCKS_SUMMARIES_INDEXING: boolean;
|
||||
GOGGLES_INDEXING: boolean;
|
||||
USE_SECOND_NODE_FOR_MINFEE: boolean;
|
||||
EXTERNAL_ASSETS: string[];
|
||||
EXTERNAL_MAX_RETRY: number;
|
||||
@ -175,6 +176,7 @@ const defaults: IConfig = {
|
||||
'MEMPOOL_BLOCKS_AMOUNT': 8,
|
||||
'INDEXING_BLOCKS_AMOUNT': 11000, // 0 = disable indexing, -1 = index all blocks
|
||||
'BLOCKS_SUMMARIES_INDEXING': false,
|
||||
'GOGGLES_INDEXING': false,
|
||||
'USE_SECOND_NODE_FOR_MINFEE': false,
|
||||
'EXTERNAL_ASSETS': [],
|
||||
'EXTERNAL_MAX_RETRY': 1,
|
||||
|
@ -22,6 +22,7 @@
|
||||
"STDOUT_LOG_MIN_PRIORITY": "__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__",
|
||||
"INDEXING_BLOCKS_AMOUNT": __MEMPOOL_INDEXING_BLOCKS_AMOUNT__,
|
||||
"BLOCKS_SUMMARIES_INDEXING": __MEMPOOL_BLOCKS_SUMMARIES_INDEXING__,
|
||||
"GOGGLES_INDEXING": __MEMPOOL_GOGGLES_INDEXING__,
|
||||
"AUTOMATIC_BLOCK_REINDEXING": __MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__,
|
||||
"AUDIT": __MEMPOOL_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_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=11000}
|
||||
__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_EXTERNAL_ASSETS__=${MEMPOOL_EXTERNAL_ASSETS:=[]}
|
||||
__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_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_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_EXTERNAL_ASSETS__!${__MEMPOOL_EXTERNAL_ASSETS__}!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 {
|
||||
this.seoService.setTitle($localize`:@@bcf34abc2d9ed8f45a2f65dd464c46694e9a181e:Acceleration Fees`);
|
||||
this.isLoading = true;
|
||||
if (this.widget) {
|
||||
this.miningWindowPreference = '1m';
|
||||
@ -88,6 +87,7 @@ export class AccelerationFeesGraphComponent implements OnInit, OnDestroy {
|
||||
}),
|
||||
);
|
||||
} else {
|
||||
this.seoService.setTitle($localize`:@@bcf34abc2d9ed8f45a2f65dd464c46694e9a181e:Acceleration Fees`);
|
||||
this.miningWindowPreference = this.miningService.getDefaultTimespan('1w');
|
||||
this.radioGroupForm = this.formBuilder.group({ dateSpan: this.miningWindowPreference });
|
||||
this.radioGroupForm.controls.dateSpan.setValue(this.miningWindowPreference);
|
||||
|
@ -63,66 +63,82 @@ tr, td, th {
|
||||
}
|
||||
|
||||
.txid {
|
||||
width: 25%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
max-width: 30%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.fee-rate {
|
||||
width: 20%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 840px) and (min-width: 768px) {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 410px) {
|
||||
display: none;
|
||||
.fee, .block, .status {
|
||||
width: 15%;
|
||||
|
||||
@media (max-width: 720px) {
|
||||
width: 20%;
|
||||
}
|
||||
}
|
||||
|
||||
.bid {
|
||||
width: 30%;
|
||||
min-width: 150px;
|
||||
@media (max-width: 840px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
.widget {
|
||||
.txid {
|
||||
width: 30%;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
max-width: 30%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media (max-width: 410px) {
|
||||
text-align: start !important;
|
||||
|
||||
.fee-rate {
|
||||
width: 20%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 840px) and (min-width: 768px) {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 410px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.time {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.fee {
|
||||
width: 35%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
.bid {
|
||||
width: 30%;
|
||||
min-width: 150px;
|
||||
@media (max-width: 840px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 410px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
text-align: start !important;
|
||||
|
||||
.time {
|
||||
width: 25%;
|
||||
}
|
||||
}
|
||||
|
||||
.block {
|
||||
width: 20%;
|
||||
}
|
||||
.fee {
|
||||
width: 30%;
|
||||
@media (max-width: 1060px) and (min-width: 768px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
@media (max-width: 500px) {
|
||||
text-align: start !important;
|
||||
}
|
||||
}
|
||||
|
||||
.status {
|
||||
width: 20%
|
||||
.block {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.status {
|
||||
width: 20%
|
||||
}
|
||||
}
|
||||
|
||||
/* Tooltip text */
|
||||
|
@ -80,7 +80,7 @@
|
||||
<div class="col">
|
||||
<div class="card list-card">
|
||||
<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>
|
||||
<span> </span>
|
||||
<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 class="item" *ngIf="showHalving">
|
||||
<h5 class="card-title" i18n="difficulty-box.next-halving" i18n-ngbTooltip="difficulty-box.next-halving"
|
||||
ngbTooltip="Next Halving" placement="bottom" #averagefee [disableTooltip]="!isEllipsisActive(averagefee)">Next Halving</h5>
|
||||
<div class="card-text">
|
||||
<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>
|
||||
<h5 class="card-title" i18n="difficulty-box.next-halving">Next Halving</h5>
|
||||
<div class="card-text" i18n-ngbTooltip="mining.average-fee" [ngbTooltip]="halvingBlocksLeft" [tooltipContext]="{ epochData: epochData }" placement="bottom">
|
||||
<span>{{ timeUntilHalving | date }}</span>
|
||||
<div class="symbol" *ngIf="blocksUntilHalving === 1; else approxTime">
|
||||
<app-time kind="until" [time]="epochData.timeAvg + now" [fastRender]="false" [fixedRender]="true" [precision]="1" minUnit="minute"></app-time>
|
||||
</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>
|
||||
|
||||
<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>
|
||||
<div class="difficulty-skeleton loading-container">
|
||||
<div class="item">
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
|
||||
import { combineLatest, Observable, timer } from 'rxjs';
|
||||
import { map, switchMap } from 'rxjs/operators';
|
||||
import { combineLatest, Observable } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { StateService } from '../../services/state.service';
|
||||
|
||||
interface EpochProgress {
|
||||
@ -15,6 +15,7 @@ interface EpochProgress {
|
||||
previousRetarget: number;
|
||||
blocksUntilHalving: number;
|
||||
timeUntilHalving: number;
|
||||
timeAvg: number;
|
||||
}
|
||||
|
||||
@Component({
|
||||
@ -26,6 +27,9 @@ interface EpochProgress {
|
||||
export class DifficultyMiningComponent implements OnInit {
|
||||
isLoadingWebSocket$: Observable<boolean>;
|
||||
difficultyEpoch$: Observable<EpochProgress>;
|
||||
blocksUntilHalving: number | null = null;
|
||||
timeUntilHalving = 0;
|
||||
now = new Date().getTime();
|
||||
|
||||
@Input() showProgress = true;
|
||||
@Input() showHalving = false;
|
||||
@ -64,8 +68,9 @@ export class DifficultyMiningComponent implements OnInit {
|
||||
colorPreviousAdjustments = '#ffffff66';
|
||||
}
|
||||
|
||||
const blocksUntilHalving = 210000 - (maxHeight % 210000);
|
||||
const timeUntilHalving = new Date().getTime() + (blocksUntilHalving * 600000);
|
||||
this.blocksUntilHalving = 210000 - (maxHeight % 210000);
|
||||
this.timeUntilHalving = new Date().getTime() + (this.blocksUntilHalving * 600000);
|
||||
this.now = new Date().getTime();
|
||||
|
||||
const data = {
|
||||
base: `${da.progressPercent.toFixed(2)}%`,
|
||||
@ -77,8 +82,9 @@ export class DifficultyMiningComponent implements OnInit {
|
||||
newDifficultyHeight: da.nextRetargetHeight,
|
||||
estimatedRetargetDate: da.estimatedRetargetDate,
|
||||
previousRetarget: da.previousRetarget,
|
||||
blocksUntilHalving,
|
||||
timeUntilHalving,
|
||||
blocksUntilHalving: this.blocksUntilHalving,
|
||||
timeUntilHalving: this.timeUntilHalving,
|
||||
timeAvg: da.timeAvg,
|
||||
};
|
||||
return data;
|
||||
})
|
||||
|
@ -11,6 +11,13 @@ import { MiningService } from '../../services/mining.service';
|
||||
import { download } from '../../shared/graphs.utils';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
|
||||
interface Hashrate {
|
||||
timestamp: number;
|
||||
avgHashRate: number;
|
||||
share: number;
|
||||
poolName: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'app-hashrate-chart-pools',
|
||||
templateUrl: './hashrate-chart-pools.component.html',
|
||||
@ -32,6 +39,7 @@ export class HashrateChartPoolsComponent implements OnInit {
|
||||
miningWindowPreference: string;
|
||||
radioGroupForm: UntypedFormGroup;
|
||||
|
||||
hashrates: Hashrate[];
|
||||
chartOptions: EChartsOption = {};
|
||||
chartInitOptions = {
|
||||
renderer: 'svg',
|
||||
@ -87,56 +95,9 @@ export class HashrateChartPoolsComponent implements OnInit {
|
||||
return this.apiService.getHistoricalPoolsHashrate$(timespan)
|
||||
.pipe(
|
||||
tap((response) => {
|
||||
const hashrates = response.body;
|
||||
this.hashrates = response.body;
|
||||
// Prepare series (group all hashrates data point by pool)
|
||||
const grouped = {};
|
||||
for (const hashrate of hashrates) {
|
||||
if (!grouped.hasOwnProperty(hashrate.poolName)) {
|
||||
grouped[hashrate.poolName] = [];
|
||||
}
|
||||
grouped[hashrate.poolName].push(hashrate);
|
||||
}
|
||||
|
||||
const series = [];
|
||||
const legends = [];
|
||||
for (const name in grouped) {
|
||||
series.push({
|
||||
zlevel: 0,
|
||||
stack: 'Total',
|
||||
name: name,
|
||||
showSymbol: false,
|
||||
symbol: 'none',
|
||||
data: grouped[name].map((val) => [val.timestamp * 1000, val.share * 100]),
|
||||
type: 'line',
|
||||
lineStyle: { width: 0 },
|
||||
areaStyle: { opacity: 1 },
|
||||
smooth: true,
|
||||
color: poolsColor[name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()],
|
||||
emphasis: {
|
||||
disabled: true,
|
||||
scale: false,
|
||||
},
|
||||
});
|
||||
|
||||
legends.push({
|
||||
name: name,
|
||||
inactiveColor: 'rgb(110, 112, 121)',
|
||||
textStyle: {
|
||||
color: 'white',
|
||||
},
|
||||
icon: 'roundRect',
|
||||
itemStyle: {
|
||||
color: poolsColor[name.replace(/[^a-zA-Z0-9]/g, "").toLowerCase()],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
this.prepareChartOptions({
|
||||
legends: legends,
|
||||
series: series,
|
||||
});
|
||||
this.isLoading = false;
|
||||
|
||||
const series = this.applyHashrates();
|
||||
if (series.length === 0) {
|
||||
this.cd.markForCheck();
|
||||
throw new Error();
|
||||
@ -156,6 +117,77 @@ export class HashrateChartPoolsComponent implements OnInit {
|
||||
);
|
||||
}
|
||||
|
||||
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 legends = [];
|
||||
for (const name of sortedPools) {
|
||||
const data = sortedTimes.map(({ time, hashrates }) => {
|
||||
return [time * 1000, (hashrates[name]?.share || 0) * 100];
|
||||
});
|
||||
series.push({
|
||||
zlevel: 0,
|
||||
stack: 'Total',
|
||||
name: name,
|
||||
showSymbol: false,
|
||||
symbol: 'none',
|
||||
data,
|
||||
type: 'line',
|
||||
lineStyle: { width: 0 },
|
||||
areaStyle: { opacity: 1 },
|
||||
smooth: true,
|
||||
color: poolsColor[name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase()],
|
||||
emphasis: {
|
||||
disabled: true,
|
||||
scale: false,
|
||||
},
|
||||
});
|
||||
|
||||
legends.push({
|
||||
name: name,
|
||||
inactiveColor: 'rgb(110, 112, 121)',
|
||||
textStyle: {
|
||||
color: 'white',
|
||||
},
|
||||
icon: 'roundRect',
|
||||
itemStyle: {
|
||||
color: poolsColor[name.replace(/[^a-zA-Z0-9]/g, "").toLowerCase()],
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
this.prepareChartOptions({
|
||||
legends: legends,
|
||||
series: series,
|
||||
});
|
||||
this.isLoading = false;
|
||||
|
||||
return series;
|
||||
}
|
||||
|
||||
prepareChartOptions(data) {
|
||||
let title: object;
|
||||
if (data.series.length === 0) {
|
||||
@ -256,6 +288,7 @@ export class HashrateChartPoolsComponent implements OnInit {
|
||||
},
|
||||
}],
|
||||
};
|
||||
this.cd.markForCheck();
|
||||
}
|
||||
|
||||
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>
|
||||
</li>
|
||||
<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 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>
|
||||
|
@ -211,7 +211,15 @@ nav {
|
||||
margin: 24px 0px 0px -15px;
|
||||
font-size: 8px;
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import { dates } from '../../shared/i18n/dates';
|
||||
export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
||||
interval: number;
|
||||
text: string;
|
||||
units: string[] = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second'];
|
||||
precisionThresholds = {
|
||||
year: 100,
|
||||
month: 18,
|
||||
@ -29,6 +28,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
||||
@Input() fixedRender = false;
|
||||
@Input() relative = false;
|
||||
@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() fractionDigits: number = 0;
|
||||
|
||||
@ -94,6 +95,8 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
||||
}
|
||||
|
||||
let counter: number;
|
||||
const result = [];
|
||||
let usedUnits = 0;
|
||||
for (const [index, unit] of this.units.entries()) {
|
||||
let precisionUnit = this.units[Math.min(this.units.length - 1, index + this.precision)];
|
||||
counter = Math.floor(seconds / this.intervals[unit]);
|
||||
@ -105,107 +108,126 @@ export class TimeComponent implements OnInit, OnChanges, OnDestroy {
|
||||
counter = Math.max(1, counter);
|
||||
}
|
||||
if (counter > 0) {
|
||||
let rounded = Math.round(seconds / this.intervals[precisionUnit]);
|
||||
if (this.fractionDigits) {
|
||||
const roundFactor = Math.pow(10,this.fractionDigits);
|
||||
let rounded;
|
||||
const roundFactor = Math.pow(10,this.fractionDigits || 0);
|
||||
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;
|
||||
}
|
||||
const dateStrings = dates(rounded);
|
||||
switch (this.kind) {
|
||||
case 'since':
|
||||
if (rounded === 1) {
|
||||
switch (precisionUnit) { // singular (1 day)
|
||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYear}: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 'day': return $localize`:@@time-since:${dateStrings.i18nDay}:DATE: ago`; break;
|
||||
case 'hour': return $localize`:@@time-since:${dateStrings.i18nHour}:DATE: ago`; break;
|
||||
case 'minute': return $localize`:@@time-since:${dateStrings.i18nMinute}:DATE: ago`; break;
|
||||
case 'second': return $localize`:@@time-since:${dateStrings.i18nSecond}:DATE: ago`; break;
|
||||
}
|
||||
} else {
|
||||
switch (precisionUnit) { // plural (2 days)
|
||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYears}: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 'day': return $localize`:@@time-since:${dateStrings.i18nDays}:DATE: ago`; break;
|
||||
case 'hour': return $localize`:@@time-since:${dateStrings.i18nHours}:DATE: ago`; break;
|
||||
case 'minute': return $localize`:@@time-since:${dateStrings.i18nMinutes}:DATE: ago`; break;
|
||||
case 'second': return $localize`:@@time-since:${dateStrings.i18nSeconds}:DATE: ago`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'until':
|
||||
if (rounded === 1) {
|
||||
switch (precisionUnit) { // singular (In ~1 day)
|
||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYear}: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 'day': return $localize`:@@time-until:In ~${dateStrings.i18nDay}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-until:In ~${dateStrings.i18nHour}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-until:In ~${dateStrings.i18nMinute}:DATE:`;
|
||||
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSecond}:DATE:`;
|
||||
}
|
||||
} else {
|
||||
switch (precisionUnit) { // plural (In ~2 days)
|
||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYears}: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 'day': return $localize`:@@time-until:In ~${dateStrings.i18nDays}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-until:In ~${dateStrings.i18nHours}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-until:In ~${dateStrings.i18nMinutes}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSeconds}:DATE:`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'span':
|
||||
if (rounded === 1) {
|
||||
switch (precisionUnit) { // singular (1 day)
|
||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYear}: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 'day': return $localize`:@@time-span:After ${dateStrings.i18nDay}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-span:After ${dateStrings.i18nHour}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-span:After ${dateStrings.i18nMinute}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSecond}:DATE:`; break;
|
||||
}
|
||||
} else {
|
||||
switch (precisionUnit) { // plural (2 days)
|
||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYears}: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 'day': return $localize`:@@time-span:After ${dateStrings.i18nDays}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-span:After ${dateStrings.i18nHours}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-span:After ${dateStrings.i18nMinutes}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSeconds}:DATE:`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (rounded === 1) {
|
||||
switch (precisionUnit) { // singular (1 day)
|
||||
case 'year': return dateStrings.i18nYear; break;
|
||||
case 'month': return dateStrings.i18nMonth; break;
|
||||
case 'week': return dateStrings.i18nWeek; break;
|
||||
case 'day': return dateStrings.i18nDay; break;
|
||||
case 'hour': return dateStrings.i18nHour; break;
|
||||
case 'minute': return dateStrings.i18nMinute; break;
|
||||
case 'second': return dateStrings.i18nSecond; break;
|
||||
}
|
||||
} else {
|
||||
switch (precisionUnit) { // plural (2 days)
|
||||
case 'year': return dateStrings.i18nYears; break;
|
||||
case 'month': return dateStrings.i18nMonths; break;
|
||||
case 'week': return dateStrings.i18nWeeks; break;
|
||||
case 'day': return dateStrings.i18nDays; break;
|
||||
case 'hour': return dateStrings.i18nHours; break;
|
||||
case 'minute': return dateStrings.i18nMinutes; break;
|
||||
case 'second': return dateStrings.i18nSeconds; break;
|
||||
}
|
||||
}
|
||||
if (this.kind !== 'until' || this.numUnits === 1) {
|
||||
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':
|
||||
if (number === 1) {
|
||||
switch (unit) { // singular (1 day)
|
||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYear}: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 'day': return $localize`:@@time-since:${dateStrings.i18nDay}:DATE: ago`; break;
|
||||
case 'hour': return $localize`:@@time-since:${dateStrings.i18nHour}:DATE: ago`; break;
|
||||
case 'minute': return $localize`:@@time-since:${dateStrings.i18nMinute}:DATE: ago`; break;
|
||||
case 'second': return $localize`:@@time-since:${dateStrings.i18nSecond}:DATE: ago`; break;
|
||||
}
|
||||
} else {
|
||||
switch (unit) { // plural (2 days)
|
||||
case 'year': return $localize`:@@time-since:${dateStrings.i18nYears}: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 'day': return $localize`:@@time-since:${dateStrings.i18nDays}:DATE: ago`; break;
|
||||
case 'hour': return $localize`:@@time-since:${dateStrings.i18nHours}:DATE: ago`; break;
|
||||
case 'minute': return $localize`:@@time-since:${dateStrings.i18nMinutes}:DATE: ago`; break;
|
||||
case 'second': return $localize`:@@time-since:${dateStrings.i18nSeconds}:DATE: ago`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'until':
|
||||
if (number === 1) {
|
||||
switch (unit) { // singular (In ~1 day)
|
||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYear}: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 'day': return $localize`:@@time-until:In ~${dateStrings.i18nDay}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-until:In ~${dateStrings.i18nHour}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-until:In ~${dateStrings.i18nMinute}:DATE:`;
|
||||
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSecond}:DATE:`;
|
||||
}
|
||||
} else {
|
||||
switch (unit) { // plural (In ~2 days)
|
||||
case 'year': return $localize`:@@time-until:In ~${dateStrings.i18nYears}: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 'day': return $localize`:@@time-until:In ~${dateStrings.i18nDays}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-until:In ~${dateStrings.i18nHours}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-until:In ~${dateStrings.i18nMinutes}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-until:In ~${dateStrings.i18nSeconds}:DATE:`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'span':
|
||||
if (number === 1) {
|
||||
switch (unit) { // singular (1 day)
|
||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYear}: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 'day': return $localize`:@@time-span:After ${dateStrings.i18nDay}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-span:After ${dateStrings.i18nHour}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-span:After ${dateStrings.i18nMinute}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSecond}:DATE:`; break;
|
||||
}
|
||||
} else {
|
||||
switch (unit) { // plural (2 days)
|
||||
case 'year': return $localize`:@@time-span:After ${dateStrings.i18nYears}: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 'day': return $localize`:@@time-span:After ${dateStrings.i18nDays}:DATE:`; break;
|
||||
case 'hour': return $localize`:@@time-span:After ${dateStrings.i18nHours}:DATE:`; break;
|
||||
case 'minute': return $localize`:@@time-span:After ${dateStrings.i18nMinutes}:DATE:`; break;
|
||||
case 'second': return $localize`:@@time-span:After ${dateStrings.i18nSeconds}:DATE:`; break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (number === 1) {
|
||||
switch (unit) { // singular (1 day)
|
||||
case 'year': return dateStrings.i18nYear; break;
|
||||
case 'month': return dateStrings.i18nMonth; break;
|
||||
case 'week': return dateStrings.i18nWeek; break;
|
||||
case 'day': return dateStrings.i18nDay; break;
|
||||
case 'hour': return dateStrings.i18nHour; break;
|
||||
case 'minute': return dateStrings.i18nMinute; break;
|
||||
case 'second': return dateStrings.i18nSecond; break;
|
||||
}
|
||||
} else {
|
||||
switch (unit) { // plural (2 days)
|
||||
case 'year': return dateStrings.i18nYears; break;
|
||||
case 'month': return dateStrings.i18nMonths; break;
|
||||
case 'week': return dateStrings.i18nWeeks; break;
|
||||
case 'day': return dateStrings.i18nDays; break;
|
||||
case 'hour': return dateStrings.i18nHours; break;
|
||||
case 'minute': return dateStrings.i18nMinutes; break;
|
||||
case 'second': return dateStrings.i18nSeconds; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ const routes: Routes = [
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'acceleration-list',
|
||||
path: 'acceleration/list',
|
||||
data: { networks: ['bitcoin'] },
|
||||
component: AccelerationsListComponent,
|
||||
},
|
||||
|
@ -25,30 +25,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquid",
|
||||
"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://node202.fmt.mempool.space:3001",
|
||||
"http://node203.fmt.mempool.space:3001",
|
||||
"http://node204.fmt.mempool.space:3001",
|
||||
"http://node205.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://node202.fra.mempool.space:3001",
|
||||
"http://node203.fra.mempool.space:3001",
|
||||
"http://node204.fra.mempool.space:3001",
|
||||
"http://node205.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://node202.tk7.mempool.space:3001",
|
||||
"http://node203.tk7.mempool.space:3001",
|
||||
"http://node204.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": {
|
||||
|
@ -25,30 +25,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/elements/socket/esplora-elements-liquidtestnet",
|
||||
"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://node202.fmt.mempool.space:3004",
|
||||
"http://node203.fmt.mempool.space:3004",
|
||||
"http://node204.fmt.mempool.space:3004",
|
||||
"http://node205.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://node202.fra.mempool.space:3004",
|
||||
"http://node203.fra.mempool.space:3004",
|
||||
"http://node204.fra.mempool.space:3004",
|
||||
"http://node205.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://node202.tk7.mempool.space:3004",
|
||||
"http://node203.tk7.mempool.space:3004",
|
||||
"http://node204.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": {
|
||||
|
@ -18,30 +18,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
||||
"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://node202.fmt.mempool.space:3000",
|
||||
"http://node203.fmt.mempool.space:3000",
|
||||
"http://node204.fmt.mempool.space:3000",
|
||||
"http://node205.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://node202.fra.mempool.space:3000",
|
||||
"http://node203.fra.mempool.space:3000",
|
||||
"http://node204.fra.mempool.space:3000",
|
||||
"http://node205.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://node202.tk7.mempool.space:3000",
|
||||
"http://node203.tk7.mempool.space:3000",
|
||||
"http://node204.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": {
|
||||
|
@ -11,6 +11,7 @@
|
||||
"POLL_RATE_MS": 1000,
|
||||
"INDEXING_BLOCKS_AMOUNT": -1,
|
||||
"BLOCKS_SUMMARIES_INDEXING": true,
|
||||
"GOGGLES_INDEXING": true,
|
||||
"AUDIT": true,
|
||||
"CPFP_INDEXING": true,
|
||||
"ADVANCED_GBT_AUDIT": true,
|
||||
@ -38,30 +39,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-mainnet",
|
||||
"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://node202.fmt.mempool.space:3000",
|
||||
"http://node203.fmt.mempool.space:3000",
|
||||
"http://node204.fmt.mempool.space:3000",
|
||||
"http://node205.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://node202.fra.mempool.space:3000",
|
||||
"http://node203.fra.mempool.space:3000",
|
||||
"http://node204.fra.mempool.space:3000",
|
||||
"http://node205.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://node202.tk7.mempool.space:3000",
|
||||
"http://node203.tk7.mempool.space:3000",
|
||||
"http://node204.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": {
|
||||
@ -81,30 +106,54 @@
|
||||
"AUDIT": true,
|
||||
"AUDIT_START_HEIGHT": 774000,
|
||||
"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",
|
||||
"node202.fmt.mempool.space",
|
||||
"node203.fmt.mempool.space",
|
||||
"node204.fmt.mempool.space",
|
||||
"node205.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",
|
||||
"node202.fra.mempool.space",
|
||||
"node203.fra.mempool.space",
|
||||
"node204.fra.mempool.space",
|
||||
"node205.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",
|
||||
"node202.tk7.mempool.space",
|
||||
"node203.tk7.mempool.space",
|
||||
"node204.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": {
|
||||
|
@ -18,30 +18,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
||||
"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://node202.fmt.mempool.space:3003",
|
||||
"http://node203.fmt.mempool.space:3003",
|
||||
"http://node204.fmt.mempool.space:3003",
|
||||
"http://node205.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://node202.fra.mempool.space:3003",
|
||||
"http://node203.fra.mempool.space:3003",
|
||||
"http://node204.fra.mempool.space:3003",
|
||||
"http://node205.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://node202.tk7.mempool.space:3003",
|
||||
"http://node203.tk7.mempool.space:3003",
|
||||
"http://node204.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": {
|
||||
|
@ -27,30 +27,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-signet",
|
||||
"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://node202.fmt.mempool.space:3003",
|
||||
"http://node203.fmt.mempool.space:3003",
|
||||
"http://node204.fmt.mempool.space:3003",
|
||||
"http://node205.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://node202.fra.mempool.space:3003",
|
||||
"http://node203.fra.mempool.space:3003",
|
||||
"http://node204.fra.mempool.space:3003",
|
||||
"http://node205.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://node202.tk7.mempool.space:3003",
|
||||
"http://node203.tk7.mempool.space:3003",
|
||||
"http://node204.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": {
|
||||
|
@ -18,30 +18,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
||||
"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://node202.fmt.mempool.space:3002",
|
||||
"http://node203.fmt.mempool.space:3002",
|
||||
"http://node204.fmt.mempool.space:3002",
|
||||
"http://node205.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://node202.fra.mempool.space:3002",
|
||||
"http://node203.fra.mempool.space:3002",
|
||||
"http://node204.fra.mempool.space:3002",
|
||||
"http://node205.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://node202.tk7.mempool.space:3002",
|
||||
"http://node203.tk7.mempool.space:3002",
|
||||
"http://node204.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": {
|
||||
|
@ -27,30 +27,54 @@
|
||||
"ESPLORA": {
|
||||
"UNIX_SOCKET_PATH": "/bitcoin/socket/esplora-bitcoin-testnet",
|
||||
"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://node202.fmt.mempool.space:3002",
|
||||
"http://node203.fmt.mempool.space:3002",
|
||||
"http://node204.fmt.mempool.space:3002",
|
||||
"http://node205.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://node202.fra.mempool.space:3002",
|
||||
"http://node203.fra.mempool.space:3002",
|
||||
"http://node204.fra.mempool.space:3002",
|
||||
"http://node205.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://node202.tk7.mempool.space:3002",
|
||||
"http://node203.tk7.mempool.space:3002",
|
||||
"http://node204.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": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user