Compare commits

..

68 Commits

Author SHA1 Message Date
transifex-integration[bot]
8ee7ec2886 Translate frontend/src/locale/messages.xlf in fa
100% reviewed for the source file 'frontend/src/locale/messages.xlf'
on the 'fa' language.
2023-03-09 23:51:31 +00:00
softsimon
cec8445223 Merge pull request #3293 from mempool/nymkappa/search-autofocus
Autofocus search input when we load the app for the first time
2023-03-09 19:04:03 +09:00
nymkappa
548a6ea664 Autofocus search input when we load the app for the first time 2023-03-09 18:53:29 +09:00
softsimon
9cef9b67c1 Merge pull request #3291 from mempool/revert-3290-nymkappa/bump-axios
Revert "Bump axios from 0.27.2 -> 1.3.4"
2023-03-09 17:46:19 +09:00
softsimon
42228dc70f Revert "Bump axios from 0.27.2 -> 1.3.4" 2023-03-09 17:46:09 +09:00
softsimon
cd3c1ed82e Merge pull request #3290 from mempool/nymkappa/bump-axios
Bump axios from 0.27.2 -> 1.3.4
2023-03-09 17:35:35 +09:00
nymkappa
304089b3d0 Bump axios from 0.27.2 -> 1.3.4 2023-03-09 17:27:19 +09:00
softsimon
c60903565e Merge pull request #3286 from mempool/simon/some-missing-ln-i18n-strings
Fixing Channels and Capacity i18n strings
2023-03-09 15:30:23 +09:00
softsimon
37e94249df Fixing Channels and Capacity i18n strings 2023-03-09 15:30:04 +09:00
softsimon
d2337ae4e8 Merge pull request #3285 from mempool/wiz/add-old-special-block-events
Add old special block events to app constants
2023-03-09 15:14:11 +09:00
softsimon
7557c47502 Merge pull request #3264 from mempool/mononaut/fix-mining-dashboard-updates
Fix stale mining dashboard data
2023-03-09 14:42:28 +09:00
wiz
a8214bcbbd Add old special block events to app constants 2023-03-09 14:30:55 +09:00
softsimon
fcf51e2af8 Merge pull request #3284 from mempool/simon/pull-transifex-2023-03-09
Pull from transifex
2023-03-09 13:19:40 +09:00
softsimon
c657e622eb Merge pull request #3277 from mempool/i18n/enable-danish-disable-catalan
i18n: Enable Danish, disable Catalan
2023-03-09 13:08:02 +09:00
softsimon
526e46b8e4 Pull from transifex 2023-03-09 11:49:26 +09:00
wiz
ead7a13ff0 i18n: Enable Danish, disable Catalan 2023-03-08 21:14:46 +09:00
Mononaut
c3c0696844 Update hashrate estimate when new blocks arrive 2023-03-08 02:37:19 -06:00
Mononaut
2907054a01 Update pool ranking block count when new blocks arrive 2023-03-08 02:33:16 -06:00
wiz
64408bfd16 Merge pull request #3241 from mempool/simon/fiat-space-fix
Remove fiat plus space
2023-03-08 17:02:19 +09:00
wiz
ca690bf123 Merge branch 'master' into simon/fiat-space-fix 2023-03-08 16:47:36 +09:00
softsimon
0243428fe9 Merge pull request #3262 from mempool/simon/pull-from-transifex-2023-03-08
Pull from transifex 8/3
2023-03-08 16:27:12 +09:00
softsimon
901d32d8f7 Pull from transifex 8/3 2023-03-08 16:26:56 +09:00
wiz
8adacd4a0e ops: Add missing unfurl route in nginx/server-common.conf 2023-03-08 16:14:43 +09:00
wiz
b8a3c15ed2 Merge pull request #3259 from mempool/mononaut/fix-cpfp-memory-bug
Fix memory-intensive getCPFPUnindexedBlocks mysql query
2023-03-08 15:10:31 +09:00
wiz
3e31e68a19 Merge branch 'master' into mononaut/fix-cpfp-memory-bug 2023-03-08 14:31:46 +09:00
wiz
626b395ab7 Merge pull request #3227 from mempool/simon/add-4y
Adding 4 year button to mempool graph
2023-03-08 14:31:39 +09:00
Mononaut
5eae84bb75 Fix memory-intensive getCPFPUnindexedBlocks mysql query 2023-03-07 21:01:54 -06:00
softsimon
c5a01135b3 Merge pull request #3249 from knorrium/fix_typo_in_bulk_config
Fix typo in bulk config variable
2023-03-08 11:05:58 +09:00
Felipe Knorr Kuhn
1a4f3b105e Fix typo in bulk config variable 2023-03-07 12:29:00 -08:00
wiz
ae1e2dcb50 Merge branch 'master' into simon/add-4y 2023-03-07 19:00:27 +09:00
softsimon
da25577ea7 Merge pull request #3244 from mempool/mononaut/fix-ln-rtl
Fix miscellaneous RTL layout bugs
2023-03-07 17:00:11 +09:00
Mononaut
5937e959c3 Fix miscellaneous RTL layout bugs 2023-03-06 20:25:27 -06:00
softsimon
6360913e84 Merge pull request #3243 from mempool/simon/pull-from-transifex-2023-03-07
Pull from transifex
2023-03-07 11:11:21 +09:00
softsimon
fb71136dae Pull from transifex 2023-03-07 11:11:02 +09:00
softsimon
3739e5be0d Merge pull request #3238 from mempool/mononaut/fix-404s
Fix unnecessary cpfp/rbf 404 responses
2023-03-06 18:40:32 +09:00
softsimon
ebfd0b9ddd Merge pull request #3225 from mempool/hunicus/responsive-disclaimer
Make faq disclaimer responsive
2023-03-06 16:50:03 +09:00
softsimon
355acfd338 Merge pull request #3239 from mempool/mononaut/fix-cached-rbf-error
don't cache tx data for rbf replacements
2023-03-06 16:45:36 +09:00
softsimon
5a5ebe8435 Remove fiat plus space
fixes #3240
2023-03-06 16:16:52 +09:00
Mononaut
43b2fe2f9a don't cache tx data for rbf replacements 2023-03-06 00:19:12 -06:00
Mononaut
182cb16695 Fix unnecessary cpfp 404 responses 2023-03-06 00:02:21 -06:00
softsimon
5a09e3099c Merge pull request #3237 from mempool/mononaut/unify-time-components
unify time rendering components
2023-03-06 12:24:00 +09:00
Mononaut
7f78fefb21 revert time localization strings 2023-03-05 21:09:22 -06:00
Mononaut
ac932c641c unify time rendering components 2023-03-05 19:26:32 -06:00
softsimon
4f297f0a7a Merge pull request #3234 from mempool/nymkappa/bugfix/ln-world-map-full-height
Show ln channel world map using 100% height
2023-03-05 19:20:28 +09:00
nymkappa
c28d1c4610 Show ln channel world map using 100% height 2023-03-05 17:43:59 +09:00
softsimon
1ad4ff0683 Merge pull request #3235 from mempool/simon/extract-i18n-clearnet
Update clearnet i18n string
2023-03-05 17:37:32 +09:00
softsimon
c50f5d45e1 Update clearnet i18n string 2023-03-05 17:37:15 +09:00
wiz
226a4e9bde Fix two more strings for "Clearnet Only" 2023-03-05 17:34:30 +09:00
wiz
154e65d470 Fix string for "Clearnet Only" 2023-03-05 17:30:32 +09:00
softsimon
a895d21179 Merge pull request #3231 from mempool/simon/i18n-fixes-extract
I18n extract. Some minor fixes.
2023-03-05 17:08:52 +09:00
softsimon
d5ea2aec25 I18n extract. Some minor fixes. 2023-03-05 17:08:35 +09:00
wiz
07271f56d7 Merge pull request #3230 from mempool/mononaut/heap-monitor
Monitor heap memory usage
2023-03-05 15:47:06 +09:00
wiz
f37946118c Change heap size warning to 80% utilization 2023-03-05 15:45:28 +09:00
softsimon
fdbcef29e5 Merge pull request #3212 from mempool/nymkappa/bugfix/initial-pool-download
Fix initial pool update when db is empty
2023-03-05 15:44:14 +09:00
wiz
9eeaf76369 Merge branch 'master' into mononaut/heap-monitor 2023-03-05 15:35:00 +09:00
wiz
a9a2ff0347 Merge pull request #3215 from mempool/nymkappa/bugfix/price
Handle missing price (show 0)
2023-03-05 15:34:31 +09:00
softsimon
aae61bcb45 Merge pull request #3125 from mempool/nymkappa/feature/update-mining-indexer-log
Update some mining indexer log
2023-03-05 15:19:50 +09:00
Mononaut
43bed7cf56 Monitor heap memory usage 2023-03-04 23:13:55 -06:00
wiz
fca813147d Merge branch 'master' into nymkappa/bugfix/price 2023-03-05 14:13:51 +09:00
nymkappa
62ef1d4439 Fix log typo 2023-03-05 08:27:31 +09:00
nymkappa
ff7c85180d Fix initial pool update when db is empty 2023-03-05 08:27:30 +09:00
nymkappa
001be82f5a Move some notice into info 2023-03-05 08:23:05 +09:00
nymkappa
32a260473a Update some mining indexing logs 2023-03-05 08:23:04 +09:00
nymkappa
2e74d7fa4a Remove mining db stats - replaced by runtime state variable 2023-03-05 08:23:04 +09:00
softsimon
4e39c27c75 Adding 4 year button to mempool graph
fixes #3218
2023-03-04 18:48:16 +09:00
hunicus
7b24b124c2 Use svg component for warning svg 2023-03-04 17:40:39 +09:00
hunicus
82b0844928 Make faq disclaimer more responsive 2023-03-04 17:40:39 +09:00
nymkappa
d483362a9b Handle missing price (show 0) 2023-03-04 10:51:13 +09:00
115 changed files with 8174 additions and 6029 deletions

View File

@@ -220,18 +220,17 @@ class BitcoinRoutes {
let cpfpInfo;
if (config.DATABASE.ENABLED) {
cpfpInfo = await transactionRepository.$getCpfpInfo(req.params.txId);
}
if (cpfpInfo) {
res.json(cpfpInfo);
return;
} else {
res.json({
ancestors: []
});
return;
}
if (cpfpInfo) {
res.json(cpfpInfo);
return;
}
}
res.status(404).send(`Transaction has no CPFP info available.`);
}
private getBackendInfo(req: Request, res: Response) {
@@ -652,7 +651,7 @@ class BitcoinRoutes {
if (result) {
res.json(result);
} else {
res.status(404).send('not found');
res.status(204).send();
}
} catch (e) {
res.status(500).send(e instanceof Error ? e.message : e);

View File

@@ -175,6 +175,7 @@ export class Common {
case '1y': return '1 YEAR';
case '2y': return '2 YEAR';
case '3y': return '3 YEAR';
case '4y': return '4 YEAR';
default: return null;
}
}

View File

@@ -1037,7 +1037,7 @@ class DatabaseMigration {
await this.$executeQuery('DELETE FROM `pools`');
await this.$executeQuery('ALTER TABLE pools AUTO_INCREMENT = 1');
await this.$executeQuery(`UPDATE state SET string = NULL WHERE name = 'pools_json_sha'`);
}
}
private async $convertCompactCpfpTables(): Promise<void> {
try {

View File

@@ -62,7 +62,7 @@ class DiskCache {
}
wipeCache() {
logger.notice(`Wipping nodejs backend cache/cache*.json files`);
logger.notice(`Wiping nodejs backend cache/cache*.json files`);
try {
fs.unlinkSync(DiskCache.FILE_NAME);
} catch (e: any) {

View File

@@ -263,7 +263,7 @@ class MiningRoutes {
const audit = await BlocksAuditsRepository.$getBlockAudit(req.params.hash);
if (!audit) {
res.status(404).send(`This block has not been audited.`);
res.status(204).send(`This block has not been audited.`);
return;
}

View File

@@ -117,7 +117,7 @@ class Mining {
poolsStatistics['lastEstimatedHashrate'] = await bitcoinClient.getNetworkHashPs(totalBlock24h);
} catch (e) {
poolsStatistics['lastEstimatedHashrate'] = 0;
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate');
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate', logger.tags.mining);
}
return poolsStatistics;
@@ -145,7 +145,7 @@ class Mining {
try {
currentEstimatedHashrate = await bitcoinClient.getNetworkHashPs(totalBlock24h);
} catch (e) {
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate');
logger.debug('Bitcoin Core is not available, using zeroed value for current hashrate', logger.tags.mining);
}
return {
@@ -208,7 +208,7 @@ class Mining {
const startedAt = new Date().getTime() / 1000;
let timer = new Date().getTime() / 1000;
logger.debug(`Indexing weekly mining pool hashrate`);
logger.debug(`Indexing weekly mining pool hashrate`, logger.tags.mining);
loadingIndicators.setProgress('weekly-hashrate-indexing', 0);
while (toTimestamp > genesisTimestamp && toTimestamp > oldestConsecutiveBlockTimestamp) {
@@ -245,7 +245,7 @@ class Mining {
});
}
newlyIndexed += hashrates.length;
newlyIndexed += hashrates.length / Math.max(1, pools.length);
await HashratesRepository.$saveHashrates(hashrates);
hashrates.length = 0;
}
@@ -256,7 +256,7 @@ class Mining {
const weeksPerSeconds = Math.max(1, Math.round(indexedThisRun / elapsedSeconds));
const progress = Math.round(totalIndexed / totalWeekIndexed * 10000) / 100;
const formattedDate = new Date(fromTimestamp).toUTCString();
logger.debug(`Getting weekly pool hashrate for ${formattedDate} | ~${weeksPerSeconds.toFixed(2)} weeks/sec | total: ~${totalIndexed}/${Math.round(totalWeekIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`);
logger.debug(`Getting weekly pool hashrate for ${formattedDate} | ~${weeksPerSeconds.toFixed(2)} weeks/sec | total: ~${totalIndexed}/${Math.round(totalWeekIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`, logger.tags.mining);
timer = new Date().getTime() / 1000;
indexedThisRun = 0;
loadingIndicators.setProgress('weekly-hashrate-indexing', progress, false);
@@ -268,14 +268,14 @@ class Mining {
}
this.lastWeeklyHashrateIndexingDate = new Date().getUTCDate();
if (newlyIndexed > 0) {
logger.notice(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed}`, logger.tags.mining);
logger.info(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed} weeks`, logger.tags.mining);
} else {
logger.debug(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed}`, logger.tags.mining);
logger.debug(`Weekly mining pools hashrates indexing completed: indexed ${newlyIndexed} weeks`, logger.tags.mining);
}
loadingIndicators.setProgress('weekly-hashrate-indexing', 100);
} catch (e) {
loadingIndicators.setProgress('weekly-hashrate-indexing', 100);
logger.err(`Weekly mining pools hashrates indexing failed. Trying again in 10 seconds. Reason: ${(e instanceof Error ? e.message : e)}`);
logger.err(`Weekly mining pools hashrates indexing failed. Trying again in 10 seconds. Reason: ${(e instanceof Error ? e.message : e)}`, logger.tags.mining);
throw e;
}
}
@@ -308,7 +308,7 @@ class Mining {
const startedAt = new Date().getTime() / 1000;
let timer = new Date().getTime() / 1000;
logger.debug(`Indexing daily network hashrate`);
logger.debug(`Indexing daily network hashrate`, logger.tags.mining);
loadingIndicators.setProgress('daily-hashrate-indexing', 0);
while (toTimestamp > genesisTimestamp && toTimestamp > oldestConsecutiveBlockTimestamp) {
@@ -346,7 +346,7 @@ class Mining {
const daysPerSeconds = Math.max(1, Math.round(indexedThisRun / elapsedSeconds));
const progress = Math.round(totalIndexed / totalDayIndexed * 10000) / 100;
const formattedDate = new Date(fromTimestamp).toUTCString();
logger.debug(`Getting network daily hashrate for ${formattedDate} | ~${daysPerSeconds.toFixed(2)} days/sec | total: ~${totalIndexed}/${Math.round(totalDayIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`);
logger.debug(`Getting network daily hashrate for ${formattedDate} | ~${daysPerSeconds.toFixed(2)} days/sec | total: ~${totalIndexed}/${Math.round(totalDayIndexed)} (${progress}%) | elapsed: ${runningFor} seconds`, logger.tags.mining);
timer = new Date().getTime() / 1000;
indexedThisRun = 0;
loadingIndicators.setProgress('daily-hashrate-indexing', progress);
@@ -373,14 +373,14 @@ class Mining {
this.lastHashrateIndexingDate = new Date().getUTCDate();
if (newlyIndexed > 0) {
logger.notice(`Daily network hashrate indexing completed: indexed ${newlyIndexed} days`, logger.tags.mining);
logger.info(`Daily network hashrate indexing completed: indexed ${newlyIndexed} days`, logger.tags.mining);
} else {
logger.debug(`Daily network hashrate indexing completed: indexed ${newlyIndexed} days`, logger.tags.mining);
}
loadingIndicators.setProgress('daily-hashrate-indexing', 100);
} catch (e) {
loadingIndicators.setProgress('daily-hashrate-indexing', 100);
logger.err(`Daily network hashrate indexing failed. Trying again in 10 seconds. Reason: ${(e instanceof Error ? e.message : e)}`, logger.tags.mining);
logger.err(`Daily network hashrate indexing failed. Trying again later. Reason: ${(e instanceof Error ? e.message : e)}`, logger.tags.mining);
throw e;
}
}
@@ -446,13 +446,13 @@ class Mining {
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
if (elapsedSeconds > 5) {
const progress = Math.round(totalBlockChecked / blocks.length * 100);
logger.info(`Indexing difficulty adjustment at block #${block.height} | Progress: ${progress}%`);
logger.info(`Indexing difficulty adjustment at block #${block.height} | Progress: ${progress}%`, logger.tags.mining);
timer = new Date().getTime() / 1000;
}
}
if (totalIndexed > 0) {
logger.notice(`Indexed ${totalIndexed} difficulty adjustments`, logger.tags.mining);
logger.info(`Indexed ${totalIndexed} difficulty adjustments`, logger.tags.mining);
} else {
logger.debug(`Indexed ${totalIndexed} difficulty adjustments`, logger.tags.mining);
}
@@ -499,7 +499,7 @@ class Mining {
if (blocksWithoutPrices.length > 200000) {
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
}
logger.debug(logStr);
logger.debug(logStr, logger.tags.mining);
await BlocksRepository.$saveBlockPrices(blocksPrices);
blocksPrices.length = 0;
}
@@ -511,7 +511,7 @@ class Mining {
if (blocksWithoutPrices.length > 200000) {
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
}
logger.debug(logStr);
logger.debug(logStr, logger.tags.mining);
await BlocksRepository.$saveBlockPrices(blocksPrices);
}
} catch (e) {
@@ -568,6 +568,7 @@ class Mining {
private getTimeRange(interval: string | null, scale = 1): number {
switch (interval) {
case '4y': return 43200 * scale; // 12h
case '3y': return 43200 * scale; // 12h
case '2y': return 28800 * scale; // 8h
case '1y': return 28800 * scale; // 8h

View File

@@ -375,6 +375,17 @@ class StatisticsApi {
}
}
public async $list4Y(): Promise<OptimizedStatistic[]> {
try {
const query = this.getQueryForDays(43200, '4 YEAR'); // 12h interval
const [rows] = await DB.query({ sql: query, timeout: this.queryTimeout });
return this.mapStatisticToOptimizedStatistic(rows as Statistic[]);
} catch (e) {
logger.err('$list4Y() error' + (e instanceof Error ? e.message : e));
return [];
}
}
private mapStatisticToOptimizedStatistic(statistic: Statistic[]): OptimizedStatistic[] {
return statistic.map((s) => {
return {

View File

@@ -14,10 +14,11 @@ class StatisticsRoutes {
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/1y', this.$getStatisticsByTime.bind(this, '1y'))
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/2y', this.$getStatisticsByTime.bind(this, '2y'))
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/3y', this.$getStatisticsByTime.bind(this, '3y'))
.get(config.MEMPOOL.API_URL_PREFIX + 'statistics/4y', this.$getStatisticsByTime.bind(this, '4y'))
;
}
private async $getStatisticsByTime(time: '2h' | '24h' | '1w' | '1m' | '3m' | '6m' | '1y' | '2y' | '3y', req: Request, res: Response) {
private async $getStatisticsByTime(time: '2h' | '24h' | '1w' | '1m' | '3m' | '6m' | '1y' | '2y' | '3y' | '4y', req: Request, res: Response) {
res.header('Pragma', 'public');
res.header('Cache-control', 'public');
res.setHeader('Expires', new Date(Date.now() + 1000 * 300).toUTCString());
@@ -54,6 +55,9 @@ class StatisticsRoutes {
case '3y':
result = await statisticsApi.$list3Y();
break;
case '4y':
result = await statisticsApi.$list4Y();
break;
default:
result = await statisticsApi.$list2H();
}

View File

@@ -1,8 +1,8 @@
import logger from '../logger';
import * as WebSocket from 'ws';
import {
BlockExtended, TransactionExtended, WebsocketResponse, MempoolBlock, MempoolBlockDelta,
OptimizedStatistic, ILoadingIndicators, IConversionRates
BlockExtended, TransactionExtended, WebsocketResponse,
OptimizedStatistic, ILoadingIndicators
} from '../mempool.interfaces';
import blocks from './blocks';
import memPool from './mempool';
@@ -20,6 +20,7 @@ import BlocksSummariesRepository from '../repositories/BlocksSummariesRepository
import Audit from './audit';
import { deepClone } from '../utils/clone';
import priceUpdater from '../tasks/price-updater';
import { ApiPrice } from '../repositories/PricesRepository';
class WebsocketHandler {
private wss: WebSocket.Server | undefined;
@@ -193,7 +194,7 @@ class WebsocketHandler {
});
}
handleNewConversionRates(conversionRates: IConversionRates) {
handleNewConversionRates(conversionRates: ApiPrice) {
if (!this.wss) {
throw new Error('WebSocket.Server is not set');
}
@@ -214,7 +215,7 @@ class WebsocketHandler {
'mempoolInfo': memPool.getMempoolInfo(),
'vBytesPerSecond': memPool.getVBytesPerSecond(),
'blocks': _blocks,
'conversions': priceUpdater.latestPrices,
'conversions': priceUpdater.getLatestPrices(),
'mempool-blocks': mempoolBlocks.getMempoolBlocks(),
'transactions': memPool.getLatestTransactions(),
'backendInfo': backendInfo.getBackendInfo(),

View File

@@ -38,6 +38,8 @@ import forensicsService from './tasks/lightning/forensics.service';
import priceUpdater from './tasks/price-updater';
import chainTips from './api/chain-tips';
import { AxiosError } from 'axios';
import v8 from 'v8';
import { formatBytes, getBytesUnit } from './utils/format';
class Server {
private wss: WebSocket.Server | undefined;
@@ -45,6 +47,11 @@ class Server {
private app: Application;
private currentBackendRetryInterval = 5;
private maxHeapSize: number = 0;
private heapLogInterval: number = 60;
private warnedHeapCritical: boolean = false;
private lastHeapLogTime: number | null = null;
constructor() {
this.app = express();
@@ -137,6 +144,8 @@ class Server {
this.runMainUpdateLoop();
}
setInterval(() => { this.healthCheck(); }, 2500);
if (config.BISQ.ENABLED) {
bisq.startBisqService();
bisq.setPriceCallbackFunction((price) => websocketHandler.setExtraInitProperties('bsq-price', price));
@@ -255,6 +264,26 @@ class Server {
channelsRoutes.initRoutes(this.app);
}
}
healthCheck(): void {
const now = Date.now();
const stats = v8.getHeapStatistics();
this.maxHeapSize = Math.max(stats.used_heap_size, this.maxHeapSize);
const warnThreshold = 0.8 * stats.heap_size_limit;
const byteUnits = getBytesUnit(Math.max(this.maxHeapSize, stats.heap_size_limit));
if (!this.warnedHeapCritical && this.maxHeapSize > warnThreshold) {
this.warnedHeapCritical = true;
logger.warn(`Used ${(this.maxHeapSize / stats.heap_size_limit).toFixed(2)}% of heap limit (${formatBytes(this.maxHeapSize, byteUnits, true)} / ${formatBytes(stats.heap_size_limit, byteUnits)})!`);
}
if (this.lastHeapLogTime === null || (now - this.lastHeapLogTime) > (this.heapLogInterval * 1000)) {
logger.debug(`Memory usage: ${formatBytes(this.maxHeapSize, byteUnits)} / ${formatBytes(stats.heap_size_limit, byteUnits)}`);
this.warnedHeapCritical = false;
this.maxHeapSize = 0;
this.lastHeapLogTime = now;
}
}
}
((): Server => new Server())();

View File

@@ -76,13 +76,13 @@ class Indexer {
this.tasksRunning.push(task);
const lastestPriceId = await PricesRepository.$getLatestPriceId();
if (priceUpdater.historyInserted === false || lastestPriceId === null) {
logger.debug(`Blocks prices indexer is waiting for the price updater to complete`);
logger.debug(`Blocks prices indexer is waiting for the price updater to complete`, logger.tags.mining);
setTimeout(() => {
this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask !== task);
this.runSingleTask('blocksPrices');
}, 10000);
} else {
logger.debug(`Blocks prices indexer will run now`);
logger.debug(`Blocks prices indexer will run now`, logger.tags.mining);
await mining.$indexBlockPrices();
this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask !== task);
}
@@ -112,7 +112,7 @@ class Indexer {
this.runIndexer = false;
this.indexerRunning = true;
logger.info(`Running mining indexer`);
logger.debug(`Running mining indexer`);
await this.checkAvailableCoreIndexes();
@@ -122,7 +122,7 @@ class Indexer {
const chainValid = await blocks.$generateBlockDatabase();
if (chainValid === false) {
// Chain of block hash was invalid, so we need to reindex. Stop here and continue at the next iteration
logger.warn(`The chain of block hash is invalid, re-indexing invalid data in 10 seconds.`);
logger.warn(`The chain of block hash is invalid, re-indexing invalid data in 10 seconds.`, logger.tags.mining);
setTimeout(() => this.reindex(), 10000);
this.indexerRunning = false;
return;

View File

@@ -293,7 +293,6 @@ interface RequiredParams {
}
export interface ILoadingIndicators { [name: string]: number; }
export interface IConversionRates { [currency: string]: number; }
export interface IBackendInfo {
hostname: string;

View File

@@ -748,6 +748,7 @@ class BlocksRepository {
SELECT height
FROM compact_cpfp_clusters
WHERE height <= ? AND height >= ?
GROUP BY height
ORDER BY height DESC;
`, [currentBlockHeight, minHeight]);

View File

@@ -20,9 +20,9 @@ class DifficultyAdjustmentsRepository {
await DB.query(query, params);
} catch (e: any) {
if (e.errno === 1062) { // ER_DUP_ENTRY - This scenario is possible upon node backend restart
logger.debug(`Cannot save difficulty adjustment at block ${adjustment.height}, already indexed, ignoring`);
logger.debug(`Cannot save difficulty adjustment at block ${adjustment.height}, already indexed, ignoring`, logger.tags.mining);
} else {
logger.err(`Cannot save difficulty adjustment at block ${adjustment.height}. Reason: ${e instanceof Error ? e.message : e}`);
logger.err(`Cannot save difficulty adjustment at block ${adjustment.height}. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.mining);
throw e;
}
}
@@ -54,7 +54,7 @@ class DifficultyAdjustmentsRepository {
const [rows] = await DB.query(query);
return rows as IndexedDifficultyAdjustment[];
} catch (e) {
logger.err(`Cannot get difficulty adjustments from the database. Reason: ` + (e instanceof Error ? e.message : e));
logger.err(`Cannot get difficulty adjustments from the database. Reason: ` + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -83,7 +83,7 @@ class DifficultyAdjustmentsRepository {
const [rows] = await DB.query(query);
return rows as IndexedDifficultyAdjustment[];
} catch (e) {
logger.err(`Cannot get difficulty adjustments from the database. Reason: ` + (e instanceof Error ? e.message : e));
logger.err(`Cannot get difficulty adjustments from the database. Reason: ` + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -93,27 +93,27 @@ class DifficultyAdjustmentsRepository {
const [rows]: any[] = await DB.query(`SELECT height FROM difficulty_adjustments`);
return rows.map(block => block.height);
} catch (e: any) {
logger.err(`Cannot get difficulty adjustment block heights. Reason: ${e instanceof Error ? e.message : e}`);
logger.err(`Cannot get difficulty adjustment block heights. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.mining);
throw e;
}
}
public async $deleteAdjustementsFromHeight(height: number): Promise<void> {
try {
logger.info(`Delete newer difficulty adjustments from height ${height} from the database`);
logger.info(`Delete newer difficulty adjustments from height ${height} from the database`, logger.tags.mining);
await DB.query(`DELETE FROM difficulty_adjustments WHERE height >= ?`, [height]);
} catch (e: any) {
logger.err(`Cannot delete difficulty adjustments from the database. Reason: ${e instanceof Error ? e.message : e}`);
logger.err(`Cannot delete difficulty adjustments from the database. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.mining);
throw e;
}
}
public async $deleteLastAdjustment(): Promise<void> {
try {
logger.info(`Delete last difficulty adjustment from the database`);
logger.info(`Delete last difficulty adjustment from the database`, logger.tags.mining);
await DB.query(`DELETE FROM difficulty_adjustments ORDER BY time LIMIT 1`);
} catch (e: any) {
logger.err(`Cannot delete last difficulty adjustment from the database. Reason: ${e instanceof Error ? e.message : e}`);
logger.err(`Cannot delete last difficulty adjustment from the database. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.mining);
throw e;
}
}

View File

@@ -25,7 +25,7 @@ class HashratesRepository {
try {
await DB.query(query);
} catch (e: any) {
logger.err('Cannot save indexed hashrate into db. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot save indexed hashrate into db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -51,7 +51,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query);
return rows;
} catch (e) {
logger.err('Cannot fetch network hashrate history. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot fetch network hashrate history. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -78,7 +78,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query);
return rows;
} catch (e) {
logger.err('Cannot fetch network hashrate history. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot fetch network hashrate history. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -93,7 +93,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query);
return rows.map(row => row.timestamp);
} catch (e) {
logger.err('Cannot retreive indexed weekly hashrate timestamps. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot retreive indexed weekly hashrate timestamps. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -128,7 +128,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query);
return rows;
} catch (e) {
logger.err('Cannot fetch weekly pools hashrate history. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot fetch weekly pools hashrate history. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -158,7 +158,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query, [pool.id]);
boundaries = rows[0];
} catch (e) {
logger.err('Cannot fetch hashrate start/end timestamps for this pool. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot fetch hashrate start/end timestamps for this pool. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
}
// Get hashrates entries between boundaries
@@ -173,7 +173,7 @@ class HashratesRepository {
const [rows]: any[] = await DB.query(query, [boundaries.firstTimestamp, boundaries.lastTimestamp, pool.id]);
return rows;
} catch (e) {
logger.err('Cannot fetch pool hashrate history for this pool. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot fetch pool hashrate history for this pool. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -192,7 +192,7 @@ class HashratesRepository {
}
return rows[0]['number'];
} catch (e) {
logger.err(`Cannot retrieve last indexing run for ${key}. Reason: ` + (e instanceof Error ? e.message : e));
logger.err(`Cannot retrieve last indexing run for ${key}. Reason: ` + (e instanceof Error ? e.message : e), logger.tags.mining);
throw e;
}
}
@@ -201,7 +201,7 @@ class HashratesRepository {
* Delete most recent data points for re-indexing
*/
public async $deleteLastEntries() {
logger.info(`Delete latest hashrates data points from the database`);
logger.info(`Delete latest hashrates data points from the database`, logger.tags.mining);
try {
const [rows]: any[] = await DB.query(`SELECT MAX(hashrate_timestamp) as timestamp FROM hashrates GROUP BY type`);
@@ -212,7 +212,7 @@ class HashratesRepository {
mining.lastHashrateIndexingDate = null;
mining.lastWeeklyHashrateIndexingDate = null;
} catch (e) {
logger.err('Cannot delete latest hashrates data points. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot delete latest hashrates data points. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
}
}
@@ -228,7 +228,7 @@ class HashratesRepository {
mining.lastHashrateIndexingDate = null;
mining.lastWeeklyHashrateIndexingDate = null;
} catch (e) {
logger.err('Cannot delete latest hashrates data points. Reason: ' + (e instanceof Error ? e.message : e));
logger.err('Cannot delete latest hashrates data points. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
}
}
}

View File

@@ -1,6 +1,5 @@
import DB from '../database';
import logger from '../logger';
import { IConversionRates } from '../mempool.interfaces';
import priceUpdater from '../tasks/price-updater';
export interface ApiPrice {
@@ -13,6 +12,16 @@ export interface ApiPrice {
AUD: number,
JPY: number,
}
const ApiPriceFields = `
UNIX_TIMESTAMP(time) as time,
USD,
EUR,
GBP,
CAD,
CHF,
AUD,
JPY
`;
export interface ExchangeRates {
USDEUR: number,
@@ -39,7 +48,7 @@ export const MAX_PRICES = {
};
class PricesRepository {
public async $savePrices(time: number, prices: IConversionRates): Promise<void> {
public async $savePrices(time: number, prices: ApiPrice): Promise<void> {
if (prices.USD === -1) {
// Some historical price entries have no USD prices, so we just ignore them to avoid future UX issues
// As of today there are only 4 (on 2013-09-05, 2013-0909, 2013-09-12 and 2013-09-26) so that's fine
@@ -60,77 +69,115 @@ class PricesRepository {
VALUE (FROM_UNIXTIME(?), ?, ?, ?, ?, ?, ?, ? )`,
[time, prices.USD, prices.EUR, prices.GBP, prices.CAD, prices.CHF, prices.AUD, prices.JPY]
);
} catch (e: any) {
} catch (e) {
logger.err(`Cannot save exchange rate into db. Reason: ` + (e instanceof Error ? e.message : e));
throw e;
}
}
public async $getOldestPriceTime(): Promise<number> {
const [oldestRow] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time from prices WHERE USD != 0 ORDER BY time LIMIT 1`);
const [oldestRow] = await DB.query(`
SELECT UNIX_TIMESTAMP(time) AS time
FROM prices
ORDER BY time
LIMIT 1
`);
return oldestRow[0] ? oldestRow[0].time : 0;
}
public async $getLatestPriceId(): Promise<number | null> {
const [oldestRow] = await DB.query(`SELECT id from prices WHERE USD != 0 ORDER BY time DESC LIMIT 1`);
return oldestRow[0] ? oldestRow[0].id : null;
}
public async $getLatestPriceTime(): Promise<number> {
const [oldestRow] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time from prices WHERE USD != 0 ORDER BY time DESC LIMIT 1`);
return oldestRow[0] ? oldestRow[0].time : 0;
}
public async $getPricesTimes(): Promise<number[]> {
const [times]: any[] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time from prices WHERE USD != 0 ORDER BY time`);
return times.map(time => time.time);
}
public async $getPricesTimesAndId(): Promise<number[]> {
const [times]: any[] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time, id, USD from prices ORDER BY time`);
return times;
}
public async $getLatestConversionRates(): Promise<any> {
const [rates]: any[] = await DB.query(`
SELECT USD, EUR, GBP, CAD, CHF, AUD, JPY
const [oldestRow] = await DB.query(`
SELECT id
FROM prices
ORDER BY time DESC
LIMIT 1`
);
if (!rates || rates.length === 0) {
return oldestRow[0] ? oldestRow[0].id : null;
}
public async $getLatestPriceTime(): Promise<number> {
const [oldestRow] = await DB.query(`
SELECT UNIX_TIMESTAMP(time) AS time
FROM prices
ORDER BY time DESC
LIMIT 1`
);
return oldestRow[0] ? oldestRow[0].time : 0;
}
public async $getPricesTimes(): Promise<number[]> {
const [times] = await DB.query(`
SELECT UNIX_TIMESTAMP(time) AS time
FROM prices
WHERE USD != -1
ORDER BY time
`);
if (!Array.isArray(times)) {
return [];
}
return times.map(time => time.time);
}
public async $getPricesTimesAndId(): Promise<{time: number, id: number, USD: number}[]> {
const [times] = await DB.query(`
SELECT
UNIX_TIMESTAMP(time) AS time,
id,
USD
FROM prices
ORDER BY time
`);
return times as {time: number, id: number, USD: number}[];
}
public async $getLatestConversionRates(): Promise<ApiPrice> {
const [rates] = await DB.query(`
SELECT ${ApiPriceFields}
FROM prices
ORDER BY time DESC
LIMIT 1`
);
if (!Array.isArray(rates) || rates.length === 0) {
return priceUpdater.getEmptyPricesObj();
}
return rates[0];
return rates[0] as ApiPrice;
}
public async $getNearestHistoricalPrice(timestamp: number | undefined): Promise<Conversion | null> {
try {
const [rates]: any[] = await DB.query(`
SELECT *, UNIX_TIMESTAMP(time) AS time
const [rates] = await DB.query(`
SELECT ${ApiPriceFields}
FROM prices
WHERE UNIX_TIMESTAMP(time) < ?
ORDER BY time DESC
LIMIT 1`,
[timestamp]
);
if (!rates) {
if (!Array.isArray(rates)) {
throw Error(`Cannot get single historical price from the database`);
}
// Compute fiat exchange rates
const latestPrice = await this.$getLatestConversionRates();
let latestPrice = rates[0] as ApiPrice;
if (latestPrice.USD === -1) {
latestPrice = priceUpdater.getEmptyPricesObj();
}
const computeFx = (usd: number, other: number): number =>
Math.round(Math.max(other, 0) / Math.max(usd, 1) * 100) / 100;
const exchangeRates: ExchangeRates = {
USDEUR: Math.round(latestPrice.EUR / latestPrice.USD * 100) / 100,
USDGBP: Math.round(latestPrice.GBP / latestPrice.USD * 100) / 100,
USDCAD: Math.round(latestPrice.CAD / latestPrice.USD * 100) / 100,
USDCHF: Math.round(latestPrice.CHF / latestPrice.USD * 100) / 100,
USDAUD: Math.round(latestPrice.AUD / latestPrice.USD * 100) / 100,
USDJPY: Math.round(latestPrice.JPY / latestPrice.USD * 100) / 100,
USDEUR: computeFx(latestPrice.USD, latestPrice.EUR),
USDGBP: computeFx(latestPrice.USD, latestPrice.GBP),
USDCAD: computeFx(latestPrice.USD, latestPrice.CAD),
USDCHF: computeFx(latestPrice.USD, latestPrice.CHF),
USDAUD: computeFx(latestPrice.USD, latestPrice.AUD),
USDJPY: computeFx(latestPrice.USD, latestPrice.JPY),
};
return {
prices: rates,
prices: rates as ApiPrice[],
exchangeRates: exchangeRates
};
} catch (e) {
@@ -141,28 +188,35 @@ class PricesRepository {
public async $getHistoricalPrices(): Promise<Conversion | null> {
try {
const [rates]: any[] = await DB.query(`
SELECT *, UNIX_TIMESTAMP(time) AS time
const [rates] = await DB.query(`
SELECT ${ApiPriceFields}
FROM prices
ORDER BY time DESC
`);
if (!rates) {
if (!Array.isArray(rates)) {
throw Error(`Cannot get average historical price from the database`);
}
// Compute fiat exchange rates
const latestPrice: ApiPrice = rates[0];
let latestPrice = rates[0] as ApiPrice;
if (latestPrice.USD === -1) {
latestPrice = priceUpdater.getEmptyPricesObj();
}
const computeFx = (usd: number, other: number): number =>
Math.round(Math.max(other, 0) / Math.max(usd, 1) * 100) / 100;
const exchangeRates: ExchangeRates = {
USDEUR: Math.round(latestPrice.EUR / latestPrice.USD * 100) / 100,
USDGBP: Math.round(latestPrice.GBP / latestPrice.USD * 100) / 100,
USDCAD: Math.round(latestPrice.CAD / latestPrice.USD * 100) / 100,
USDCHF: Math.round(latestPrice.CHF / latestPrice.USD * 100) / 100,
USDAUD: Math.round(latestPrice.AUD / latestPrice.USD * 100) / 100,
USDJPY: Math.round(latestPrice.JPY / latestPrice.USD * 100) / 100,
USDEUR: computeFx(latestPrice.USD, latestPrice.EUR),
USDGBP: computeFx(latestPrice.USD, latestPrice.GBP),
USDCAD: computeFx(latestPrice.USD, latestPrice.CAD),
USDCHF: computeFx(latestPrice.USD, latestPrice.CHF),
USDAUD: computeFx(latestPrice.USD, latestPrice.AUD),
USDJPY: computeFx(latestPrice.USD, latestPrice.JPY),
};
return {
prices: rates,
prices: rates as ApiPrice[],
exchangeRates: exchangeRates
};
} catch (e) {

View File

@@ -411,7 +411,7 @@ class LightningStatsImporter {
}
if (totalProcessed > 0) {
logger.notice(`Lightning network stats historical import completed`, logger.tags.ln);
logger.info(`Lightning network stats historical import completed`, logger.tags.ln);
}
} catch (e) {
logger.err(`Lightning network stats historical failed. Reason: ${e instanceof Error ? e.message : e}`, logger.tags.ln);

View File

@@ -12,7 +12,7 @@ import * as https from 'https';
*/
class PoolsUpdater {
lastRun: number = 0;
currentSha: string | undefined = undefined;
currentSha: string | null = null;
poolsUrl: string = config.MEMPOOL.POOLS_JSON_URL;
treeUrl: string = config.MEMPOOL.POOLS_JSON_TREE_URL;
@@ -33,7 +33,7 @@ class PoolsUpdater {
try {
const githubSha = await this.fetchPoolsSha(); // Fetch pools-v2.json sha from github
if (githubSha === undefined) {
if (githubSha === null) {
return;
}
@@ -42,12 +42,12 @@ class PoolsUpdater {
}
logger.debug(`pools-v2.json sha | Current: ${this.currentSha} | Github: ${githubSha}`);
if (this.currentSha !== undefined && this.currentSha === githubSha) {
if (this.currentSha !== null && this.currentSha === githubSha) {
return;
}
// See backend README for more details about the mining pools update process
if (this.currentSha !== undefined && // If we don't have any mining pool, download it at least once
if (this.currentSha !== null && // If we don't have any mining pool, download it at least once
config.MEMPOOL.AUTOMATIC_BLOCK_REINDEXING !== true && // Automatic pools update is disabled
!process.env.npm_config_update_pools // We're not manually updating mining pool
) {
@@ -57,7 +57,7 @@ class PoolsUpdater {
}
const network = config.SOCKS5PROXY.ENABLED ? 'tor' : 'clearnet';
if (this.currentSha === undefined) {
if (this.currentSha === null) {
logger.info(`Downloading pools-v2.json for the first time from ${this.poolsUrl} over ${network}`, logger.tags.mining);
} else {
logger.warn(`pools-v2.json is outdated, fetch latest from ${this.poolsUrl} over ${network}`, logger.tags.mining);
@@ -82,7 +82,7 @@ class PoolsUpdater {
logger.err(`Could not migrate mining pools, rolling back. Exception: ${JSON.stringify(e)}`, logger.tags.mining);
await DB.query('ROLLBACK;');
}
logger.notice('PoolsUpdater completed');
logger.info('PoolsUpdater completed');
} catch (e) {
this.lastRun = now - (oneWeek - oneDay); // Try again in 24h instead of waiting next week
@@ -108,20 +108,20 @@ class PoolsUpdater {
/**
* Fetch our latest pools-v2.json sha from the db
*/
private async getShaFromDb(): Promise<string | undefined> {
private async getShaFromDb(): Promise<string | null> {
try {
const [rows]: any[] = await DB.query('SELECT string FROM state WHERE name="pools_json_sha"');
return (rows.length > 0 ? rows[0].string : undefined);
return (rows.length > 0 ? rows[0].string : null);
} catch (e) {
logger.err('Cannot fetch pools-v2.json sha from db. Reason: ' + (e instanceof Error ? e.message : e), logger.tags.mining);
return undefined;
return null;
}
}
/**
* Fetch our latest pools-v2.json sha from github
*/
private async fetchPoolsSha(): Promise<string | undefined> {
private async fetchPoolsSha(): Promise<string | null> {
const response = await this.query(this.treeUrl);
if (response !== undefined) {
@@ -133,7 +133,7 @@ class PoolsUpdater {
}
logger.err(`Cannot find "pools-v2.json" in git tree (${this.treeUrl})`, logger.tags.mining);
return undefined;
return null;
}
/**

View File

@@ -8,9 +8,6 @@ class BitfinexApi implements PriceFeed {
public url: string = 'https://api.bitfinex.com/v1/pubticker/BTC';
public urlHist: string = 'https://api-pub.bitfinex.com/v2/candles/trade:{GRANULARITY}:tBTC{CURRENCY}/hist';
constructor() {
}
public async $fetchPrice(currency): Promise<number> {
const response = await query(this.url + currency);
if (response && response['last_price']) {

View File

@@ -98,7 +98,7 @@ class KrakenApi implements PriceFeed {
}
if (Object.keys(priceHistory).length > 0) {
logger.notice(`Inserted ${Object.keys(priceHistory).length} Kraken EUR, USD, GBP, JPY, CAD, CHF and AUD weekly price history into db`, logger.tags.mining);
logger.info(`Inserted ${Object.keys(priceHistory).length} Kraken EUR, USD, GBP, JPY, CAD, CHF and AUD weekly price history into db`, logger.tags.mining);
}
}
}

View File

@@ -2,8 +2,7 @@ import * as fs from 'fs';
import path from 'path';
import config from '../config';
import logger from '../logger';
import { IConversionRates } from '../mempool.interfaces';
import PricesRepository, { MAX_PRICES } from '../repositories/PricesRepository';
import PricesRepository, { ApiPrice, MAX_PRICES } from '../repositories/PricesRepository';
import BitfinexApi from './price-feeds/bitfinex-api';
import BitflyerApi from './price-feeds/bitflyer-api';
import CoinbaseApi from './price-feeds/coinbase-api';
@@ -21,18 +20,18 @@ export interface PriceFeed {
}
export interface PriceHistory {
[timestamp: number]: IConversionRates;
[timestamp: number]: ApiPrice;
}
class PriceUpdater {
public historyInserted = false;
lastRun = 0;
lastHistoricalRun = 0;
running = false;
feeds: PriceFeed[] = [];
currencies: string[] = ['USD', 'EUR', 'GBP', 'CAD', 'CHF', 'AUD', 'JPY'];
latestPrices: IConversionRates;
private ratesChangedCallback: ((rates: IConversionRates) => void) | undefined;
private lastRun = 0;
private lastHistoricalRun = 0;
private running = false;
private feeds: PriceFeed[] = [];
private currencies: string[] = ['USD', 'EUR', 'GBP', 'CAD', 'CHF', 'AUD', 'JPY'];
private latestPrices: ApiPrice;
private ratesChangedCallback: ((rates: ApiPrice) => void) | undefined;
constructor() {
this.latestPrices = this.getEmptyPricesObj();
@@ -44,8 +43,13 @@ class PriceUpdater {
this.feeds.push(new GeminiApi());
}
public getEmptyPricesObj(): IConversionRates {
public getLatestPrices(): ApiPrice {
return this.latestPrices;
}
public getEmptyPricesObj(): ApiPrice {
return {
time: 0,
USD: -1,
EUR: -1,
GBP: -1,
@@ -56,7 +60,7 @@ class PriceUpdater {
};
}
public setRatesChangedCallback(fn: (rates: IConversionRates) => void) {
public setRatesChangedCallback(fn: (rates: ApiPrice) => void): void {
this.ratesChangedCallback = fn;
}
@@ -156,6 +160,10 @@ class PriceUpdater {
}
this.lastRun = new Date().getTime() / 1000;
if (this.latestPrices.USD === -1) {
this.latestPrices = await PricesRepository.$getLatestConversionRates();
}
}
/**
@@ -224,7 +232,7 @@ class PriceUpdater {
// Group them by timestamp and currency, for example
// grouped[123456789]['USD'] = [1, 2, 3, 4];
const grouped: any = {};
const grouped = {};
for (const historicalEntry of historicalPrices) {
for (const time in historicalEntry) {
if (existingPriceTimes.includes(parseInt(time, 10))) {
@@ -249,7 +257,7 @@ class PriceUpdater {
// Average prices and insert everything into the db
let totalInserted = 0;
for (const time in grouped) {
const prices: IConversionRates = this.getEmptyPricesObj();
const prices: ApiPrice = this.getEmptyPricesObj();
for (const currency in grouped[time]) {
if (grouped[time][currency].length === 0) {
continue;

View File

@@ -0,0 +1,29 @@
const byteUnits = ['B', 'kB', 'MB', 'GB', 'TB'];
export function getBytesUnit(bytes: number): string {
if (isNaN(bytes) || !isFinite(bytes)) {
return 'B';
}
let unitIndex = 0;
while (unitIndex < byteUnits.length && bytes > 1024) {
unitIndex++;
bytes /= 1024;
}
return byteUnits[unitIndex];
}
export function formatBytes(bytes: number, toUnit: string, skipUnit = false): string {
if (isNaN(bytes) || !isFinite(bytes)) {
return `${bytes}`;
}
let unitIndex = 0;
while (unitIndex < byteUnits.length && (toUnit && byteUnits[unitIndex] !== toUnit || (!toUnit && bytes > 1024))) {
unitIndex++;
bytes /= 1024;
}
return `${bytes.toFixed(2)}${skipUnit ? '' : ' ' + byteUnits[unitIndex]}`;
}

View File

@@ -26,7 +26,7 @@
"ADVANCED_GBT_AUDIT": __MEMPOOL_ADVANCED_GBT_AUDIT__,
"ADVANCED_GBT_MEMPOOL": __MEMPOOL_ADVANCED_GBT_MEMPOOL__,
"CPFP_INDEXING": __MEMPOOL_CPFP_INDEXING__,
"MAX_BLOCKS_BULK_QUERY": __MEMPOOL__MAX_BLOCKS_BULK_QUERY__
"MAX_BLOCKS_BULK_QUERY": __MEMPOOL_MAX_BLOCKS_BULK_QUERY__
},
"CORE_RPC": {
"HOST": "__CORE_RPC_HOST__",
@@ -108,4 +108,4 @@
"BISQ_URL": "__EXTERNAL_DATA_SERVER_BISQ_URL__",
"BISQ_ONION": "__EXTERNAL_DATA_SERVER_BISQ_ONION__"
}
}
}

View File

@@ -87,9 +87,9 @@ export const languages: Language[] = [
{ code: 'ar', name: 'العربية' }, // Arabic
// { code: 'bg', name: 'Български' }, // Bulgarian
// { code: 'bs', name: 'Bosanski' }, // Bosnian
{ code: 'ca', name: 'Català' }, // Catalan
// { code: 'ca', name: 'Català' }, // Catalan
{ code: 'cs', name: 'Čeština' }, // Czech
// { code: 'da', name: 'Dansk' }, // Danish
{ code: 'da', name: 'Dansk' }, // Danish
{ code: 'de', name: 'Deutsch' }, // German
// { code: 'et', name: 'Eesti' }, // Estonian
// { code: 'el', name: 'Ελληνικά' }, // Greek
@@ -136,12 +136,28 @@ export const languages: Language[] = [
];
export const specialBlocks = {
'0': {
labelEvent: 'Genesis',
labelEventCompleted: 'The Genesis of Bitcoin',
},
'210000': {
labelEvent: 'Bitcoin\'s 1st Halving',
labelEventCompleted: 'Block Subsidy has halved to 25 BTC per block',
},
'420000': {
labelEvent: 'Bitcoin\'s 2nd Halving',
labelEventCompleted: 'Block Subsidy has halved to 12.5 BTC per block',
},
'630000': {
labelEvent: 'Bitcoin\'s 3rd Halving',
labelEventCompleted: 'Block Subsidy has halved to 6.25 BTC per block',
},
'709632': {
labelEvent: 'Taproot 🌱 activation',
labelEventCompleted: 'Taproot 🌱 has been activated!',
},
'840000': {
labelEvent: 'Halving 🥳',
labelEvent: 'Bitcoin\'s 4th Halving',
labelEventCompleted: 'Block Subsidy has halved to 3.125 BTC per block',
}
};

View File

@@ -24,7 +24,7 @@
<td>
&lrm;{{ block.time | date:'yyyy-MM-dd HH:mm' }}
<div class="lg-inline">
<i class="symbol">(<app-time-since [time]="block.time / 1000" [fastRender]="true"></app-time-since>)</i>
<i class="symbol">(<app-time kind="since" [time]="block.time / 1000" [fastRender]="true"></app-time>)</i>
</div>
</td>
</tr>

View File

@@ -17,7 +17,7 @@
<tbody *ngIf="blocks.value; else loadingTmpl">
<tr *ngFor="let block of blocks.value[0]; trackBy: trackByFn">
<td><a [routerLink]="['/block/' | relativeUrl, block.hash]" [state]="{ data: { block: block } }">{{ block.height }}</a></td>
<td><app-time-since [time]="block.time / 1000" [fastRender]="true"></app-time-since></td>
<td><app-time kind="since" [time]="block.time / 1000" [fastRender]="true"></app-time></td>
<td>{{ calculateTotalOutput(block) / 100 | number: '1.2-2' }} <span class="symbol">BSQ</span></td>
<td class="d-none d-md-block">{{ block.txs.length }}</td>
</tr>

View File

@@ -35,7 +35,7 @@
<td>
&lrm;{{ bisqTx.time | date:'yyyy-MM-dd HH:mm' }}
<div class="lg-inline">
<i class="symbol">(<app-time-since [time]="bisqTx.time / 1000" [fastRender]="true"></app-time-since>)</i>
<i class="symbol">(<app-time kind="since" [time]="bisqTx.time / 1000" [fastRender]="true"></app-time>)</i>
</div>
</td>
</tr>

View File

@@ -37,7 +37,7 @@
{{ calculateTotalOutput(tx.outputs) / 100 | number: '1.2-2' }} <span class="d-none d-md-inline symbol">BSQ</span>
</ng-template>
</td>
<td><app-time-since [time]="tx.time / 1000" [fastRender]="true"></app-time-since></td>
<td><app-time kind="since" [time]="tx.time / 1000" [fastRender]="true"></app-time></td>
<td class="d-none d-md-block"><a [routerLink]="['/block/' | relativeUrl, tx.blockHash]" [state]="{ data: { blockHeight: tx.blockHeight } }">{{ tx.blockHeight }}</a></td>
</tr>
</tbody>

View File

@@ -1,15 +1,15 @@
<ng-container *ngIf="!noFiat && (viewFiat$ | async) && (conversions$ | async) as conversions; else viewFiatVin">
<span class="fiat" *ngIf="blockConversion; else noblockconversion">
{{ addPlus && satoshis >= 0 ? '+' : '' }}
{{
{{ addPlus && satoshis >= 0 ? '+' : '' }}{{
(
(blockConversion.price[currency] >= 0 ? blockConversion.price[currency] : null) ??
(blockConversion.price['USD'] * blockConversion.exchangeRates['USD' + currency]) ?? 0
(blockConversion.price[currency] > -1 ? blockConversion.price[currency] : null) ??
(blockConversion.price['USD'] > -1 ? blockConversion.price['USD'] * blockConversion.exchangeRates['USD' + currency] : null) ?? 0
) * satoshis / 100000000 | fiatCurrency : digitsInfo : currency
}}
</span>
<ng-template #noblockconversion>
<span class="fiat">{{ addPlus && satoshis >= 0 ? '+' : '' }}{{ (conversions ? conversions[currency] : 0) * satoshis / 100000000 | fiatCurrency : digitsInfo : currency }}</span>
<span class="fiat">{{ addPlus && satoshis >= 0 ? '+' : '' }}{{ (conversions[currency] > -1 ? conversions[currency] : 0) * satoshis / 100000000 | fiatCurrency : digitsInfo : currency }}
</span>
</ng-template>
</ng-container>

View File

@@ -54,31 +54,6 @@
max-height: 270px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.disabled {
pointer-events: none;
opacity: 0.5;

View File

@@ -54,31 +54,6 @@
max-height: 270px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.disabled {
pointer-events: none;
opacity: 0.5;

View File

@@ -54,31 +54,6 @@
max-height: 270px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.disabled {
pointer-events: none;
opacity: 0.5;

View File

@@ -54,31 +54,6 @@
max-height: 270px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 1130px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 1130px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.disabled {
pointer-events: none;
opacity: 0.5;

View File

@@ -47,7 +47,7 @@
<ng-template #transactionsPlural let-i i18n="shared.transaction-count.plural">{{ i }} transactions</ng-template>
</div>
<div [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-time'" class="time-difference">
<app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since></div>
<app-time kind="since" [time]="block.timestamp" [fastRender]="true"></app-time></div>
</div>
<div class="animated" [class]="showMiningInfo ? 'show' : 'hide'" *ngIf="block.extras?.pool != undefined">
<a [attr.data-cy]="'bitcoin-block-' + offset + '-index-' + i + '-pool'" class="badge badge-primary"

View File

@@ -43,7 +43,7 @@
&lrm;{{ block.timestamp * 1000 | date:'yyyy-MM-dd HH:mm' }}
</td>
<td class="mined" *ngIf="!widget" [class]="indexingAvailable ? '' : 'legacy'">
<app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since>
<app-time kind="since" [time]="block.timestamp" [fastRender]="true"></app-time>
</td>
<td *ngIf="auditAvailable" class="health text-right" [ngClass]="{'widget': widget, 'legacy': !indexingAvailable}">
<a

View File

@@ -13,7 +13,7 @@
<td class="d-none d-md-block"><a [routerLink]="['/block' | relativeUrl, diffChange.height]">{{ diffChange.height
}}</a></td>
<td class="text-left">
<app-time-since [time]="diffChange.timestamp" [fastRender]="true"></app-time-since>
<app-time kind="since" [time]="diffChange.timestamp" [fastRender]="true"></app-time>
</td>
<td class="text-right">{{ diffChange.difficultyShorten }}</td>
<td class="text-right" [style]="diffChange.change >= 0 ? 'color: #42B747' : 'color: #B74242'">

View File

@@ -10,7 +10,7 @@
<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>
</div>
<div class="symbol"><app-time-until [time]="epochData.estimatedRetargetDate" [fastRender]="true"></app-time-until></div>
<div class="symbol"><app-time kind="until" [time]="epochData.estimatedRetargetDate" [fastRender]="true"></app-time></div>
</div>
<div class="item">
<h5 class="card-title" i18n="difficulty-box.estimate">Estimate</h5>
@@ -53,7 +53,7 @@
<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>
</div>
<div class="symbol"><app-time-until [time]="epochData.timeUntilHalving" [fastRender]="true"></app-time-until></div>
<div class="symbol"><app-time kind="until" [time]="epochData.timeUntilHalving" [fastRender]="true"></app-time></div>
</div>
</div>
</div>

View File

@@ -1,10 +1,9 @@
<div *ngIf="stateService.env.MINING_DASHBOARD || stateService.env.LIGHTNING" class="mb-3 d-flex menu"
style="padding: 0px 35px;">
<div *ngIf="stateService.env.MINING_DASHBOARD || stateService.env.LIGHTNING" class="mb-3 d-flex menu">
<a routerLinkActive="active" class="btn btn-primary mr-1" [class]="padding"
<a routerLinkActive="active" class="btn btn-primary" [class]="padding"
[routerLink]="['/graphs/mempool' | relativeUrl]">Mempool</a>
<div ngbDropdown class="mr-1" [class]="padding" *ngIf="stateService.env.MINING_DASHBOARD">
<div ngbDropdown [class]="padding" *ngIf="stateService.env.MINING_DASHBOARD">
<button class="btn btn-primary w-100" id="dropdownBasic1" ngbDropdownToggle i18n="mining">Mining</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic1">
<a class="dropdown-item" routerLinkActive="active" [routerLink]="['/graphs/mining/pools' | relativeUrl]"

View File

@@ -1,6 +1,15 @@
.menu {
flex-grow: 1;
padding: 0 35px;
@media (min-width: 576px) {
max-width: 400px;
}
}
& > * {
margin: 0;
margin-inline-end: 0.25rem;
&.last-child {
margin-inline-end: 0;
}
}
}

View File

@@ -54,31 +54,6 @@
height: 240px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.pool-distribution {
min-height: 56px;
display: block;

View File

@@ -1,7 +1,7 @@
import { ChangeDetectionStrategy, Component, Inject, Input, LOCALE_ID, OnInit, HostBinding } from '@angular/core';
import { EChartsOption, graphic } from 'echarts';
import { Observable } from 'rxjs';
import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
import { merge, Observable, of } from 'rxjs';
import { map, mergeMap, share, startWith, switchMap, tap } from 'rxjs/operators';
import { ApiService } from '../../services/api.service';
import { SeoService } from '../../services/seo.service';
import { formatNumber } from '@angular/common';
@@ -84,77 +84,84 @@ export class HashrateChartComponent implements OnInit {
}
});
this.hashrateObservable$ = this.radioGroupForm.get('dateSpan').valueChanges
.pipe(
startWith(this.radioGroupForm.controls.dateSpan.value),
switchMap((timespan) => {
if (!this.widget && !firstRun) {
this.storageService.setValue('miningWindowPreference', timespan);
}
this.timespan = timespan;
firstRun = false;
this.miningWindowPreference = timespan;
this.isLoading = true;
return this.apiService.getHistoricalHashrate$(timespan)
.pipe(
tap((response) => {
const data = response.body;
this.hashrateObservable$ = merge(
this.radioGroupForm.get('dateSpan').valueChanges
.pipe(
startWith(this.radioGroupForm.controls.dateSpan.value),
switchMap((timespan) => {
if (!this.widget && !firstRun) {
this.storageService.setValue('miningWindowPreference', timespan);
}
this.timespan = timespan;
firstRun = false;
this.miningWindowPreference = timespan;
this.isLoading = true;
return this.apiService.getHistoricalHashrate$(this.timespan);
})
),
this.stateService.chainTip$
.pipe(
switchMap(() => {
return this.apiService.getHistoricalHashrate$(this.timespan);
})
)
).pipe(
tap((response: any) => {
const data = response.body;
// We generate duplicated data point so the tooltip works nicely
const diffFixed = [];
let diffIndex = 1;
let hashIndex = 0;
while (hashIndex < data.hashrates.length) {
if (diffIndex >= data.difficulty.length) {
while (hashIndex < data.hashrates.length) {
diffFixed.push({
timestamp: data.hashrates[hashIndex].timestamp,
difficulty: data.difficulty.length > 0 ? data.difficulty[data.difficulty.length - 1].difficulty : null
});
++hashIndex;
}
break;
}
while (hashIndex < data.hashrates.length && diffIndex < data.difficulty.length &&
data.hashrates[hashIndex].timestamp <= data.difficulty[diffIndex].time
) {
diffFixed.push({
timestamp: data.hashrates[hashIndex].timestamp,
difficulty: data.difficulty[diffIndex - 1].difficulty
});
++hashIndex;
}
++diffIndex;
}
let maResolution = 15;
const hashrateMa = [];
for (let i = maResolution - 1; i < data.hashrates.length; ++i) {
let avg = 0;
for (let y = maResolution - 1; y >= 0; --y) {
avg += data.hashrates[i - y].avgHashrate;
}
avg /= maResolution;
hashrateMa.push([data.hashrates[i].timestamp * 1000, avg]);
}
this.prepareChartOptions({
hashrates: data.hashrates.map(val => [val.timestamp * 1000, val.avgHashrate]),
difficulty: diffFixed.map(val => [val.timestamp * 1000, val.difficulty]),
hashrateMa: hashrateMa,
// We generate duplicated data point so the tooltip works nicely
const diffFixed = [];
let diffIndex = 1;
let hashIndex = 0;
while (hashIndex < data.hashrates.length) {
if (diffIndex >= data.difficulty.length) {
while (hashIndex < data.hashrates.length) {
diffFixed.push({
timestamp: data.hashrates[hashIndex].timestamp,
difficulty: data.difficulty.length > 0 ? data.difficulty[data.difficulty.length - 1].difficulty : null
});
this.isLoading = false;
}),
map((response) => {
const data = response.body;
return {
blockCount: parseInt(response.headers.get('x-total-count'), 10),
currentDifficulty: data.currentDifficulty,
currentHashrate: data.currentHashrate,
};
}),
);
++hashIndex;
}
break;
}
while (hashIndex < data.hashrates.length && diffIndex < data.difficulty.length &&
data.hashrates[hashIndex].timestamp <= data.difficulty[diffIndex].time
) {
diffFixed.push({
timestamp: data.hashrates[hashIndex].timestamp,
difficulty: data.difficulty[diffIndex - 1].difficulty
});
++hashIndex;
}
++diffIndex;
}
let maResolution = 15;
const hashrateMa = [];
for (let i = maResolution - 1; i < data.hashrates.length; ++i) {
let avg = 0;
for (let y = maResolution - 1; y >= 0; --y) {
avg += data.hashrates[i - y].avgHashrate;
}
avg /= maResolution;
hashrateMa.push([data.hashrates[i].timestamp * 1000, avg]);
}
this.prepareChartOptions({
hashrates: data.hashrates.map(val => [val.timestamp * 1000, val.avgHashrate]),
difficulty: diffFixed.map(val => [val.timestamp * 1000, val.difficulty]),
hashrateMa: hashrateMa,
});
this.isLoading = false;
}),
map((response) => {
const data = response.body;
return {
blockCount: parseInt(response.headers.get('x-total-count'), 10),
currentDifficulty: data.currentDifficulty,
currentHashrate: data.currentHashrate,
};
}),
share()
);

View File

@@ -48,31 +48,6 @@
max-height: 293px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.loadingGraphs {
position: absolute;
top: 50%;

View File

@@ -23,10 +23,10 @@
</div>
<div [attr.data-cy]="'mempool-block-' + i + '-time'" class="time-difference" *ngIf="projectedBlock.blockVSize <= stateService.blockVSize; else mergedBlock">
<ng-template [ngIf]="network === 'liquid' || network === 'liquidtestnet'" [ngIfElse]="timeDiffMainnet">
<app-time-until [time]="(1 * i) + now + 61000" [fastRender]="false" [fixedRender]="true"></app-time-until>
<app-time kind="until" [time]="(1 * i) + now + 61000" [fastRender]="false" [fixedRender]="true"></app-time>
</ng-template>
<ng-template #timeDiffMainnet>
<app-time-until [time]="da.timeAvg * (i + 1) + now + da.timeOffset" [fastRender]="false" [fixedRender]="true" [forceFloorOnTimeIntervals]="['hour']"></app-time-until>
<app-time kind="until" [time]="da.timeAvg * (i + 1) + now + da.timeOffset" [fastRender]="false" [fixedRender]="true" [forceFloorOnTimeIntervals]="['hour']"></app-time>
</ng-template>
</div>
<ng-template #mergedBlock>

View File

@@ -33,31 +33,6 @@
}
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.bottom-padding {
@media (max-width: 992px) {
padding-bottom: 65px

View File

@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, NgZone, OnInit, HostBinding
import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { EChartsOption, PieSeriesOption } from 'echarts';
import { concat, Observable } from 'rxjs';
import { merge, Observable } from 'rxjs';
import { map, share, startWith, switchMap, tap } from 'rxjs/operators';
import { SeoService } from '../../services/seo.service';
import { StorageService } from '../..//services/storage.service';
@@ -73,7 +73,7 @@ export class PoolRankingComponent implements OnInit {
}
});
this.miningStatsObservable$ = concat(
this.miningStatsObservable$ = merge(
this.radioGroupForm.get('dateSpan').valueChanges
.pipe(
startWith(this.radioGroupForm.controls.dateSpan.value), // (trigger when the page loads)
@@ -89,7 +89,7 @@ export class PoolRankingComponent implements OnInit {
return this.miningService.getMiningStats(this.miningWindowPreference);
})
),
this.stateService.blocks$
this.stateService.chainTip$
.pipe(
switchMap(() => {
return this.miningService.getMiningStats(this.miningWindowPreference);

View File

@@ -227,7 +227,7 @@
&lrm;{{ block.timestamp * 1000 | date:'yyyy-MM-dd HH:mm' }}
</td>
<td class="mined">
<app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since>
<app-time kind="since" [time]="block.timestamp" [fastRender]="true"></app-time>
</td>
<td class="coinbase">
<span class="badge badge-secondary scriptmessage longer">

View File

@@ -1,7 +1,7 @@
<form [formGroup]="searchForm" (submit)="searchForm.valid && search()" novalidate>
<div class="d-flex">
<div class="search-box-container mr-2">
<input (focus)="focus$.next($any($event).target.value)" (click)="click$.next($any($event).target.value)" formControlName="searchText" type="text" class="form-control" i18n-placeholder="search-form.searchbar-placeholder" placeholder="Explore the full Bitcoin ecosystem">
<input autofocus (focus)="focus$.next($any($event).target.value)" (click)="click$.next($any($event).target.value)" formControlName="searchText" type="text" class="form-control" i18n-placeholder="search-form.searchbar-placeholder" placeholder="Explore the full Bitcoin ecosystem">
<app-search-results #searchResults [hidden]="dropdownHidden" [results]="typeAhead$ | async" (selectedResult)="selectedResult($event)"></app-search-results>
</div>
<div>

View File

@@ -49,6 +49,9 @@
<label class="btn btn-primary btn-sm" [class.active]="radioGroupForm.get('dateSpan').value === '3y'">
<input type="radio" [value]="'3y'" [routerLink]="['/graphs' | relativeUrl]" fragment="3y" formControlName="dateSpan"> 3Y
</label>
<label class="btn btn-primary btn-sm" [class.active]="radioGroupForm.get('dateSpan').value === '4y'">
<input type="radio" [value]="'4y'" [routerLink]="['/graphs' | relativeUrl]" fragment="4y" formControlName="dateSpan"> 4Y
</label>
</div>
<div class="small-buttons">
<div ngbDropdown #myDrop="ngbDropdown">

View File

@@ -70,7 +70,7 @@ export class StatisticsComponent implements OnInit {
this.route
.fragment
.subscribe((fragment) => {
if (['2h', '24h', '1w', '1m', '3m', '6m', '1y', '2y', '3y'].indexOf(fragment) > -1) {
if (['2h', '24h', '1w', '1m', '3m', '6m', '1y', '2y', '3y', '4y'].indexOf(fragment) > -1) {
this.radioGroupForm.controls.dateSpan.setValue(fragment, { emitEvent: false });
}
});
@@ -109,7 +109,10 @@ export class StatisticsComponent implements OnInit {
if (this.radioGroupForm.controls.dateSpan.value === '2y') {
return this.apiService.list2YStatistics$();
}
return this.apiService.list3YStatistics$();
if (this.radioGroupForm.controls.dateSpan.value === '3y') {
return this.apiService.list3YStatistics$();
}
return this.apiService.list4YStatistics$();
})
)
.subscribe((mempoolStats: any) => {
@@ -181,7 +184,7 @@ export class StatisticsComponent implements OnInit {
}
let capRatio = 10;
if (['1m', '3m', '6m', '1y', '2y', '3y'].includes(this.graphWindowPreference)) {
if (['1m', '3m', '6m', '1y', '2y', '3y', '4y'].includes(this.graphWindowPreference)) {
capRatio = 4;
}

View File

@@ -25,6 +25,12 @@
</defs>
</svg>
</ng-container>
<ng-container *ngSwitchCase="'warning'">
<svg [class]="class" [style]="style" [attr.width]="width" [attr.height]="height" [attr.viewBox]="viewBox" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M135.3 34.474c-15.62 27.306-54.206 95.63-85.21 150.534L9.075 257.583C5.382 264.08 6.76 269.217 7.908 271.7c2.326 5.028 7.29 7.537 11.155 8.215l.78.133 264.698.006-.554-.02c4.152.255 9.664-1.24 12.677-6.194 1.926-3.18 3.31-8.589-1.073-16.278L213.637 114.37l-45.351-79.205c-5.681-9.932-12.272-12.022-16.8-12.022-4.42 0-10.818 1.964-16.181 11.331h-.006zm-69.072 159.94c30.997-54.885 69.563-123.184 85.16-150.446l.186-.297c.2.303.393.582.618.981l45.363 79.22s72.377 126.47 78.569 137.283l-247.618-.007 37.719-66.734" style="fill:#ffc107;fill-opacity:1"/>
<path d="M152.597 247.445c8.02 0 14.518-6.728 14.518-15.025 0-8.29-6.499-15.018-14.518-15.018-8.031 0-14.529 6.728-14.529 15.018 0 8.297 6.498 15.025 14.53 15.025m-.001-147.18c11.586 0 22.23 10.958 20.977 21.7l-9.922 75.564c-.966 6.601-4.95 11.433-11.055 11.433s-10.102-4.832-11.056-11.433l-9.927-75.564c-1.26-10.742 9.39-21.7 20.983-21.7" style="fill:#ffc107;fill-opacity:1"/>
</svg>
</ng-container>
<ng-container *ngSwitchCase="'mempoolSpace'">
<svg [class]="class" [style]="style" [attr.width]="width" [attr.height]="height" [attr.viewBox]="viewBox" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M 219.548 86.198 L 219.548 63.833 C 219.548 60.359 218.746 57.686 217.163 55.919 C 215.601 54.151 213.237 53.267 210.195 53.267 C 206.762 53.267 203.946 54.377 202.013 56.453 C 200.081 58.55 199.053 61.633 199.053 65.395 L 199.053 86.219 L 191.447 86.219 L 191.447 63.833 C 191.447 56.823 188.282 53.267 182.032 53.267 C 178.6 53.267 175.783 54.377 173.851 56.453 C 171.919 58.55 170.891 61.633 170.891 65.395 L 170.891 86.219 L 163.285 86.219 L 163.285 46.422 L 170.685 46.422 L 170.685 50.759 C 173.687 47.799 178.003 46.175 182.999 46.175 C 188.96 46.175 193.667 48.498 196.36 52.753 C 199.608 48.559 204.85 46.175 210.955 46.175 C 215.93 46.175 219.877 47.614 222.693 50.43 C 225.632 53.39 227.174 57.871 227.154 63.36 L 227.154 86.198 L 219.548 86.198 Z" fill="white"/>
@@ -104,4 +110,4 @@
</g>
</g>
</svg>
</ng-template>
</ng-template>

View File

@@ -13,4 +13,5 @@ export class SvgImagesComponent {
@Input() width: string;
@Input() height: string;
@Input() viewBox: string;
@Input() fill: string;
}

View File

@@ -1,98 +0,0 @@
import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnChanges } from '@angular/core';
import { StateService } from '../../services/state.service';
import { dates } from '../../shared/i18n/dates';
@Component({
selector: 'app-time-since',
template: `{{ text }}`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TimeSinceComponent implements OnInit, OnChanges, OnDestroy {
interval: number;
text: string;
intervals = {};
@Input() time: number;
@Input() dateString: number;
@Input() fastRender = false;
constructor(
private ref: ChangeDetectorRef,
private stateService: StateService,
) {
this.intervals = {
year: 31536000,
month: 2592000,
week: 604800,
day: 86400,
hour: 3600,
minute: 60,
second: 1
};
}
ngOnInit() {
if (!this.stateService.isBrowser) {
this.text = this.calculate();
this.ref.markForCheck();
return;
}
this.interval = window.setInterval(() => {
this.text = this.calculate();
this.ref.markForCheck();
}, 1000 * (this.fastRender ? 1 : 60));
}
ngOnChanges() {
this.text = this.calculate();
this.ref.markForCheck();
}
ngOnDestroy() {
clearInterval(this.interval);
}
calculate() {
let date: Date;
if (this.dateString) {
date = new Date(this.dateString)
} else {
date = new Date(this.time * 1000);
}
const seconds = Math.floor((+new Date() - +date) / 1000);
if (seconds < 60) {
return $localize`:@@date-base.just-now:Just now`;
}
let counter: number;
for (const i in this.intervals) {
if (this.intervals.hasOwnProperty(i)) {
counter = Math.floor(seconds / this.intervals[i]);
const dateStrings = dates(counter);
if (counter > 0) {
if (counter === 1) {
switch (i) { // 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 (i) { // 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;
}
}
}
}
}
}
}

View File

@@ -1,91 +0,0 @@
import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnChanges } from '@angular/core';
import { StateService } from '../../services/state.service';
import { dates } from '../../shared/i18n/dates';
@Component({
selector: 'app-time-span',
template: `{{ text }}`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TimeSpanComponent implements OnInit, OnChanges, OnDestroy {
interval: number;
text: string;
intervals = {};
@Input() time: number;
@Input() fastRender = false;
constructor(
private ref: ChangeDetectorRef,
private stateService: StateService,
) {
this.intervals = {
year: 31536000,
month: 2592000,
week: 604800,
day: 86400,
hour: 3600,
minute: 60,
second: 1
};
}
ngOnInit() {
if (!this.stateService.isBrowser) {
this.text = this.calculate();
this.ref.markForCheck();
return;
}
this.interval = window.setInterval(() => {
this.text = this.calculate();
this.ref.markForCheck();
}, 1000 * (this.fastRender ? 1 : 60));
}
ngOnChanges() {
this.text = this.calculate();
this.ref.markForCheck();
}
ngOnDestroy() {
clearInterval(this.interval);
}
calculate() {
const seconds = Math.floor(this.time);
if (seconds < 60) {
return $localize`:@@date-base.just-now:Just now`;
}
let counter: number;
for (const i in this.intervals) {
if (this.intervals.hasOwnProperty(i)) {
counter = Math.floor(seconds / this.intervals[i]);
const dateStrings = dates(counter);
if (counter > 0) {
if (counter === 1) {
switch (i) { // 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 (i) { // 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;
}
}
}
}
}
}
}

View File

@@ -1,104 +0,0 @@
import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnChanges } from '@angular/core';
import { StateService } from '../../services/state.service';
import { dates } from '../../shared/i18n/dates';
@Component({
selector: 'app-time-until',
template: `{{ text }}`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TimeUntilComponent implements OnInit, OnChanges, OnDestroy {
interval: number;
text: string;
intervals = {};
@Input() time: number;
@Input() fastRender = false;
@Input() fixedRender = false;
@Input() forceFloorOnTimeIntervals: string[];
constructor(
private ref: ChangeDetectorRef,
private stateService: StateService,
) {
this.intervals = {
year: 31536000,
month: 2592000,
week: 604800,
day: 86400,
hour: 3600,
minute: 60,
second: 1
};
}
ngOnInit() {
if(this.fixedRender){
this.text = this.calculate();
return;
}
if (!this.stateService.isBrowser) {
this.text = this.calculate();
this.ref.markForCheck();
return;
}
this.interval = window.setInterval(() => {
this.text = this.calculate();
this.ref.markForCheck();
}, 1000 * (this.fastRender ? 1 : 60));
}
ngOnChanges() {
this.text = this.calculate();
this.ref.markForCheck();
}
ngOnDestroy() {
clearInterval(this.interval);
}
calculate() {
const seconds = (+new Date(this.time) - +new Date()) / 1000;
if (seconds < 60) {
const dateStrings = dates(1);
return $localize`:@@time-until:In ~${dateStrings.i18nMinute}:DATE:`;
}
let counter: number;
for (const i in this.intervals) {
if (this.intervals.hasOwnProperty(i)) {
if (this.forceFloorOnTimeIntervals && this.forceFloorOnTimeIntervals.indexOf(i) > -1) {
counter = Math.floor(seconds / this.intervals[i]);
} else {
counter = Math.round(seconds / this.intervals[i]);
}
const dateStrings = dates(counter);
if (counter > 0) {
if (counter === 1) {
switch (i) { // 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 (i) { // 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;
}
}
}
}
}
}
}

View File

@@ -0,0 +1,190 @@
import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, Input, ChangeDetectorRef, OnChanges } from '@angular/core';
import { StateService } from '../../services/state.service';
import { dates } from '../../shared/i18n/dates';
@Component({
selector: 'app-time',
template: `{{ text }}`,
changeDetection: ChangeDetectionStrategy.OnPush
})
export class TimeComponent implements OnInit, OnChanges, OnDestroy {
interval: number;
text: string;
intervals = {};
@Input() time: number;
@Input() dateString: number;
@Input() kind: 'plain' | 'since' | 'until' | 'span' = 'plain';
@Input() fastRender = false;
@Input() fixedRender = false;
@Input() relative = false;
@Input() forceFloorOnTimeIntervals: string[];
constructor(
private ref: ChangeDetectorRef,
private stateService: StateService,
) {
this.intervals = {
year: 31536000,
month: 2592000,
week: 604800,
day: 86400,
hour: 3600,
minute: 60,
second: 1
};
}
ngOnInit() {
if(this.fixedRender){
this.text = this.calculate();
return;
}
if (!this.stateService.isBrowser) {
this.text = this.calculate();
this.ref.markForCheck();
return;
}
this.interval = window.setInterval(() => {
this.text = this.calculate();
this.ref.markForCheck();
}, 1000 * (this.fastRender ? 1 : 60));
}
ngOnChanges() {
this.text = this.calculate();
this.ref.markForCheck();
}
ngOnDestroy() {
clearInterval(this.interval);
}
calculate() {
let seconds: number;
switch (this.kind) {
case 'since':
seconds = Math.floor((+new Date() - +new Date(this.dateString || this.time * 1000)) / 1000);
break;
case 'until':
seconds = (+new Date(this.time) - +new Date()) / 1000;
break;
default:
seconds = Math.floor(this.time);
}
if (seconds < 60) {
if (this.relative || this.kind === 'since') {
return $localize`:@@date-base.just-now:Just now`;
} else if (this.kind === 'until') {
seconds = 60;
}
}
let counter: number;
for (const i in this.intervals) {
if (this.kind !== 'until' || this.forceFloorOnTimeIntervals && this.forceFloorOnTimeIntervals.indexOf(i) > -1) {
counter = Math.floor(seconds / this.intervals[i]);
} else {
counter = Math.round(seconds / this.intervals[i]);
}
const dateStrings = dates(counter);
if (counter > 0) {
switch (this.kind) {
case 'since':
if (counter === 1) {
switch (i) { // 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 (i) { // 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 (counter === 1) {
switch (i) { // 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 (i) { // 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 (counter === 1) {
switch (i) { // 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 (i) { // 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 (counter === 1) {
switch (i) { // 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 (i) { // 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;
}
}
}
}
}
}
}

View File

@@ -57,14 +57,14 @@
<td>
&lrm;{{ tx.status.block_time * 1000 | date:'yyyy-MM-dd HH:mm' }}
<div class="lg-inline">
<i class="symbol">(<app-time-since [time]="tx.status.block_time" [fastRender]="true"></app-time-since>)</i>
<i class="symbol">(<app-time kind="since" [time]="tx.status.block_time" [fastRender]="true"></app-time>)</i>
</div>
</td>
</tr>
<ng-template [ngIf]="transactionTime > 0">
<tr>
<td i18n="transaction.confirmed|Transaction Confirmed state">Confirmed</td>
<td><app-time-span [time]="tx.status.block_time - transactionTime" [fastRender]="true"></app-time-span></td>
<td><app-time kind="span" [time]="tx.status.block_time - transactionTime" [fastRender]="true" [relative]="true"></app-time></td>
</tr>
</ng-template>
<tr *ngIf="network !== 'liquid' && network !== 'liquidtestnet'">
@@ -100,7 +100,7 @@
<ng-template #firstSeenTmpl>
<tr>
<td i18n="transaction.first-seen|Transaction first seen">First seen</td>
<td><i><app-time-since [time]="transactionTime" [fastRender]="true"></app-time-since></i></td>
<td><i><app-time kind="since" [time]="transactionTime" [fastRender]="true"></app-time></i></td>
</tr>
</ng-template>
</ng-template>
@@ -116,10 +116,10 @@
</ng-template>
<ng-template #belowBlockLimit>
<ng-template [ngIf]="network === 'liquid' || network === 'liquidtestnet'" [ngIfElse]="timeEstimateDefault">
<app-time-until [time]="(60 * 1000 * txInBlockIndex) + now" [fastRender]="false" [fixedRender]="true"></app-time-until>
<app-time kind="until" [time]="(60 * 1000 * txInBlockIndex) + now" [fastRender]="false" [fixedRender]="true"></app-time>
</ng-template>
<ng-template #timeEstimateDefault>
<app-time-until *ngIf="(timeAvg$ | async) as timeAvg;" [time]="(timeAvg * txInBlockIndex) + now + timeAvg" [fastRender]="false" [fixedRender]="true" [forceFloorOnTimeIntervals]="['hour']"></app-time-until>
<app-time kind="until" *ngIf="(timeAvg$ | async) as timeAvg;" [time]="(timeAvg * txInBlockIndex) + now + timeAvg" [fastRender]="false" [fixedRender]="true" [forceFloorOnTimeIntervals]="['hour']"></app-time>
</ng-template>
</ng-template>
</ng-template>
@@ -210,6 +210,7 @@
<div class="graph-container" #graphContainer>
<tx-bowtie-graph
[tx]="tx"
[cached]="isCached"
[width]="graphWidth"
[height]="graphHeight"
[lineLimit]="inOutLimit"
@@ -250,7 +251,7 @@
</div>
<app-transactions-list #txList [transactions]="[tx]" [errorUnblinded]="errorUnblinded" [inputIndex]="inputIndex" [outputIndex]="outputIndex" [transactionPage]="true"></app-transactions-list>
<app-transactions-list #txList [transactions]="[tx]" [cached]="isCached" [errorUnblinded]="errorUnblinded" [inputIndex]="inputIndex" [outputIndex]="outputIndex" [transactionPage]="true"></app-transactions-list>
<div class="title text-left">
<h2 i18n="transaction.details">Details</h2>

View File

@@ -57,6 +57,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
fetchCpfp$ = new Subject<string>();
fetchRbfHistory$ = new Subject<string>();
fetchCachedTx$ = new Subject<string>();
isCached: boolean = false;
now = new Date().getTime();
timeAvg$: Observable<number>;
liquidUnblinding = new LiquidUnblinding();
@@ -196,6 +197,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
}
this.tx = tx;
this.isCached = true;
if (tx.fee === undefined) {
this.tx.fee = 0;
}
@@ -289,6 +291,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
}
this.tx = tx;
this.isCached = false;
if (tx.fee === undefined) {
this.tx.fee = 0;
}
@@ -362,7 +365,6 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
this.waitingForTransaction = false;
}
this.rbfTransaction = rbfTransaction;
this.cacheService.setTxCache([this.rbfTransaction]);
this.replaced = true;
if (rbfTransaction && !this.tx) {
this.fetchCachedTx$.next(this.txId);

View File

@@ -6,7 +6,7 @@
<div>
<ng-template [ngIf]="tx.status.confirmed">&lrm;{{ tx.status.block_time * 1000 | date:'yyyy-MM-dd HH:mm' }}</ng-template>
<ng-template [ngIf]="!tx.status.confirmed && tx.firstSeen">
<i><app-time-since [time]="tx.firstSeen" [fastRender]="true"></app-time-since></i>
<i><app-time kind="since" [time]="tx.firstSeen" [fastRender]="true"></app-time></i>
</ng-template>
</div>
</div>

View File

@@ -1,7 +1,7 @@
import { Component, OnInit, Input, ChangeDetectionStrategy, OnChanges, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';
import { StateService } from '../../services/state.service';
import { CacheService } from '../../services/cache.service';
import { Observable, ReplaySubject, BehaviorSubject, merge, Subscription } from 'rxjs';
import { Observable, ReplaySubject, BehaviorSubject, merge, Subscription, of } from 'rxjs';
import { Outspend, Transaction, Vin, Vout } from '../../interfaces/electrs.interface';
import { ElectrsApiService } from '../../services/electrs-api.service';
import { environment } from '../../../environments/environment';
@@ -23,6 +23,7 @@ export class TransactionsListComponent implements OnInit, OnChanges {
showMoreIncrement = 1000;
@Input() transactions: Transaction[];
@Input() cached: boolean = false;
@Input() showConfirmations = false;
@Input() transactionPage = false;
@Input() errorUnblinded = false;
@@ -67,7 +68,13 @@ export class TransactionsListComponent implements OnInit, OnChanges {
this.outspendsSubscription = merge(
this.refreshOutspends$
.pipe(
switchMap((txIds) => this.apiService.getOutspendsBatched$(txIds)),
switchMap((txIds) => {
if (!this.cached) {
return this.apiService.getOutspendsBatched$(txIds);
} else {
return of([]);
}
}),
tap((outspends: Outspend[][]) => {
if (!this.transactions) {
return;
@@ -155,7 +162,7 @@ export class TransactionsListComponent implements OnInit, OnChanges {
).subscribe();
});
const txIds = this.transactions.filter((tx) => !tx._outspends).map((tx) => tx.txid);
if (txIds.length) {
if (txIds.length && !this.cached) {
this.refreshOutspends$.next(txIds);
}
if (this.stateService.env.LIGHTNING) {

View File

@@ -2,7 +2,7 @@ import { Component, OnInit, Input, OnChanges, HostListener, Inject, LOCALE_ID }
import { StateService } from '../../services/state.service';
import { Outspend, Transaction } from '../../interfaces/electrs.interface';
import { Router } from '@angular/router';
import { ReplaySubject, merge, Subscription } from 'rxjs';
import { ReplaySubject, merge, Subscription, of } from 'rxjs';
import { tap, switchMap } from 'rxjs/operators';
import { ApiService } from '../../services/api.service';
import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe';
@@ -40,6 +40,7 @@ interface Xput {
export class TxBowtieGraphComponent implements OnInit, OnChanges {
@Input() tx: Transaction;
@Input() network: string;
@Input() cached: boolean = false;
@Input() width = 1200;
@Input() height = 600;
@Input() lineLimit = 250;
@@ -107,7 +108,13 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
this.outspendsSubscription = merge(
this.refreshOutspends$
.pipe(
switchMap((txid) => this.apiService.getOutspendsBatched$([txid])),
switchMap((txid) => {
if (!this.cached) {
return this.apiService.getOutspendsBatched$([txid]);
} else {
return of(null);
}
}),
tap((outspends: Outspend[][]) => {
if (!this.tx || !outspends || !outspends.length) {
return;
@@ -132,7 +139,9 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
ngOnChanges(): void {
this.initGraph();
this.refreshOutspends$.next(this.tx.txid);
if (!this.cached) {
this.refreshOutspends$.next(this.tx.txid);
}
}
initGraph(): void {

View File

@@ -93,7 +93,7 @@
<tbody>
<tr *ngFor="let block of blocks$ | async; let i = index; trackBy: trackByBlock">
<td class="table-cell-height" ><a [routerLink]="['/block' | relativeUrl, block.id]" [state]="{ data: { block: block } }">{{ block.height }}</a></td>
<td *ngIf="!stateService.env.MINING_DASHBOARD" class="table-cell-mined" ><app-time-since [time]="block.timestamp" [fastRender]="true"></app-time-since></td>
<td *ngIf="!stateService.env.MINING_DASHBOARD" class="table-cell-mined" ><app-time kind="since" [time]="block.timestamp" [fastRender]="true"></app-time></td>
<td *ngIf="stateService.env.MINING_DASHBOARD" class="table-cell-mined pl-lg-4">
<a class="clear-link" [routerLink]="[('/mining/pool/' + block.extras.pool.slug) | relativeUrl]">
<img width="22" height="22" src="{{ block.extras.pool['logo'] }}"

View File

@@ -10,7 +10,8 @@
<div class="doc-content">
<div id="disclaimer">
<table><tr><td><svg viewBox="0 0 304 304" xmlns="http://www.w3.org/2000/svg"><g fill-rule="evenodd" style="fill:#ffc107;fill-opacity:1"><path d="M135.3 34.474c-15.62 27.306-54.206 95.63-85.21 150.534L9.075 257.583C5.382 264.08 6.76 269.217 7.908 271.7c2.326 5.028 7.29 7.537 11.155 8.215l.78.133 264.698.006-.554-.02c4.152.255 9.664-1.24 12.677-6.194 1.926-3.18 3.31-8.589-1.073-16.278L213.637 114.37l-45.351-79.205c-5.681-9.932-12.272-12.022-16.8-12.022-4.42 0-10.818 1.964-16.181 11.331h-.006zm-69.072 159.94c30.997-54.885 69.563-123.184 85.16-150.446l.186-.297c.2.303.393.582.618.981l45.363 79.22s72.377 126.47 78.569 137.283l-247.618-.007 37.719-66.734" style="fill:#ffc107;fill-opacity:1"/><path d="M152.597 247.445c8.02 0 14.518-6.728 14.518-15.025 0-8.29-6.499-15.018-14.518-15.018-8.031 0-14.529 6.728-14.529 15.018 0 8.297 6.498 15.025 14.53 15.025m-.001-147.18c11.586 0 22.23 10.958 20.977 21.7l-9.922 75.564c-.966 6.601-4.95 11.433-11.055 11.433s-10.102-4.832-11.056-11.433l-9.927-75.564c-1.26-10.742 9.39-21.7 20.983-21.7" style="fill:#ffc107;fill-opacity:1"/></g></svg></td><td><p i18n="faq.big-disclaimer"><b>mempool.space merely provides data about the Bitcoin network.</b> It cannot help you with retrieving funds, confirming your transaction quicker, etc.</p><p>For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).</p></td></tr></table>
<table *ngIf="!mobileViewport"><tr><td><app-svg-images name="warning" class="disclaimer-warning" viewBox="0 0 304 304" fill="#ffc107" width="50" height="50"></app-svg-images></td><td><p i18n="faq.big-disclaimer"><b>mempool.space merely provides data about the Bitcoin network.</b> It cannot help you with retrieving funds, confirming your transaction quicker, etc.</p><p>For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).</p></td></tr></table>
<div *ngIf="mobileViewport"><app-svg-images name="warning" class="disclaimer-warning" viewBox="0 0 304 304" fill="#ffc107" width="50" height="50"></app-svg-images><p i18n="faq.big-disclaimer"><b>mempool.space merely provides data about the Bitcoin network.</b> It cannot help you with retrieving funds, confirming your transaction quicker, etc.</p><p>For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).</p></div>
</div>

View File

@@ -274,10 +274,8 @@ h3 {
margin: 24px 0;
}
#disclaimer svg {
width: 50px;
height: auto;
margin-right: 32px;
.disclaimer-warning {
margin-right: 50px;
}
#disclaimer p:last-child {
@@ -294,6 +292,12 @@ h3 {
display: none;
}
.disclaimer-warning {
display: block;
margin: 2px auto 16px;
text-align: center;
}
.doc-content {
width: 100%;
float: unset;
@@ -332,6 +336,10 @@ h3 {
.doc-welcome-note {
font-size: 0.85rem;
}
#disclaimer table {
display: none;
}
}
@media (min-width: 992px) {

View File

@@ -29,6 +29,7 @@ export class ApiDocsComponent implements OnInit, AfterViewInit {
screenWidth: number;
officialMempoolInstance: boolean;
auditEnabled: boolean;
mobileViewport: boolean = false;
@ViewChildren(FaqTemplateDirective) faqTemplates: QueryList<FaqTemplateDirective>;
dict = {};
@@ -43,6 +44,7 @@ export class ApiDocsComponent implements OnInit, AfterViewInit {
this.faqTemplates.forEach((x) => this.dict[x.type] = x.template);
}
this.desktopDocsNavPosition = ( window.pageYOffset > 182 ) ? "fixed" : "relative";
this.mobileViewport = window.innerWidth <= 992;
}
ngAfterViewInit() {

View File

@@ -1,14 +1,14 @@
<span class="green-color" *ngIf="blockConversion; else noblockconversion">
{{
(
(blockConversion.price[currency] >= 0 ? blockConversion.price[currency] : null) ??
(blockConversion.price['USD'] * blockConversion.exchangeRates['USD' + currency]) ?? 0
(blockConversion.price[currency] > -1 ? blockConversion.price[currency] : null) ??
(blockConversion.price['USD'] > -1 ? blockConversion.price['USD'] * blockConversion.exchangeRates['USD' + currency] : null) ?? 0
) * value / 100000000 | fiatCurrency : digitsInfo : currency
}}
</span>
<ng-template #noblockconversion>
<span class="green-color" *ngIf="(conversions$ | async) as conversions">
{{ (conversions[currency] ?? conversions['USD'] ?? 0) * value / 100000000 | fiatCurrency : digitsInfo : currency }}
{{ (conversions[currency] > -1 ? conversions[currency] : 0) * value / 100000000 | fiatCurrency : digitsInfo : currency }}
</span>
</ng-template>

View File

@@ -20,7 +20,7 @@
<div class="clearfix"></div>
<div *ngIf="error" class="d-flex flex-column justify-content-around align-items-center mt-5 w-100" style="min-height: 100px">
<span class="text-center" i18n="lightning.channel-not-found">No channel found for short id "{{ channel.short_id }}"</span>
<span class="text-center">No channel found for ID "{{ channel.short_id }}"</span>
</div>
<app-nodes-channels-map *ngIf="!error && (channelGeo$ | async) as channelGeo" [style]="'channelpage'"

View File

@@ -78,5 +78,5 @@ h3 {
.details-button {
align-self: center;
margin-left: auto;
margin-inline-start: auto;
}

View File

@@ -19,6 +19,14 @@
}
}
:host-context(.rtl-layout) .formRadioGroup {
direction: ltr;
@media (min-width: 435px) {
right: unset;
left: 0;
}
}
.btn-group {
@media (max-width: 435px) {
flex-grow: 1;

View File

@@ -92,7 +92,7 @@
</ng-template>
<input type="text" class="form-control" aria-label="Text input with dropdown button"
[value]="node.socketsObject[selectedSocketIndex].socket">
<button class="btn btn-secondary ml-1" type="button" id="inputGroupFileAddon04" (mouseover)="qrCodeVisible[i] = 1"
<button class="btn btn-secondary" type="button" id="inputGroupFileAddon04" (mouseover)="qrCodeVisible[i] = 1"
(mouseout)="qrCodeVisible[i] = 0">
<fa-icon [icon]="['fas', 'qrcode']" [fixedWidth]="true"></fa-icon>
<div class="qr-wrapper" [hidden]="!qrCodeVisible[i]">

View File

@@ -8,7 +8,7 @@
}
h1 {
margin-left: 15px;
margin-inline-start: 15px;
}
.qr-wrapper {
@@ -57,3 +57,17 @@ h1 {
.description-text {
white-space: break-spaces;
}
.timestamp-first .input-group {
input {
margin-inline-end: .25rem;
}
}
:host-context(.rtl-layout) {
.timestamp-first .input-group {
button {
margin-inline-end: .25rem;
}
}
}

View File

@@ -98,10 +98,10 @@
|
<a [routerLink]="['/privacy-policy']" i18n="shared.privacy-policy|Privacy Policy">Privacy Policy</a>
|
<a *ngIf="officialMempoolSpace" [routerLink]="['/lightning/group/the-mempool-open-source-project' | relativeUrl]" i18n="shared.connect-lightning-node|Link for users to see Lightning nodes run by mempool.space they can connect to">Connect to our nodes</a>
<a *ngIf="officialMempoolSpace" [routerLink]="['/lightning/group/the-mempool-open-source-project' | relativeUrl]">Connect to our nodes</a>
<a *ngIf="!officialMempoolSpace" [routerLink]="['/tx/push' | relativeUrl]" i18n="shared.broadcast-transaction|Broadcast Transaction">Broadcast Transaction</a>
</div>
<br>
</div>
</div>

View File

@@ -146,7 +146,7 @@ export class NodeStatisticsChartComponent implements OnInit {
padding: 10,
data: [
{
name: 'Channels',
name: $localize`:@@807cf11e6ac1cde912496f764c176bdfdd6b7e19:Channels`,
inactiveColor: 'rgb(110, 112, 121)',
textStyle: {
color: 'white',
@@ -154,7 +154,7 @@ export class NodeStatisticsChartComponent implements OnInit {
icon: 'roundRect',
},
{
name: 'Capacity',
name: $localize`:@@ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa:Capacity`,
inactiveColor: 'rgb(110, 112, 121)',
textStyle: {
color: 'white',
@@ -201,7 +201,7 @@ export class NodeStatisticsChartComponent implements OnInit {
series: data.channels.length === 0 ? [] : [
{
zlevel: 1,
name: 'Channels',
name: $localize`:@@807cf11e6ac1cde912496f764c176bdfdd6b7e19:Channels`,
showSymbol: false,
symbol: 'none',
data: data.channels,
@@ -224,7 +224,7 @@ export class NodeStatisticsChartComponent implements OnInit {
{
zlevel: 0,
yAxisIndex: 1,
name: 'Capacity',
name: $localize`:@@ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa:Capacity`,
showSymbol: false,
symbol: 'none',
stack: 'Total',

View File

@@ -17,7 +17,7 @@
<div class="clearfix"></div>
<div *ngIf="error" class="d-flex flex-column justify-content-around align-items-center mt-5 w-100" style="min-height: 100px">
<span class="text-center" i18n="lightning.node-not-found">No node found for public key "{{ node.public_key | shortenString : 12}}"</span>
<span class="text-center">No node found for public key "{{ node.public_key | shortenString : 12}}"</span>
</div>
<div class="box" *ngIf="!error">
@@ -57,7 +57,7 @@
</tr>
<tr *ngIf="(avgChannelDistance$ | async) as avgDistance;">
<td i18n="lightning.avg-distance" class="text-truncate">Avg channel distance</td>
<td>{{ avgDistance | number : '1.0-0' }} <span class="symbol">km</span> <span class="separator">/</span> {{ kmToMiles(avgDistance) | number : '1.0-0' }} <span class="symbol">mi</span></td>
<td class="direction-ltr">{{ avgDistance | number : '1.0-0' }} <span class="symbol">km</span> <span class="separator">/</span> {{ kmToMiles(avgDistance) | number : '1.0-0' }} <span class="symbol">mi</span></td>
</tr>
</tbody>
</table>

View File

@@ -4,10 +4,6 @@
&.widget {
height: 250px;
}
&.graph {
height: auto;
}
}
.card-header {

View File

@@ -229,6 +229,7 @@ export class NodesChannelsMap implements OnInit {
title: title ?? undefined,
tooltip: {},
geo: {
top: 75,
animation: false,
silent: true,
center: this.center,

View File

@@ -53,31 +53,6 @@
height: 145px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.pool-distribution {
min-height: 56px;
display: block;

View File

@@ -182,7 +182,7 @@ export class NodesNetworksChartComponent implements OnInit {
{
zlevel: 1,
yAxisIndex: 0,
name: $localize`Clearnet (IPv4, IPv6)`,
name: $localize`Clearnet Only (IPv4, IPv6)`,
showSymbol: false,
symbol: 'none',
data: data.clearnet_nodes,
@@ -292,7 +292,7 @@ export class NodesNetworksChartComponent implements OnInit {
icon: 'roundRect',
},
{
name: $localize`Clearnet (IPv4, IPv6)`,
name: $localize`Clearnet Only (IPv4, IPv6)`,
inactiveColor: 'rgb(110, 112, 121)',
textStyle: {
color: 'white',
@@ -318,7 +318,7 @@ export class NodesNetworksChartComponent implements OnInit {
],
selected: this.widget ? undefined : JSON.parse(this.storageService.getValue('nodes_networks_legend')) ?? {
'$localize`Darknet Only (Tor, I2P, cjdns)`': true,
'$localize`Clearnet (IPv4, IPv6)`': true,
'$localize`Clearnet Only (IPv4, IPv6)`': true,
'$localize`Clearnet and Darknet`': true,
'$localize`:@@e5d8bb389c702588877f039d72178f219453a72d:Unknown`': true,
}

View File

@@ -34,31 +34,6 @@
}
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.bottom-padding {
@media (max-width: 992px) {
padding-bottom: 65px

View File

@@ -11,7 +11,7 @@
<th class="pool text-left" i18n="nodes.alias" [ngClass]="{'widget': widget}">Alias</th>
<th class="liquidity text-right" i18n="node.channels">Channels</th>
<th *ngIf="!widget" class="d-none d-md-table-cell channels text-right" i18n="lightning.channels">Capacity</th>
<th *ngIf="!widget" class="d-none d-md-table-cell text-right" i18n="node.liquidity">{{ currency$ | async }}</th>
<th *ngIf="!widget" class="d-none d-md-table-cell text-right">{{ currency$ | async }}</th>
<th *ngIf="!widget" class="d-none d-md-table-cell timestamp text-right" i18n="transaction.first-seen|Transaction first seen">First seen</th>
<th *ngIf="!widget" class="d-none d-md-table-cell timestamp text-right" i18n="lightning.last_update">Last update</th>
<th class="geolocation d-table-cell text-right" i18n="lightning.location">Location</th>

View File

@@ -53,31 +53,6 @@
height: 145px;
}
.formRadioGroup {
margin-top: 6px;
display: flex;
flex-direction: column;
@media (min-width: 991px) {
position: relative;
top: -100px;
}
@media (min-width: 830px) and (max-width: 991px) {
position: relative;
top: 0px;
}
@media (min-width: 830px) {
flex-direction: row;
float: right;
margin-top: 0px;
}
.btn-sm {
font-size: 9px;
@media (min-width: 830px) {
font-size: 14px;
}
}
}
.pool-distribution {
min-height: 56px;
display: block;

View File

@@ -68,6 +68,10 @@ export class ApiService {
return this.httpClient.get<OptimizedMempoolStats[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/statistics/3y');
}
list4YStatistics$(): Observable<OptimizedMempoolStats[]> {
return this.httpClient.get<OptimizedMempoolStats[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/statistics/4y');
}
getTransactionTimes$(txIds: string[]): Observable<number[]> {
let params = new HttpParams();
txIds.forEach((txId: string) => {

View File

@@ -89,7 +89,7 @@ export class PriceService {
return this.singlePriceObservable$.pipe(
map((conversion) => {
if (conversion.prices.length <= 0) {
return this.getEmptyPrice();
return undefined;
}
return {
price: {
@@ -113,7 +113,7 @@ export class PriceService {
return this.priceObservable$.pipe(
map((conversion) => {
if (!blockTimestamp) {
if (!blockTimestamp || !conversion) {
return undefined;
}

View File

@@ -2,6 +2,6 @@
<span *ngIf="seconds !== undefined">
&lrm;{{ seconds * 1000 | date: customFormat ?? 'yyyy-MM-dd HH:mm' }}
<div class="lg-inline" *ngIf="!hideTimeSince">
<i class="symbol">(<app-time-since [time]="seconds" [fastRender]="true"></app-time-since>)</i>
<i class="symbol">(<app-time kind="since" [time]="seconds" [fastRender]="true"></app-time>)</i>
</div>
</span>

View File

@@ -21,6 +21,7 @@ export const formatterXAxis = (
return date.toLocaleTimeString(locale, { month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' });
case '2y':
case '3y':
case '4y':
case 'all':
return date.toLocaleDateString(locale, { year: 'numeric', month: 'long', day: 'numeric' });
}
@@ -45,6 +46,7 @@ export const formatterXAxisLabel = (
case '1y':
case '2y':
case '3y':
case '4y':
return null;
}
};
@@ -71,6 +73,7 @@ export const formatterXAxisTimeCategory = (
return date.toLocaleDateString(locale, { year: 'numeric', month: 'short', day: 'numeric' });
case '2y':
case '3y':
case '4y':
case 'all':
return date.toLocaleDateString(locale, { year: 'numeric', month: 'long' });
}

View File

@@ -25,8 +25,7 @@ import { BytesPipe } from './pipes/bytes-pipe/bytes.pipe';
import { WuBytesPipe } from './pipes/bytes-pipe/wubytes.pipe';
import { FiatCurrencyPipe } from './pipes/fiat-currency.pipe';
import { BlockchainComponent } from '../components/blockchain/blockchain.component';
import { TimeSinceComponent } from '../components/time-since/time-since.component';
import { TimeUntilComponent } from '../components/time-until/time-until.component';
import { TimeComponent } from '../components/time/time.component';
import { ClipboardComponent } from '../components/clipboard/clipboard.component';
import { QrcodeComponent } from '../components/qrcode/qrcode.component';
import { FiatComponent } from '../fiat/fiat.component';
@@ -53,7 +52,6 @@ import { AddressComponent } from '../components/address/address.component';
import { SearchFormComponent } from '../components/search-form/search-form.component';
import { AddressLabelsComponent } from '../components/address-labels/address-labels.component';
import { FooterComponent } from '../components/footer/footer.component';
import { TimeSpanComponent } from '../components/time-span/time-span.component';
import { AssetComponent } from '../components/asset/asset.component';
import { AssetsComponent } from '../components/assets/assets.component';
import { AssetsNavComponent } from '../components/assets/assets-nav/assets-nav.component';
@@ -88,8 +86,7 @@ import { GeolocationComponent } from '../shared/components/geolocation/geolocati
@NgModule({
declarations: [
ClipboardComponent,
TimeSinceComponent,
TimeUntilComponent,
TimeComponent,
QrcodeComponent,
FiatComponent,
TxFeaturesComponent,
@@ -129,7 +126,6 @@ import { GeolocationComponent } from '../shared/components/geolocation/geolocati
TransactionsListComponent,
AddressComponent,
SearchFormComponent,
TimeSpanComponent,
AddressLabelsComponent,
FooterComponent,
AssetComponent,
@@ -195,8 +191,7 @@ import { GeolocationComponent } from '../shared/components/geolocation/geolocati
NgbCollapseModule,
InfiniteScrollModule,
FontAwesomeModule,
TimeSinceComponent,
TimeUntilComponent,
TimeComponent,
ClipboardComponent,
QrcodeComponent,
FiatComponent,
@@ -232,7 +227,6 @@ import { GeolocationComponent } from '../shared/components/geolocation/geolocati
TransactionsListComponent,
AddressComponent,
SearchFormComponent,
TimeSpanComponent,
AddressLabelsComponent,
FooterComponent,
AssetComponent,

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>الميم بول و مستكشف سلسلة الكتل خاص لمجتمع البتكوين ، يركز على سوق رسوم المعاملات للأنظمة متعددة الطبقات ، مستضاف ذاتيًا تمامًا دون الثقة بأي جهات خارجية.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>رعاة المشروع 🚀</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>رعاة من المجتمع ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>تكاملات (Integrations) مجتمعية</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>التحالفات المجتمعية</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>مترجمو المشروع</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>المساهمون في المشروع</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>أعضاء المشروع</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>فريق صيانة المشروع</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>حول</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2686,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2895,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2923,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -4309,6 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>انتقل إلى &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4613,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4629,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5368,7 +5365,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5486,7 +5483,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5503,7 +5500,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5520,7 +5517,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5541,7 +5538,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5554,7 +5551,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5588,6 +5585,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5624,11 +5625,11 @@
<target>قناة البرق</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5637,11 +5638,11 @@
<target>آخر تحديث</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5657,11 +5658,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5670,7 +5671,7 @@
<target>تاريخ الاغلاق</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5683,7 +5684,7 @@
<target>مغلقة من</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5692,7 +5693,7 @@
<target>عملية الفتح</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
@@ -5701,7 +5702,7 @@
<target>عملية الاغلاق</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5783,11 +5784,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -6059,10 +6060,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6116,11 +6113,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6158,7 +6155,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6174,11 +6171,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6216,9 +6213,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6296,11 +6301,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6313,7 +6318,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6326,7 +6331,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6339,21 +6344,12 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>لم نعثر على نود للعنوان العام &amp;quot' <x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&amp;quot'</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>متوسط حجم القناة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
@@ -6362,7 +6358,7 @@
<target>متوسط مسافة القناة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6371,7 +6367,7 @@
<target>اللون</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6380,7 +6376,7 @@
<target>مزود خدمة الانترنت</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6393,7 +6389,7 @@
<target>حصرية على تور</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6402,7 +6398,7 @@
<target>اشهار سيولة </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6411,7 +6407,7 @@
<target>معدل رسوم العقد</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6421,7 +6417,7 @@
<target>أساس رسوم العقد</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6430,7 +6426,7 @@
<target>وزن التمويل</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6439,7 +6435,7 @@
<target>معدل رسوم القناة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6449,7 +6445,7 @@
<target>أساس رسوم القناة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6458,7 +6454,7 @@
<target>عقد سريع</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6467,7 +6463,7 @@
<target>TLV extension records</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6476,7 +6472,7 @@
<target>قنوات مفتوحة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6485,7 +6481,7 @@
<target>قنوات مغلقة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6555,9 +6551,8 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>متاح على الكليرنت فقط</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6567,9 +6562,8 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>متاح على الكليرنت والداركنت</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6579,9 +6573,8 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>متاح على الداركنت فقط</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6837,24 +6830,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>أعلى 100 نود حسب السيولة</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>أعلى 100 نود حسب الاتصالية</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>أقدم الأنواد</target>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>Unser Mempool- und Blockchain-Explorer für die Bitcoin-Community, der sich auf den Markt für Transaktionsgebühren und das mehrschichtige Ökosystem konzentriert und vollständig selbst gehostet wird, ohne vertrauenswürdige Drittanbieter.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>Unternehmenssponsoren</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>Community-Sponsoren ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>Community Integrationen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>Community-Allianzen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>Projektübersetzer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>Projektmitwirkende</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>Projektmitglieder</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>Projektbetreuer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>Über</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2686,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2895,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2923,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -4309,7 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>Gehe zu &amp;quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&amp;quot;</target>
<target>Gehe zu &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4614,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4630,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5370,7 +5366,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5488,7 +5484,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5505,7 +5501,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5522,7 +5518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5543,7 +5539,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5556,7 +5552,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5590,6 +5586,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5626,11 +5626,11 @@
<target>Lightning-Kanal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5639,11 +5639,11 @@
<target>Letzte Aktualisierung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5659,11 +5659,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5672,7 +5672,7 @@
<target>Schließdatum</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5685,7 +5685,7 @@
<target>Geschlossen von</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5694,7 +5694,7 @@
<target>Öffnende Transaktion</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
@@ -5703,7 +5703,7 @@
<target>Schließende Transaktion</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5786,11 +5786,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -6064,10 +6064,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6121,11 +6117,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6163,7 +6159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6179,11 +6175,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6221,9 +6217,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6303,11 +6307,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6320,7 +6324,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6333,7 +6337,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6346,21 +6350,12 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>Keinen Node gefunden für Public-Key &amp;quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&amp;quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>Durchschnittliche Kanalgröße</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
@@ -6369,7 +6364,7 @@
<target>Durchschn. Kanalentfernung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6378,7 +6373,7 @@
<target>Farbe</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6387,7 +6382,7 @@
<target>ISP</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6400,7 +6395,7 @@
<target>Ausschließlich auf Tor</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6409,7 +6404,7 @@
<target>Liquiditätswerbung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6418,7 +6413,7 @@
<target>Lease Gebührensatz</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6428,7 +6423,7 @@
<target>Lease Basisgebühr</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6437,7 +6432,7 @@
<target>Finanzierungsgewicht</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6446,7 +6441,7 @@
<target>Kanal-Gebührenrate</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6456,7 +6451,7 @@
<target>Kanal-Basisgebühr</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6465,7 +6460,7 @@
<target>Compact_lease</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6474,7 +6469,7 @@
<target>LV Erweiterungs-Datensätze</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6483,7 +6478,7 @@
<target>Offene Kanäle</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6492,7 +6487,7 @@
<target>Geschlossene Kanäle</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6562,9 +6557,9 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Nur im Klarnetz erreichbar</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<target>Clearnet und Darknet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6574,9 +6569,9 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Im Klarnetz und Darknet erreichbar</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<target>Nur Clearnet (IPv4, IPv6)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6586,9 +6581,9 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Nur im Darknet erreichbar</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<target>Nur Darknet (Tor, I2P, cjdns)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6844,24 +6839,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>Top 100 Nodes nach Liquidität</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>Top 100 Nodes nach Anbindung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Älteste Nodes</target>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>Mempool- ja lohkoketjuselaimemme Bitcoin yhteisölle, joka keskittyy siirtomaksumarkkinoihin ja monikerroksiseen ekosysteemiin, täysin itse ylläpidetty ilman luotettuja kolmansia osapuolia.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>Yrityssponsorit 🚀</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>Yhteisösponsorit ❤️ </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>Yhteisön integraatiot </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>Yhteisöliittoumat </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>Projektin kääntäjät</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>Projektin avustajat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>Projektin jäsenet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>Projektin ylläpitäjät </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>Tietoja</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2539,6 +2539,7 @@
</trans-unit>
<trans-unit id="4786852746659896870" datatype="html">
<source>Size per weight</source>
<target>Koko painon mukaan</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts</context>
<context context-type="linenumber">200,199</context>
@@ -2685,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2894,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2922,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -3185,7 +3182,7 @@
</trans-unit>
<trans-unit id="df71fa93f0503396ea2bb3ba5161323330314d6c" datatype="html">
<source>Next Halving</source>
<target>Seuraava puoliintuminen</target>
<target>Puoliintuminen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/difficulty/difficulty.component.html</context>
<context context-type="linenumber">50,52</context>
@@ -3830,6 +3827,7 @@
</trans-unit>
<trans-unit id="c16d236667af327bd474b149cb909d1cd06fa50c" datatype="html">
<source>Avg Health</source>
<target>keskim. Terveys</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">96,97</context>
@@ -4149,7 +4147,7 @@
</trans-unit>
<trans-unit id="1d9f405ab98a5f79d98b439de29fc8baca46b97c" datatype="html">
<source>Avg Block Fees</source>
<target>Keskimääräiset lohkomaksut</target>
<target>keskim. Lohkomaksut</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/reward-stats/reward-stats.component.html</context>
<context context-type="linenumber">17</context>
@@ -4181,7 +4179,7 @@
</trans-unit>
<trans-unit id="cf3a97b1c1546b843411cfe101bc55ba2ac46bac" datatype="html">
<source>Avg Tx Fee</source>
<target>Keskimääräinen siirtomaksu</target>
<target>keskim. Siirtomaksu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/reward-stats/reward-stats.component.html</context>
<context context-type="linenumber">30</context>
@@ -4244,6 +4242,7 @@
</trans-unit>
<trans-unit id="0673b255ba8db0bc5e2cccd5962d31dc88c24578" datatype="html">
<source>Bitcoin Block Height</source>
<target>Bitcoin-lohkon korkeus</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">3</context>
@@ -4252,6 +4251,7 @@
</trans-unit>
<trans-unit id="8b786a14d8c948e31bfb84369f123847a21dbf50" datatype="html">
<source>Bitcoin Transaction</source>
<target>Bitcoin siirtotapahtuma</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">9</context>
@@ -4260,6 +4260,7 @@
</trans-unit>
<trans-unit id="aacf72635ebf6cfe00590e3a426ea6002c43a729" datatype="html">
<source>Bitcoin Address</source>
<target>Bitcoin osoite</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">15</context>
@@ -4268,6 +4269,7 @@
</trans-unit>
<trans-unit id="97089c008af92d87389ff1ec5fb2cc96a6ecef0e" datatype="html">
<source>Bitcoin Block</source>
<target>Bitcoin lohko</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">21</context>
@@ -4276,6 +4278,7 @@
</trans-unit>
<trans-unit id="e89c09d708a1da5f6a59ba6c38ba3db78031fe0e" datatype="html">
<source>Bitcoin Addresses</source>
<target>Bitcoin osoitteet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">27</context>
@@ -4284,6 +4287,7 @@
</trans-unit>
<trans-unit id="67f25165b857428d046fe5eb67fc44c5c3d94e87" datatype="html">
<source>Lightning Nodes</source>
<target>Lightning osoitteet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">35</context>
@@ -4292,6 +4296,7 @@
</trans-unit>
<trans-unit id="db5ca37068eaee3f8b909d3b8b476164527cd8c3" datatype="html">
<source>Lightning Channels</source>
<target>Lightning kanavat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">43</context>
@@ -4300,6 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>Siirry &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4604,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4620,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5217,6 +5223,7 @@
</trans-unit>
<trans-unit id="8f2791f5d9656271dd6c385f5ad572716e90f4a2" datatype="html">
<source><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space merely provides data about the Bitcoin network.&lt;/b&gt; It cannot help you with"/>mempool.space merely provides data about the Bitcoin network.<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> It cannot help you with retrieving funds, confirming your transaction quicker, etc.</source>
<target><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space merely provides data about the Bitcoin network.&lt;/b&gt; It cannot help you with"/>mempool.space tarjoaa vain tietoja Bitcoin-verkosta. <x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> Se ei voi auttaa sinua varojen saamisessa, siirtotapahtuman vahvistamisessa nopeammin jne.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/api-docs/api-docs.component.html</context>
<context context-type="linenumber">13</context>
@@ -5359,7 +5366,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5477,7 +5484,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5494,7 +5501,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5511,7 +5518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5532,7 +5539,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5545,7 +5552,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5579,6 +5586,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5615,11 +5626,11 @@
<target>Salamakanava</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5628,11 +5639,11 @@
<target>Viimeisin päivitys</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5648,11 +5659,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5661,7 +5672,7 @@
<target>Päättymispäivä</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5674,7 +5685,7 @@
<target>Sulkenut</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5683,7 +5694,7 @@
<target>Avaava transaktio</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
@@ -5692,7 +5703,7 @@
<target>Sulkeva transaktio</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5706,6 +5717,7 @@
</trans-unit>
<trans-unit id="2408280550320842855" datatype="html">
<source>Mutually closed</source>
<target>Molemminpuolisesti suljettu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/closing-type/closing-type.component.ts</context>
<context context-type="linenumber">20</context>
@@ -5713,6 +5725,7 @@
</trans-unit>
<trans-unit id="4610828009441770083" datatype="html">
<source>Force closed</source>
<target>Pakko suljettu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/closing-type/closing-type.component.ts</context>
<context context-type="linenumber">24</context>
@@ -5720,6 +5733,7 @@
</trans-unit>
<trans-unit id="96508700250272816" datatype="html">
<source>Force closed with penalty</source>
<target>Pakko suljettu rangaistuksella</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/closing-type/closing-type.component.ts</context>
<context context-type="linenumber">28</context>
@@ -5772,11 +5786,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -5853,6 +5867,7 @@
</trans-unit>
<trans-unit id="cfcc7201138b0ef9901e9604c35f550e91629295" datatype="html">
<source>avg</source>
<target>keskim.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">3,5</context>
@@ -5861,6 +5876,7 @@
</trans-unit>
<trans-unit id="ba9117dcc11814c44437cf9d7561874ba8b98a2a" datatype="html">
<source>med</source>
<target>kohtalainen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">6,9</context>
@@ -5869,7 +5885,7 @@
</trans-unit>
<trans-unit id="ab456546aa39de3328fcfdf077f410b5ff1aa773" datatype="html">
<source>Avg Capacity</source>
<target>Keskimääräinen kapasiteetti</target>
<target>keskim. Kapasiteetti</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">13,15</context>
@@ -5882,7 +5898,7 @@
</trans-unit>
<trans-unit id="f68705670e611f13da1a43e90f9c97d8761dd9ef" datatype="html">
<source>Avg Fee Rate</source>
<target>Keskimääräinen siirtomaksu prosentti</target>
<target>keskim. Siirtomaksu prosentti</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">26,28</context>
@@ -5904,7 +5920,7 @@
</trans-unit>
<trans-unit id="140fb39368f210ec945417f3eb23bf9564396e5c" datatype="html">
<source>Avg Base Fee</source>
<target>Keskimääräinen perus siirtomaksu</target>
<target>keskim. Perus siirtomaksu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">41,43</context>
@@ -6048,10 +6064,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6105,11 +6117,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6147,7 +6159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6163,11 +6175,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6205,9 +6217,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6287,11 +6307,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6304,7 +6324,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6317,7 +6337,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6330,30 +6350,21 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>Julkiselle avaimelle &amp;quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&amp;quot; ei löytynyt solmua</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>Kanavan keskimääräinen koko</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
<trans-unit id="008e9fb48f07f545af73b3f676dc60cc3a829765" datatype="html">
<source>Avg channel distance</source>
<target>Keskimääräinen kanavaetäisyys</target>
<target>keskim. Kanavaetäisyys</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6362,7 +6373,7 @@
<target>Väri</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6371,7 +6382,7 @@
<target>Palveluntarjoaja</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6384,7 +6395,7 @@
<target>Ainoastaan Tor-verkossa</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6393,7 +6404,7 @@
<target>Likviditeetti ad</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6402,7 +6413,7 @@
<target>Vuokra siirtomaksun taso</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6412,7 +6423,7 @@
<target>Vuokra perus siirtokulu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6421,7 +6432,7 @@
<target>Rahoituspaino</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6430,7 +6441,7 @@
<target>Kanava siirtomaksu taso</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6440,7 +6451,7 @@
<target>Kanava perus siirtomaksu</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6449,7 +6460,7 @@
<target>Kompakti vuokraus</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6458,7 +6469,7 @@
<target>TLV-laajennustiedot</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6467,7 +6478,7 @@
<target>Avoimet kanavat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6476,7 +6487,7 @@
<target>Suljetut kanavat</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6546,9 +6557,9 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Tavoitettavissa vain Clearnetistä</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<target>Julkinenverkko ja Pimeäverkko </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6558,9 +6569,9 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Tavoitettavissa Clearnetissä ja Darknetissä</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<target>Vain Julkinenverkko (IPv4, IPV6)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6570,9 +6581,9 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Tavoitettavissa vain Darknetissä</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<target>Vain Pimeäverkko (Tor, I2p, cjdns)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6656,7 +6667,7 @@
</trans-unit>
<trans-unit id="6b4442323c695a8211357c7e4486dd620c443822" datatype="html">
<source>Clearnet Capacity</source>
<target>Clearnetin kapasiteetti</target>
<target>Julkinen kapasiteetti</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
<context context-type="linenumber">6,8</context>
@@ -6669,7 +6680,7 @@
</trans-unit>
<trans-unit id="ccabb31683868066778a1d664aa53ee9fcf77d6b" datatype="html">
<source>How much liquidity is running on nodes advertising at least one clearnet IP address</source>
<target>Kuinka paljon likviditeettiä on käytössä solmuissa, jotka mainostavat vähintään yhtä clearnet-IP-osoitetta</target>
<target>Kuinka paljon likviditeettiä on käytössä solmuissa, jotka mainostavat vähintään yhtä julkista IP-osoitetta</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
<context context-type="linenumber">8,9</context>
@@ -6678,7 +6689,7 @@
</trans-unit>
<trans-unit id="462d2233ddacc9869eb28e09b3b12f1d85556937" datatype="html">
<source>Unknown Capacity</source>
<target>Tuntematon kapasiteetti</target>
<target>Tuntematon</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
<context context-type="linenumber">13,15</context>
@@ -6828,24 +6839,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>Top 100 solmun likviditeettiluokitus</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>Top 100 solmun yhdistettävyysluokitus</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Vanhimmat solmut</target>

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>Notre explorateur mempool et blockchain pour la communauté Bitcoin, axé sur le marché des frais de transaction et l'écosystème multicouche, entièrement auto-hébergé sans aucun tiers de confiance.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>Entreprises sponsors 🚀</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>Sponsors de la communauté ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>Intégrations communautaires</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>Alliances communautaires</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>Traducteurs</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>Contributeurs au projet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>Membres du projet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>Mainteneurs de projet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>A propos</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2686,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2895,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2923,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -4309,7 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>Aller à &amp;quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&amp;quot;</target>
<target>Aller à &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4614,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4630,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5370,7 +5366,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5488,7 +5484,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5505,7 +5501,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5522,7 +5518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5543,7 +5539,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5556,7 +5552,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5590,6 +5586,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5626,11 +5626,11 @@
<target>Canal Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5639,11 +5639,11 @@
<target>Dernière mise à jour</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5659,11 +5659,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5672,7 +5672,7 @@
<target>Date de clôture</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5685,7 +5685,7 @@
<target>Fermée par</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5694,7 +5694,7 @@
<target>Transaction d'ouverture</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
@@ -5703,7 +5703,7 @@
<target>Transaction de clôture</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5786,11 +5786,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -6064,10 +6064,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6121,11 +6117,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6163,7 +6159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6179,11 +6175,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6221,9 +6217,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6303,11 +6307,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6320,7 +6324,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6333,7 +6337,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6346,21 +6350,12 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>Aucun nœud trouvé pour la clé publique &amp;quot; <x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/> &amp;quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>Taille moyenne du canal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
@@ -6369,7 +6364,7 @@
<target>Distance moyenne des canaux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6378,7 +6373,7 @@
<target>Couleur</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6387,7 +6382,7 @@
<target>FAI</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6400,7 +6395,7 @@
<target>Exclusivement sur Tor</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6409,7 +6404,7 @@
<target>Annonce de liquidité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6418,7 +6413,7 @@
<target>Taux de frais de location</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6428,7 +6423,7 @@
<target>Frais de base de location</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6437,7 +6432,7 @@
<target>Poids du financement</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6446,7 +6441,7 @@
<target>Taux de frais de canal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6456,7 +6451,7 @@
<target>Frais de base du canal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6465,7 +6460,7 @@
<target>Location compacte</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6474,7 +6469,7 @@
<target>Enregistrements d'extension TLV</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6483,7 +6478,7 @@
<target>Canaux ouverts</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6492,7 +6487,7 @@
<target>Canaux fermés</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6562,9 +6557,9 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Accessible uniquement sur Clearnet</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<target>Clearnet et Darknet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6574,9 +6569,9 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Accessible sur Clearnet et Darknet</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<target>Clearnet seulement (IPv4, IPv6)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6586,9 +6581,9 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Accessible uniquement sur Darknet</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<target>Darknet seulement (Tor, I2P, cjdns)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6844,24 +6839,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>Classement des 100 meilleurs nœuds par liquidité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>Classement des 100 meilleurs nœuds par connectivité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Nœuds les plus anciens</target>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>Vår mempool- og blokkkjede-utforsker for Bitcoin-samfunnet, med fokus på transaksjonsgebyrmarkedet og flerlagsøkosystemet, fullstendig self-hosted uten tredjeparter.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>Bedriftssponsorer 🚀</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>Samfunnssponsorer ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>Sammfunnsintegrasjoner</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>Samfunnsallianser</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>Oversettere</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>Bidragsytere til prosjektet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>Prosjektmedlemmer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>Prosjektvedlikeholdere</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>Om</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2347,7 +2347,7 @@
</trans-unit>
<trans-unit id="180092a6b8a6151a05f4a7552a2fb75fd159dfa8" datatype="html">
<source>Match</source>
<target>lik</target>
<target>Identisk</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">38</context>
@@ -2686,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2895,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2923,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -2948,7 +2944,7 @@
</trans-unit>
<trans-unit id="e70fcca5a99575cffef3ff8cbd5e69f06ffd0f1c" datatype="html">
<source>Pool</source>
<target>Gruppe</target>
<target>Utvinningsgruppe</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.html</context>
<context context-type="linenumber">14</context>
@@ -3356,7 +3352,7 @@
</trans-unit>
<trans-unit id="4592bd8fffebd3841fc8d59472caf4b4655e6184" datatype="html">
<source>Pools Ranking</source>
<target>Grupperangering</target>
<target>Utvinningsgruppe-rangering</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">11</context>
@@ -3369,7 +3365,7 @@
</trans-unit>
<trans-unit id="43f992a71c7b7def78d430e5af489b914cc61c11" datatype="html">
<source>Pools Dominance</source>
<target>Gruppedominans</target>
<target>Utvinningsgruppe-dominans</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">13</context>
@@ -3421,7 +3417,7 @@
</trans-unit>
<trans-unit id="ea8db27e6db64f8b940711948c001a1100e5fe9f" datatype="html">
<source>Lightning Network Capacity</source>
<target>Lightning-nettverkkapasitet</target>
<target>Lightningnettverk-kapasitet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">36</context>
@@ -3489,7 +3485,7 @@
</trans-unit>
<trans-unit id="b482ceceb39c7a045cb2ab2c64f7091d21e63d44" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Lightning-noder kanaler Verdenskart</target>
<target>Lightning-kanaler Verdenskart</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">44</context>
@@ -3556,7 +3552,7 @@
</trans-unit>
<trans-unit id="mining.pools-historical-dominance" datatype="html">
<source>Pools Historical Dominance</source>
<target>Gruppe historisk dominans</target>
<target>Utvinningsgruppe historisk dominans</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/hashrates-chart-pools/hashrate-chart-pools.component.ts</context>
<context context-type="linenumber">64</context>
@@ -3572,7 +3568,7 @@
</trans-unit>
<trans-unit id="439adfcf08f5035e2fd9e4c15e40eef92f6cc780" datatype="html">
<source>Indexing pools hashrate</source>
<target>Indekserer gruppehashrate</target>
<target>Indekserer utvinningsgruppe-hashrate</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/indexing-progress/indexing-progress.component.html</context>
<context context-type="linenumber">3</context>
@@ -3734,7 +3730,7 @@
</trans-unit>
<trans-unit id="2711844b4304254e88358d1761f9c732e5aefc69" datatype="html">
<source>Pools luck (1 week)</source>
<target>Grupper flaks (1 uke)</target>
<target>Utvinningsgrupper flaks (1 uke)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">9</context>
@@ -3743,7 +3739,7 @@
</trans-unit>
<trans-unit id="ea1a87734b5cc78ea8b268343497d92136855cd1" datatype="html">
<source>Pools luck</source>
<target>Grupper flaks</target>
<target>Utvinningsgrupper flaks</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">9,11</context>
@@ -3761,7 +3757,7 @@
</trans-unit>
<trans-unit id="9740454c3c55ca2cfa437ff9ec07374c9b9d25b5" datatype="html">
<source>Pools count (1w)</source>
<target>Antall grupper (1uke)</target>
<target>Antall utvinningsgrupper (1uke)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">17</context>
@@ -3770,7 +3766,7 @@
</trans-unit>
<trans-unit id="1107f1b39cd8474087d438971892967a331a6c7d" datatype="html">
<source>Pools count</source>
<target>Antall grupper</target>
<target>Antall utvinningsgrupper</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">17,19</context>
@@ -3862,7 +3858,7 @@
</trans-unit>
<trans-unit id="8ef3568472375e791e861ca1ef76d4cb66eef8ef" datatype="html">
<source>Pools Luck (1w)</source>
<target>Grupper flaks (1uke)</target>
<target>Utvinningsgrupper flaks (1uke)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">146,148</context>
@@ -3871,7 +3867,7 @@
</trans-unit>
<trans-unit id="e1ea393882afe8ac40ff7637a33a5a46bdb3e0ce" datatype="html">
<source>Pools Count (1w)</source>
<target> Antall grupper (1uke)</target>
<target> Antall utvinningsgrupper (1uke)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">158,160</context>
@@ -4309,7 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>Gå til &amp;quot; <x id="INTERPOLATION" equiv-text="{{ x }}"/> &amp;quot;</target>
<target>Gå til &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4614,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4630,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5370,7 +5366,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5488,7 +5484,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5505,7 +5501,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5522,7 +5518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5543,7 +5539,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5556,7 +5552,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5590,6 +5586,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5626,11 +5626,11 @@
<target>Lightningkanal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5639,11 +5639,11 @@
<target>Siste oppdatering</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5659,11 +5659,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5672,7 +5672,7 @@
<target>Sluttdato</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5685,7 +5685,7 @@
<target>Avsluttet av</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5694,16 +5694,16 @@
<target>Åpningstransaksjon</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
<trans-unit id="50411064ac48e15659d1985b414ae91af0c8cd36" datatype="html">
<source>Closing transaction</source>
<target>Avsluttningtransaksjon</target>
<target>Avsluttningstransaksjon</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5786,11 +5786,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -5920,7 +5920,7 @@
</trans-unit>
<trans-unit id="140fb39368f210ec945417f3eb23bf9564396e5c" datatype="html">
<source>Avg Base Fee</source>
<target>Gjennomsnittlig basisavgift</target>
<target>Gj.sn. basisavgift</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">41,43</context>
@@ -6064,10 +6064,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6121,11 +6117,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6148,7 +6144,7 @@
</trans-unit>
<trans-unit id="ed31c09fd77c36238c13d83635f3fe5294c733d2" datatype="html">
<source>Location</source>
<target>plassering</target>
<target>Plassering</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group.component.html</context>
<context context-type="linenumber">74,77</context>
@@ -6163,7 +6159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6179,11 +6175,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6221,9 +6217,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6303,11 +6307,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6320,7 +6324,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6333,7 +6337,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6346,30 +6350,21 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>Ingen node funnet for offentlig nøkkel &amp;quot; <x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/> &amp;quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>Gjennomsnittlig kanalstørrelse</target>
<target>Gj.sn. kanalstørrelse</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
<trans-unit id="008e9fb48f07f545af73b3f676dc60cc3a829765" datatype="html">
<source>Avg channel distance</source>
<target>Gjennomsnittlig kanalavstand</target>
<target>Gj.sn. kanalavstand</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6378,7 +6373,7 @@
<target>Farge</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6387,7 +6382,7 @@
<target>ISP</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6400,7 +6395,7 @@
<target>Eksklusivt på Tor</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6409,7 +6404,7 @@
<target>Likviditetsannonse</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6418,7 +6413,7 @@
<target>Leieavgiftssats</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6428,7 +6423,7 @@
<target>Leiegrunnavgift</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6437,7 +6432,7 @@
<target>Finansieringsvekt</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6446,7 +6441,7 @@
<target>Kanalavgiftssats</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6456,7 +6451,7 @@
<target>Kanalbaseavgift</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6465,7 +6460,7 @@
<target>Kompakt leieavtale</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6474,7 +6469,7 @@
<target>TLV-utvidelsesposter</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6483,16 +6478,16 @@
<target>Åpne kanaler</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
<trans-unit id="a2dff531c3d7477178553f579e0ec7c3ac7a6f30" datatype="html">
<source>Closed channels</source>
<target>Stengte kanaler</target>
<target>Avsluttede kanaler</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6527,7 +6522,7 @@
</trans-unit>
<trans-unit id="8199511328474154549" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Lightning nodekanaler verdenskart</target>
<target>Lightning-kanaler verdenskart</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts</context>
<context context-type="linenumber">69</context>
@@ -6562,9 +6557,9 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Kun tilgjengelig på Clearnet</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<target>Clearnet og Darknet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6574,9 +6569,9 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Tilgjengelig på Clearnet og Darknet</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<target>Bare Clearnet (IPv4, IPv6)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6586,9 +6581,9 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Kun tilgjengelig på Darknet</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<target>Bare Darknet (Tor, I2P, cjdns)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6600,7 +6595,7 @@
</trans-unit>
<trans-unit id="0bd8b27f60a1f098a53e06328426d818e3508ff9" datatype="html">
<source>Share</source>
<target>Dele</target>
<target>Andel</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.html</context>
<context context-type="linenumber">29,31</context>
@@ -6672,7 +6667,7 @@
</trans-unit>
<trans-unit id="6b4442323c695a8211357c7e4486dd620c443822" datatype="html">
<source>Clearnet Capacity</source>
<target>Clearnet-kapasitet</target>
<target>Clearnet kapasitet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
<context context-type="linenumber">6,8</context>
@@ -6844,24 +6839,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>Topp 100 noder likviditetsrangering</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>Topp 100 noder tilkoblingsrangering</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Eldste noder</target>

View File

@@ -775,7 +775,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">385,389</context>
<context context-type="linenumber">375,378</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
@@ -1452,7 +1452,7 @@
<target>Onze mempool- en blockchainverkenner voor de Bitcoingemeenschap, gericht op de transactiekostenmarkt en het meerlagige ecosysteem, volledig zelf-gehost zonder derde partijen.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">13,17</context>
<context context-type="linenumber">13,16</context>
</context-group>
</trans-unit>
<trans-unit id="a24b1c6a9c4334ba204e4cec2dd9f32ea33d043f" datatype="html">
@@ -1460,7 +1460,7 @@
<target>Bedrijfssponsoren 🚀</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">29,32</context>
<context context-type="linenumber">19,22</context>
</context-group>
<note priority="1" from="description">about.sponsors.enterprise.withRocket</note>
</trans-unit>
@@ -1469,7 +1469,7 @@
<target>Community Sponsoren ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">177,180</context>
<context context-type="linenumber">167,170</context>
</context-group>
<note priority="1" from="description">about.sponsors.withHeart</note>
</trans-unit>
@@ -1478,7 +1478,7 @@
<target>Community-integraties</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
<context context-type="linenumber">181,183</context>
</context-group>
<note priority="1" from="description">about.community-integrations</note>
</trans-unit>
@@ -1487,7 +1487,7 @@
<target>Community-allianties</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">285,287</context>
<context context-type="linenumber">275,277</context>
</context-group>
<note priority="1" from="description">about.alliances</note>
</trans-unit>
@@ -1496,7 +1496,7 @@
<target>Projectvertalers</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">301,303</context>
<context context-type="linenumber">291,293</context>
</context-group>
<note priority="1" from="description">about.translators</note>
</trans-unit>
@@ -1505,7 +1505,7 @@
<target>Projectbijdragers</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">315,317</context>
<context context-type="linenumber">305,307</context>
</context-group>
<note priority="1" from="description">about.contributors</note>
</trans-unit>
@@ -1514,7 +1514,7 @@
<target>Projectleden</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">327,329</context>
<context context-type="linenumber">317,319</context>
</context-group>
<note priority="1" from="description">about.project_members</note>
</trans-unit>
@@ -1523,7 +1523,7 @@
<target>Projectonderhouders</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">340,342</context>
<context context-type="linenumber">330,332</context>
</context-group>
<note priority="1" from="description">about.maintainers</note>
</trans-unit>
@@ -1532,7 +1532,7 @@
<target>Over</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">39</context>
<context context-type="linenumber">42</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/bisq-master-page/bisq-master-page.component.html</context>
@@ -1581,7 +1581,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/amount/amount.component.html</context>
<context context-type="linenumber">18,21</context>
<context context-type="linenumber">20,23</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/asset-circulation/asset-circulation.component.html</context>
@@ -2686,11 +2686,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,55</context>
<context context-type="linenumber">55,58</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">96,100</context>
<context context-type="linenumber">99,103</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
@@ -2895,15 +2895,15 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">86,88</context>
<context context-type="linenumber">93,95</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">96,98</context>
<context context-type="linenumber">103,105</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">218,222</context>
<context context-type="linenumber">221,225</context>
</context-group>
<note priority="1" from="description">Transaction Details</note>
<note priority="1" from="meaning">transaction.details</note>
@@ -2923,10 +2923,6 @@
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">70,75</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">109,115</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">66,69</context>
@@ -4309,7 +4305,7 @@
</trans-unit>
<trans-unit id="2abc4d0d3ae0b49fa9e94a2efb8c2e1a47e680f4" datatype="html">
<source>Go to &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</source>
<target>Ga naar &amp;quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&amp;quot;</target>
<target>Ga naar &quot;<x id="INTERPOLATION" equiv-text="{{ x }}"/>&quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-results/search-results.component.html</context>
<context context-type="linenumber">52</context>
@@ -4614,7 +4610,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">67,70</context>
<context context-type="linenumber">70,73</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -4630,11 +4626,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,15</context>
<context context-type="linenumber">15,16</context>
</context-group>
<note priority="1" from="description">Transaction first seen</note>
<note priority="1" from="meaning">transaction.first-seen</note>
@@ -5370,7 +5366,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">180,182</context>
<context context-type="linenumber">183,185</context>
</context-group>
<note priority="1" from="description">shared.m-sats</note>
</trans-unit>
@@ -5488,7 +5484,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5505,7 +5501,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5522,7 +5518,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">13,14</context>
<context context-type="linenumber">15,16</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5543,7 +5539,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">29,30</context>
<context context-type="linenumber">36,37</context>
</context-group>
<note priority="1" from="description">lightning.created</note>
</trans-unit>
@@ -5556,7 +5552,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">48,49</context>
<context context-type="linenumber">55,56</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5590,6 +5586,10 @@
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">60,62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">13,14</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">202,201</context>
@@ -5626,11 +5626,11 @@
<target>Lightningkanaal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">2,5</context>
<context context-type="linenumber">4,7</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">117,119</context>
<context context-type="linenumber">116,118</context>
</context-group>
<note priority="1" from="description">lightning.channel</note>
</trans-unit>
@@ -5639,11 +5639,11 @@
<target>Laatste update</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">33,34</context>
<context context-type="linenumber">40,41</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">73,75</context>
<context context-type="linenumber">76,78</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -5659,11 +5659,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">14,15</context>
<context context-type="linenumber">16,17</context>
</context-group>
<note priority="1" from="description">lightning.last-update</note>
</trans-unit>
@@ -5672,7 +5672,7 @@
<target>Sluitingsdatum</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">37,38</context>
<context context-type="linenumber">44,45</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
@@ -5685,7 +5685,7 @@
<target>Gesloten door</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">52,54</context>
<context context-type="linenumber">59,61</context>
</context-group>
<note priority="1" from="description">lightning.closed_by</note>
</trans-unit>
@@ -5694,7 +5694,7 @@
<target>Openingstransactie</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">84,85</context>
<context context-type="linenumber">91,92</context>
</context-group>
<note priority="1" from="description">lightning.opening-transaction</note>
</trans-unit>
@@ -5703,7 +5703,7 @@
<target>Sluitingstransactie</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">100,102</context>
</context-group>
<note priority="1" from="description">lightning.closing-transaction</note>
</trans-unit>
@@ -5786,11 +5786,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">10,11</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">10,12</context>
<context context-type="linenumber">11,13</context>
</context-group>
<note priority="1" from="description">lightning.alias</note>
</trans-unit>
@@ -6064,10 +6064,6 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">11,12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">12,13</context>
</context-group>
<note priority="1" from="description">lightning.liquidity</note>
@@ -6121,11 +6117,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">12,13</context>
<context context-type="linenumber">14,15</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">11,12</context>
<context context-type="linenumber">12,13</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
@@ -6163,7 +6159,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">47,49</context>
<context context-type="linenumber">50,52</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
@@ -6179,11 +6175,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">15,17</context>
<context context-type="linenumber">17,20</context>
</context-group>
<note priority="1" from="description">lightning.location</note>
</trans-unit>
@@ -6221,9 +6217,17 @@
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">29</context>
<context context-type="linenumber">33</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">4,9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
@@ -6303,11 +6307,11 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">2,4</context>
<context context-type="linenumber">4,6</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">260,262</context>
<context context-type="linenumber">263,265</context>
</context-group>
<note priority="1" from="description">lightning.node</note>
</trans-unit>
@@ -6320,7 +6324,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">27,30</context>
<context context-type="linenumber">30,33</context>
</context-group>
<note priority="1" from="description">lightning.active-capacity</note>
</trans-unit>
@@ -6333,7 +6337,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">34,38</context>
<context context-type="linenumber">37,41</context>
</context-group>
<note priority="1" from="description">lightning.active-channels</note>
</trans-unit>
@@ -6346,21 +6350,12 @@
</context-group>
<note priority="1" from="description">country</note>
</trans-unit>
<trans-unit id="674378571ab7e72a386f27fd3281558bae821d9d" datatype="html">
<source>No node found for public key &quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&quot;</source>
<target>Geen node gevonden voor publieke sleutel &amp;quot;<x id="INTERPOLATION" equiv-text="{{ node.public_key | shortenString : 12}}"/>&amp;quot;</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">17,19</context>
</context-group>
<note priority="1" from="description">lightning.node-not-found</note>
</trans-unit>
<trans-unit id="43b48b9c15083a164b401bf3775a4b99f3917699" datatype="html">
<source>Average channel size</source>
<target>Gemiddelde kanaalgrootte</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">40,43</context>
<context context-type="linenumber">43,46</context>
</context-group>
<note priority="1" from="description">lightning.active-channels-avg</note>
</trans-unit>
@@ -6369,7 +6364,7 @@
<target>Gemiddelde kanaalafstand</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">56,57</context>
<context context-type="linenumber">59,60</context>
</context-group>
<note priority="1" from="description">lightning.avg-distance</note>
</trans-unit>
@@ -6378,7 +6373,7 @@
<target>Kleur</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">79,81</context>
<context context-type="linenumber">82,84</context>
</context-group>
<note priority="1" from="description">lightning.color</note>
</trans-unit>
@@ -6387,7 +6382,7 @@
<target>ISP</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">86,87</context>
<context context-type="linenumber">89,90</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.html</context>
@@ -6400,7 +6395,7 @@
<target>Exclusief op Tor</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">93,95</context>
<context context-type="linenumber">96,98</context>
</context-group>
<note priority="1" from="description">tor</note>
</trans-unit>
@@ -6409,7 +6404,7 @@
<target>Liquiditeitsadvertentie</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">138,141</context>
<context context-type="linenumber">141,144</context>
</context-group>
<note priority="1" from="description">node.liquidity-ad</note>
</trans-unit>
@@ -6418,7 +6413,7 @@
<target>Leasevergoedingstarief</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">144,147</context>
<context context-type="linenumber">147,150</context>
</context-group>
<note priority="1" from="description">Liquidity ad lease fee rate</note>
<note priority="1" from="meaning">liquidity-ad.lease-fee-rate</note>
@@ -6428,7 +6423,7 @@
<target>Leasebasisvergoeding</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">152,154</context>
<context context-type="linenumber">155,157</context>
</context-group>
<note priority="1" from="description">liquidity-ad.lease-base-fee</note>
</trans-unit>
@@ -6437,7 +6432,7 @@
<target>Financieringsgewicht</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">158,159</context>
<context context-type="linenumber">161,162</context>
</context-group>
<note priority="1" from="description">liquidity-ad.funding-weight</note>
</trans-unit>
@@ -6446,7 +6441,7 @@
<target>Kanaalvergoedingstarief</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">168,171</context>
<context context-type="linenumber">171,174</context>
</context-group>
<note priority="1" from="description">Liquidity ad channel fee rate</note>
<note priority="1" from="meaning">liquidity-ad.channel-fee-rate</note>
@@ -6456,7 +6451,7 @@
<target>Kanaalbasisvergoeding</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">176,178</context>
<context context-type="linenumber">179,181</context>
</context-group>
<note priority="1" from="description">liquidity-ad.channel-base-fee</note>
</trans-unit>
@@ -6465,7 +6460,7 @@
<target>Compactlease</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">188,190</context>
<context context-type="linenumber">191,193</context>
</context-group>
<note priority="1" from="description">liquidity-ad.compact-lease</note>
</trans-unit>
@@ -6474,7 +6469,7 @@
<target>TLV-extensierecords</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">199,202</context>
<context context-type="linenumber">202,205</context>
</context-group>
<note priority="1" from="description">node.tlv.records</note>
</trans-unit>
@@ -6483,7 +6478,7 @@
<target>Open kanalen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">240,243</context>
<context context-type="linenumber">243,246</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6492,7 +6487,7 @@
<target>Gesloten kanalen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">244,247</context>
<context context-type="linenumber">247,250</context>
</context-group>
<note priority="1" from="description">lightning.open-channels</note>
</trans-unit>
@@ -6562,9 +6557,8 @@
<context context-type="linenumber">112,107</context>
</context-group>
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Alleen Bereikbaar op Clearnet</target>
<trans-unit id="599038141003770125" datatype="html">
<source>Clearnet and Darknet</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">164,161</context>
@@ -6574,9 +6568,8 @@
<context context-type="linenumber">303,302</context>
</context-group>
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Bereikbaar op Clearnet en Darknet</target>
<trans-unit id="1282458597026430784" datatype="html">
<source>Clearnet Only (IPv4, IPv6)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">185,182</context>
@@ -6586,9 +6579,8 @@
<context context-type="linenumber">295,294</context>
</context-group>
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Alleen Bereikbaar op Darknet</target>
<trans-unit id="2165336009914523952" datatype="html">
<source>Darknet Only (Tor, I2P, cjdns)</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-networks-chart/nodes-networks-chart.component.ts</context>
<context context-type="linenumber">206,203</context>
@@ -6844,24 +6836,6 @@
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="71bb1ed9da9ebb92cf35925bc6fe0a8fbc325625" datatype="html">
<source>Top 100 nodes liquidity ranking</source>
<target>Top 100 nodes liquiditeitsrangschikking</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-liquidity</note>
</trans-unit>
<trans-unit id="99786bd2106b708e4514d0121964affb19bee636" datatype="html">
<source>Top 100 nodes connectivity ranking</source>
<target>Top 100 nodes connectiviteitsrangschikking</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.html</context>
<context context-type="linenumber">3,7</context>
</context-group>
<note priority="1" from="description">lightning.top-100-connectivity</note>
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Oudste nodes</target>

Some files were not shown because too many files have changed in this diff Show More