Merge branch 'master' into mononaut/block-health-ux

This commit is contained in:
wiz 2022-12-26 20:29:35 +09:00 committed by GitHub
commit 1f5754943a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 951 additions and 168 deletions

View File

@ -742,7 +742,7 @@ class Blocks {
public async $indexCPFP(hash: string, height: number): Promise<void> {
let transactions;
if (false/*Common.blocksSummariesIndexingEnabled()*/) {
if (Common.blocksSummariesIndexingEnabled()) {
transactions = await this.$getStrippedBlockTransactions(hash);
const rawBlock = await bitcoinApi.$getRawBlock(hash);
const block = Block.fromBuffer(rawBlock);
@ -751,10 +751,11 @@ class Blocks {
txMap[tx.getId()] = tx;
}
for (const tx of transactions) {
// convert from bitcoinjs to esplora vin format
if (txMap[tx.txid]?.ins) {
tx.vin = txMap[tx.txid].ins.map(vin => {
return {
txid: vin.hash
txid: vin.hash.slice().reverse().toString('hex')
};
});
}
@ -763,6 +764,7 @@ class Blocks {
const block = await bitcoinClient.getBlock(hash, 2);
transactions = block.tx.map(tx => {
tx.vsize = tx.weight / 4;
tx.fee *= 100_000_000;
return tx;
});
}
@ -778,9 +780,9 @@ class Blocks {
totalFee += tx?.fee || 0;
totalVSize += tx.vsize;
});
const effectiveFeePerVsize = (totalFee * 100_000_000) / totalVSize;
const effectiveFeePerVsize = totalFee / totalVSize;
if (cluster.length > 1) {
await cpfpRepository.$saveCluster(height, cluster.map(tx => { return { txid: tx.txid, weight: tx.vsize * 4, fee: (tx.fee || 0) * 100_000_000 }; }), effectiveFeePerVsize);
await cpfpRepository.$saveCluster(height, cluster.map(tx => { return { txid: tx.txid, weight: tx.vsize * 4, fee: tx.fee || 0 }; }), effectiveFeePerVsize);
for (const tx of cluster) {
await transactionRepository.$setCluster(tx.txid, cluster[0].txid);
}

View File

@ -1,17 +1,14 @@
import logger from '../logger';
import { MempoolBlock, TransactionExtended, TransactionStripped, MempoolBlockWithTransactions, MempoolBlockDelta } from '../mempool.interfaces';
import { MempoolBlock, TransactionExtended, ThreadTransaction, TransactionStripped, MempoolBlockWithTransactions, MempoolBlockDelta, Ancestor } from '../mempool.interfaces';
import { Common } from './common';
import config from '../config';
import { StaticPool } from 'node-worker-threads-pool';
import { Worker } from 'worker_threads';
import path from 'path';
class MempoolBlocks {
private mempoolBlocks: MempoolBlockWithTransactions[] = [];
private mempoolBlockDeltas: MempoolBlockDelta[] = [];
private makeTemplatesPool = new StaticPool({
size: 1,
task: path.resolve(__dirname, './tx-selection-worker.js'),
});
private txSelectionWorker: Worker | null = null;
constructor() {}
@ -146,27 +143,159 @@ class MempoolBlocks {
return mempoolBlockDeltas;
}
public async makeBlockTemplates(newMempool: { [txid: string]: TransactionExtended }, blockLimit: number, weightLimit: number | null = null, condenseRest = false): Promise<void> {
const { mempool, blocks } = await this.makeTemplatesPool.exec({ mempool: newMempool, blockLimit, weightLimit, condenseRest });
const deltas = this.calculateMempoolDeltas(this.mempoolBlocks, blocks);
// copy CPFP info across to main thread's mempool
Object.keys(newMempool).forEach((txid) => {
if (newMempool[txid] && mempool[txid]) {
newMempool[txid].effectiveFeePerVsize = mempool[txid].effectiveFeePerVsize;
newMempool[txid].ancestors = mempool[txid].ancestors;
newMempool[txid].descendants = mempool[txid].descendants;
newMempool[txid].bestDescendant = mempool[txid].bestDescendant;
newMempool[txid].cpfpChecked = mempool[txid].cpfpChecked;
}
public async makeBlockTemplates(newMempool: { [txid: string]: TransactionExtended }): Promise<void> {
// prepare a stripped down version of the mempool with only the minimum necessary data
// to reduce the overhead of passing this data to the worker thread
const strippedMempool: { [txid: string]: ThreadTransaction } = {};
Object.values(newMempool).forEach(entry => {
strippedMempool[entry.txid] = {
txid: entry.txid,
fee: entry.fee,
weight: entry.weight,
feePerVsize: entry.fee / (entry.weight / 4),
effectiveFeePerVsize: entry.fee / (entry.weight / 4),
vin: entry.vin.map(v => v.txid),
};
});
this.mempoolBlocks = blocks;
// (re)initialize tx selection worker thread
if (!this.txSelectionWorker) {
this.txSelectionWorker = new Worker(path.resolve(__dirname, './tx-selection-worker.js'));
// if the thread throws an unexpected error, or exits for any other reason,
// reset worker state so that it will be re-initialized on the next run
this.txSelectionWorker.once('error', () => {
this.txSelectionWorker = null;
});
this.txSelectionWorker.once('exit', () => {
this.txSelectionWorker = null;
});
}
// run the block construction algorithm in a separate thread, and wait for a result
let threadErrorListener;
try {
const workerResultPromise = new Promise<{ blocks: ThreadTransaction[][], clusters: { [root: string]: string[] } }>((resolve, reject) => {
threadErrorListener = reject;
this.txSelectionWorker?.once('message', (result): void => {
resolve(result);
});
this.txSelectionWorker?.once('error', reject);
});
this.txSelectionWorker.postMessage({ type: 'set', mempool: strippedMempool });
const { blocks, clusters } = await workerResultPromise;
this.processBlockTemplates(newMempool, blocks, clusters);
// clean up thread error listener
this.txSelectionWorker?.removeListener('error', threadErrorListener);
} catch (e) {
logger.err('makeBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
}
}
public async updateBlockTemplates(newMempool: { [txid: string]: TransactionExtended }, added: TransactionExtended[], removed: string[]): Promise<void> {
if (!this.txSelectionWorker) {
// need to reset the worker
return this.makeBlockTemplates(newMempool);
}
// prepare a stripped down version of the mempool with only the minimum necessary data
// to reduce the overhead of passing this data to the worker thread
const addedStripped: ThreadTransaction[] = added.map(entry => {
return {
txid: entry.txid,
fee: entry.fee,
weight: entry.weight,
feePerVsize: entry.fee / (entry.weight / 4),
effectiveFeePerVsize: entry.fee / (entry.weight / 4),
vin: entry.vin.map(v => v.txid),
};
});
// run the block construction algorithm in a separate thread, and wait for a result
let threadErrorListener;
try {
const workerResultPromise = new Promise<{ blocks: ThreadTransaction[][], clusters: { [root: string]: string[] } }>((resolve, reject) => {
threadErrorListener = reject;
this.txSelectionWorker?.once('message', (result): void => {
resolve(result);
});
this.txSelectionWorker?.once('error', reject);
});
this.txSelectionWorker.postMessage({ type: 'update', added: addedStripped, removed });
const { blocks, clusters } = await workerResultPromise;
this.processBlockTemplates(newMempool, blocks, clusters);
// clean up thread error listener
this.txSelectionWorker?.removeListener('error', threadErrorListener);
} catch (e) {
logger.err('updateBlockTemplates failed. ' + (e instanceof Error ? e.message : e));
}
}
private processBlockTemplates(mempool, blocks, clusters): void {
// update this thread's mempool with the results
blocks.forEach(block => {
block.forEach(tx => {
if (tx.txid in mempool) {
if (tx.effectiveFeePerVsize != null) {
mempool[tx.txid].effectiveFeePerVsize = tx.effectiveFeePerVsize;
}
if (tx.cpfpRoot && tx.cpfpRoot in clusters) {
const ancestors: Ancestor[] = [];
const descendants: Ancestor[] = [];
const cluster = clusters[tx.cpfpRoot];
let matched = false;
cluster.forEach(txid => {
if (txid === tx.txid) {
matched = true;
} else {
const relative = {
txid: txid,
fee: mempool[txid].fee,
weight: mempool[txid].weight,
};
if (matched) {
descendants.push(relative);
} else {
ancestors.push(relative);
}
}
});
mempool[tx.txid].ancestors = ancestors;
mempool[tx.txid].descendants = descendants;
mempool[tx.txid].bestDescendant = null;
}
mempool[tx.txid].cpfpChecked = tx.cpfpChecked;
}
});
});
// unpack the condensed blocks into proper mempool blocks
const mempoolBlocks = blocks.map((transactions, blockIndex) => {
return this.dataToMempoolBlocks(transactions.map(tx => {
return mempool[tx.txid] || null;
}).filter(tx => !!tx), undefined, undefined, blockIndex);
});
const deltas = this.calculateMempoolDeltas(this.mempoolBlocks, mempoolBlocks);
this.mempoolBlocks = mempoolBlocks;
this.mempoolBlockDeltas = deltas;
}
private dataToMempoolBlocks(transactions: TransactionExtended[],
blockSize: number, blockWeight: number, blocksIndex: number): MempoolBlockWithTransactions {
blockSize: number | undefined, blockWeight: number | undefined, blocksIndex: number): MempoolBlockWithTransactions {
let totalSize = blockSize || 0;
let totalWeight = blockWeight || 0;
if (blockSize === undefined && blockWeight === undefined) {
totalSize = 0;
totalWeight = 0;
transactions.forEach(tx => {
totalSize += tx.size;
totalWeight += tx.weight;
});
}
let rangeLength = 4;
if (blocksIndex === 0) {
rangeLength = 8;
@ -177,8 +306,8 @@ class MempoolBlocks {
rangeLength = 8;
}
return {
blockSize: blockSize,
blockVSize: blockWeight / 4,
blockSize: totalSize,
blockVSize: totalWeight / 4,
nTx: transactions.length,
totalFees: transactions.reduce((acc, cur) => acc + cur.fee, 0),
medianFee: Common.percentile(transactions.map((tx) => tx.effectiveFeePerVsize), config.MEMPOOL.RECOMMENDED_FEE_PERCENTILE),

View File

@ -21,7 +21,7 @@ class Mempool {
private mempoolChangedCallback: ((newMempool: {[txId: string]: TransactionExtended; }, newTransactions: TransactionExtended[],
deletedTransactions: TransactionExtended[]) => void) | undefined;
private asyncMempoolChangedCallback: ((newMempool: {[txId: string]: TransactionExtended; }, newTransactions: TransactionExtended[],
deletedTransactions: TransactionExtended[]) => void) | undefined;
deletedTransactions: TransactionExtended[]) => Promise<void>) | undefined;
private txPerSecondArray: number[] = [];
private txPerSecond: number = 0;

View File

@ -1,17 +1,30 @@
import config from '../config';
import logger from '../logger';
import { TransactionExtended, MempoolBlockWithTransactions, AuditTransaction } from '../mempool.interfaces';
import { ThreadTransaction, MempoolBlockWithTransactions, AuditTransaction } from '../mempool.interfaces';
import { PairingHeap } from '../utils/pairing-heap';
import { Common } from './common';
import { parentPort } from 'worker_threads';
let mempool: { [txid: string]: ThreadTransaction } = {};
if (parentPort) {
parentPort.on('message', (params: { mempool: { [txid: string]: TransactionExtended }, blockLimit: number, weightLimit: number | null, condenseRest: boolean}) => {
const { mempool, blocks } = makeBlockTemplates(params);
parentPort.on('message', (params) => {
if (params.type === 'set') {
mempool = params.mempool;
} else if (params.type === 'update') {
params.added.forEach(tx => {
mempool[tx.txid] = tx;
});
params.removed.forEach(txid => {
delete mempool[txid];
});
}
const { blocks, clusters } = makeBlockTemplates(mempool);
// return the result to main thread.
if (parentPort) {
parentPort.postMessage({ mempool, blocks });
parentPort.postMessage({ blocks, clusters });
}
});
}
@ -19,35 +32,24 @@ if (parentPort) {
/*
* Build projected mempool blocks using an approximation of the transaction selection algorithm from Bitcoin Core
* (see BlockAssembler in https://github.com/bitcoin/bitcoin/blob/master/src/node/miner.cpp)
*
* blockLimit: number of blocks to build in total.
* weightLimit: maximum weight of transactions to consider using the selection algorithm.
* if weightLimit is significantly lower than the mempool size, results may start to diverge from getBlockTemplate
* condenseRest: whether to ignore excess transactions or append them to the final block.
*/
function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }: { mempool: { [txid: string]: TransactionExtended }, blockLimit: number, weightLimit?: number | null, condenseRest?: boolean | null })
: { mempool: { [txid: string]: TransactionExtended }, blocks: MempoolBlockWithTransactions[] } {
function makeBlockTemplates(mempool: { [txid: string]: ThreadTransaction })
: { blocks: ThreadTransaction[][], clusters: { [root: string]: string[] } } {
const start = Date.now();
const auditPool: { [txid: string]: AuditTransaction } = {};
const mempoolArray: AuditTransaction[] = [];
const restOfArray: TransactionExtended[] = [];
const restOfArray: ThreadTransaction[] = [];
const cpfpClusters: { [root: string]: string[] } = {};
let weight = 0;
const maxWeight = weightLimit ? Math.max(4_000_000 * blockLimit, weightLimit) : Infinity;
// grab the top feerate txs up to maxWeight
Object.values(mempool).sort((a, b) => b.feePerVsize - a.feePerVsize).forEach(tx => {
weight += tx.weight;
if (weight >= maxWeight) {
restOfArray.push(tx);
return;
}
// initializing everything up front helps V8 optimize property access later
auditPool[tx.txid] = {
txid: tx.txid,
fee: tx.fee,
size: tx.size,
weight: tx.weight,
feePerVsize: tx.feePerVsize,
effectiveFeePerVsize: tx.feePerVsize,
vin: tx.vin,
relativesSet: false,
ancestorMap: new Map<string, AuditTransaction>(),
@ -74,7 +76,7 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
// Build blocks by greedily choosing the highest feerate package
// (i.e. the package rooted in the transaction with the best ancestor score)
const blocks: MempoolBlockWithTransactions[] = [];
const blocks: ThreadTransaction[][] = [];
let blockWeight = 4000;
let blockSize = 0;
let transactions: AuditTransaction[] = [];
@ -82,7 +84,7 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
let overflow: AuditTransaction[] = [];
let failures = 0;
let top = 0;
while ((top < mempoolArray.length || !modified.isEmpty()) && (condenseRest || blocks.length < blockLimit)) {
while ((top < mempoolArray.length || !modified.isEmpty())) {
// skip invalid transactions
while (top < mempoolArray.length && (mempoolArray[top].used || mempoolArray[top].modified)) {
top++;
@ -107,9 +109,13 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
// Check if the package fits into this block
if (blockWeight + nextTx.ancestorWeight < config.MEMPOOL.BLOCK_WEIGHT_UNITS) {
const ancestors: AuditTransaction[] = Array.from(nextTx.ancestorMap.values());
const descendants: AuditTransaction[] = [];
// sort ancestors by dependency graph (equivalent to sorting by ascending ancestor count)
const sortedTxSet = [...ancestors.sort((a, b) => { return (a.ancestorMap.size || 0) - (b.ancestorMap.size || 0); }), nextTx];
let isCluster = false;
if (sortedTxSet.length > 1) {
cpfpClusters[nextTx.txid] = sortedTxSet.map(tx => tx.txid);
isCluster = true;
}
const effectiveFeeRate = nextTx.ancestorFee / (nextTx.ancestorWeight / 4);
const used: AuditTransaction[] = [];
while (sortedTxSet.length) {
@ -119,21 +125,9 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
ancestor.usedBy = nextTx.txid;
// update original copy of this tx with effective fee rate & relatives data
mempoolTx.effectiveFeePerVsize = effectiveFeeRate;
mempoolTx.ancestors = sortedTxSet.map((a) => {
return {
txid: a.txid,
fee: a.fee,
weight: a.weight,
};
}).reverse();
mempoolTx.descendants = descendants.map((a) => {
return {
txid: a.txid,
fee: a.fee,
weight: a.weight,
};
});
descendants.push(ancestor);
if (isCluster) {
mempoolTx.cpfpRoot = nextTx.txid;
}
mempoolTx.cpfpChecked = true;
transactions.push(ancestor);
blockSize += ancestor.size;
@ -159,10 +153,10 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
// this block is full
const exceededPackageTries = failures > 1000 && blockWeight > (config.MEMPOOL.BLOCK_WEIGHT_UNITS - 4000);
const queueEmpty = top >= mempoolArray.length && modified.isEmpty();
if ((exceededPackageTries || queueEmpty) && (!condenseRest || blocks.length < blockLimit - 1)) {
if ((exceededPackageTries || queueEmpty) && blocks.length < 7) {
// construct this block
if (transactions.length) {
blocks.push(dataToMempoolBlocks(transactions.map(t => mempool[t.txid]), blockSize, blockWeight, blocks.length));
blocks.push(transactions.map(t => mempool[t.txid]));
}
// reset for the next block
transactions = [];
@ -181,55 +175,40 @@ function makeBlockTemplates({ mempool, blockLimit, weightLimit, condenseRest }:
overflow = [];
}
}
if (condenseRest) {
// pack any leftover transactions into the last block
for (const tx of overflow) {
if (!tx || tx?.used) {
continue;
}
blockWeight += tx.weight;
blockSize += tx.size;
const mempoolTx = mempool[tx.txid];
// update original copy of this tx with effective fee rate & relatives data
mempoolTx.effectiveFeePerVsize = tx.score;
mempoolTx.ancestors = (Array.from(tx.ancestorMap?.values()) as AuditTransaction[]).map((a) => {
return {
txid: a.txid,
fee: a.fee,
weight: a.weight,
};
});
mempoolTx.bestDescendant = null;
mempoolTx.cpfpChecked = true;
transactions.push(tx);
tx.used = true;
// pack any leftover transactions into the last block
for (const tx of overflow) {
if (!tx || tx?.used) {
continue;
}
const blockTransactions = transactions.map(t => mempool[t.txid]);
restOfArray.forEach(tx => {
blockWeight += tx.weight;
blockSize += tx.size;
tx.effectiveFeePerVsize = tx.feePerVsize;
tx.cpfpChecked = false;
tx.ancestors = [];
tx.bestDescendant = null;
blockTransactions.push(tx);
});
if (blockTransactions.length) {
blocks.push(dataToMempoolBlocks(blockTransactions, blockSize, blockWeight, blocks.length));
blockWeight += tx.weight;
const mempoolTx = mempool[tx.txid];
// update original copy of this tx with effective fee rate & relatives data
mempoolTx.effectiveFeePerVsize = tx.score;
if (tx.ancestorMap.size > 0) {
cpfpClusters[tx.txid] = Array.from(tx.ancestorMap?.values()).map(a => a.txid);
mempoolTx.cpfpRoot = tx.txid;
}
transactions = [];
} else if (transactions.length) {
blocks.push(dataToMempoolBlocks(transactions.map(t => mempool[t.txid]), blockSize, blockWeight, blocks.length));
mempoolTx.cpfpChecked = true;
transactions.push(tx);
tx.used = true;
}
const blockTransactions = transactions.map(t => mempool[t.txid]);
restOfArray.forEach(tx => {
blockWeight += tx.weight;
tx.effectiveFeePerVsize = tx.feePerVsize;
tx.cpfpChecked = false;
blockTransactions.push(tx);
});
if (blockTransactions.length) {
blocks.push(blockTransactions);
}
transactions = [];
const end = Date.now();
const time = end - start;
logger.debug('Mempool templates calculated in ' + time / 1000 + ' seconds');
return {
mempool,
blocks
};
return { blocks, clusters: cpfpClusters };
}
// traverse in-mempool ancestors
@ -239,9 +218,9 @@ function setRelatives(
mempool: { [txid: string]: AuditTransaction },
): void {
for (const parent of tx.vin) {
const parentTx = mempool[parent.txid];
if (parentTx && !tx.ancestorMap?.has(parent.txid)) {
tx.ancestorMap.set(parent.txid, parentTx);
const parentTx = mempool[parent];
if (parentTx && !tx.ancestorMap?.has(parent)) {
tx.ancestorMap.set(parent, parentTx);
parentTx.children.add(tx);
// visit each node only once
if (!parentTx.relativesSet) {
@ -312,27 +291,4 @@ function updateDescendants(
});
}
}
}
function dataToMempoolBlocks(transactions: TransactionExtended[],
blockSize: number, blockWeight: number, blocksIndex: number): MempoolBlockWithTransactions {
let rangeLength = 4;
if (blocksIndex === 0) {
rangeLength = 8;
}
if (transactions.length > 4000) {
rangeLength = 6;
} else if (transactions.length > 10000) {
rangeLength = 8;
}
return {
blockSize: blockSize,
blockVSize: blockWeight / 4,
nTx: transactions.length,
totalFees: transactions.reduce((acc, cur) => acc + cur.fee, 0),
medianFee: Common.percentile(transactions.map((tx) => tx.effectiveFeePerVsize), config.MEMPOOL.RECOMMENDED_FEE_PERCENTILE),
feeRange: Common.getFeesInRange(transactions, rangeLength),
transactionIds: transactions.map((tx) => tx.txid),
transactions: transactions.map((tx) => Common.stripTransaction(tx)),
};
}

View File

@ -251,7 +251,7 @@ class WebsocketHandler {
}
if (config.MEMPOOL.ADVANCED_GBT_MEMPOOL) {
await mempoolBlocks.makeBlockTemplates(newMempool, 8, null, true);
await mempoolBlocks.updateBlockTemplates(newMempool, newTransactions, deletedTransactions.map(tx => tx.txid));
} else {
mempoolBlocks.updateMempoolBlocks(newMempool);
}
@ -419,7 +419,7 @@ class WebsocketHandler {
const _memPool = memPool.getMempool();
if (config.MEMPOOL.ADVANCED_GBT_AUDIT) {
await mempoolBlocks.makeBlockTemplates(_memPool, 2);
await mempoolBlocks.makeBlockTemplates(_memPool);
} else {
mempoolBlocks.updateMempoolBlocks(_memPool);
}
@ -462,13 +462,15 @@ class WebsocketHandler {
}
}
const removed: string[] = [];
// Update mempool to remove transactions included in the new block
for (const txId of txIds) {
delete _memPool[txId];
removed.push(txId);
}
if (config.MEMPOOL.ADVANCED_GBT_MEMPOOL) {
await mempoolBlocks.makeBlockTemplates(_memPool, 8, null, true);
await mempoolBlocks.updateBlockTemplates(_memPool, [], removed);
} else {
mempoolBlocks.updateMempoolBlocks(_memPool);
}

View File

@ -81,10 +81,10 @@ export interface TransactionExtended extends IEsploraApi.Transaction {
export interface AuditTransaction {
txid: string;
fee: number;
size: number;
weight: number;
feePerVsize: number;
vin: IEsploraApi.Vin[];
effectiveFeePerVsize: number;
vin: string[];
relativesSet: boolean;
ancestorMap: Map<string, AuditTransaction>;
children: Set<AuditTransaction>;
@ -96,6 +96,17 @@ export interface AuditTransaction {
modifiedNode: HeapNode<AuditTransaction>;
}
export interface ThreadTransaction {
txid: string;
fee: number;
weight: number;
feePerVsize: number;
effectiveFeePerVsize?: number;
vin: string[];
cpfpRoot?: string;
cpfpChecked?: boolean;
}
export interface Ancestor {
txid: string;
weight: number;

View File

@ -44,7 +44,9 @@ class TransactionRepository {
const [rows]: any = await DB.query(query, [txid]);
if (rows.length) {
rows[0].txs = JSON.parse(rows[0].txs) as Ancestor[];
return this.convertCpfp(rows[0]);
if (rows[0]?.txs?.length) {
return this.convertCpfp(rows[0]);
}
}
} catch (e) {
logger.err('Cannot get transaction cpfp info from db. Reason: ' + (e instanceof Error ? e.message : e));

View File

@ -77,6 +77,8 @@ export class BlockOverviewGraphComponent implements AfterViewInit, OnDestroy, On
cancelAnimationFrame(this.animationFrameRequest);
clearTimeout(this.animationHeartBeat);
}
this.canvas.nativeElement.removeEventListener('webglcontextlost', this.handleContextLost);
this.canvas.nativeElement.removeEventListener('webglcontextrestored', this.handleContextRestored);
}
clear(direction): void {

View File

@ -53,13 +53,13 @@
<td i18n="block.miner">Miner</td>
<td *ngIf="stateService.env.MINING_DASHBOARD">
<a [attr.data-cy]="'block-details-miner-badge'" placement="bottom" [routerLink]="['/mining/pool' | relativeUrl, block?.extras.pool.slug]" class="badge"
[class]="block?.extras.pool.name === 'Unknown' ? 'badge-secondary' : 'badge-primary'">
[class]="!block?.extras.pool.name || block?.extras.pool.name === 'Unknown' ? 'badge-secondary' : 'badge-primary'">
{{ block?.extras.pool.name }}
</a>
</td>
<td *ngIf="!stateService.env.MINING_DASHBOARD && stateService.env.BASE_MODULE === 'mempool'">
<span [attr.data-cy]="'block-details-miner-badge'" placement="bottom" class="badge"
[class]="block?.extras.pool.name === 'Unknown' ? 'badge-secondary' : 'badge-primary'">
[class]="!block?.extras.pool.name || block?.extras.pool.name === 'Unknown' ? 'badge-secondary' : 'badge-primary'">
{{ block?.extras.pool.name }}
</span>
</td>

View File

@ -56,3 +56,7 @@
::ng-deep .symbol {
font-size: 24px;
}
.badge {
transition: none;
}

View File

@ -91,6 +91,9 @@ export class TransactionsListComponent implements OnInit, OnChanges {
filter(() => this.stateService.env.LIGHTNING),
switchMap((txIds) => this.apiService.getChannelByTxIds$(txIds)),
tap((channels) => {
if (!this.transactions) {
return;
}
const transactions = this.transactions.filter((tx) => !tx._channels);
channels.forEach((channel, i) => {
transactions[i]._channels = channel;

View File

@ -88,7 +88,7 @@
<stop offset="100%" stop-color="transparent" />
</linearGradient>
</defs>
<path [attr.d]="middle.path" class="line middle" [style]="middle.style"/>
<path *ngIf="hasLine" [attr.d]="middle.path" class="line middle" [style]="middle.style"/>
<ng-container *ngFor="let input of inputs; let i = index">
<path *ngIf="connectors && !inputData[i].coinbase && !inputData[i].pegin"
[attr.d]="input.connectorPath"
@ -106,7 +106,7 @@
(pointerout)="onBlur($event, 'input', i);"
(click)="onClick($event, 'input', inputData[i].index);"
/>
<path
<path *ngIf="!input.zeroValue"
[attr.d]="input.path"
class="line {{input.class}}"
[class.highlight]="inputIndex != null && inputData[i].index === inputIndex"
@ -116,6 +116,16 @@
(pointerout)="onBlur($event, 'input', i);"
(click)="onClick($event, 'input', inputData[i].index);"
/>
<path *ngIf="input.zeroValue"
[attr.d]="input.path"
class="line {{input.class}} zerovalue"
[class.highlight]="inputIndex != null && inputData[i].index === inputIndex"
[class.zerovalue]="input.zeroValue"
[style]="input.style"
(pointerover)="onHover($event, 'input', i);"
(pointerout)="onBlur($event, 'input', i);"
(click)="onClick($event, 'input', inputData[i].index);"
/>
</ng-container>
<ng-container *ngFor="let output of outputs; let i = index">
<path *ngIf="connectors && outspends[outputData[i].index]?.spent"

View File

@ -68,6 +68,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
outspends: Outspend[] = [];
zeroValueWidth = 60;
zeroValueThickness = 20;
hasLine: boolean;
outspendsSubscription: Subscription;
refreshOutspends$: ReplaySubject<string> = new ReplaySubject();
@ -162,7 +163,7 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
let truncatedInputs = this.tx.vin.map((v, i) => {
return {
type: 'input',
value: v?.prevout?.value,
value: v?.prevout?.value || (v?.is_coinbase && !totalValue ? 0 : undefined),
txid: v.txid,
vout: v.vout,
address: v?.prevout?.scriptpubkey_address || v?.prevout?.scriptpubkey_type?.toUpperCase(),
@ -198,6 +199,9 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
path: `M ${(this.width / 2) - this.midWidth} ${(this.height / 2) + 0.5} L ${(this.width / 2) + this.midWidth} ${(this.height / 2) + 0.5}`,
style: `stroke-width: ${this.combinedWeight + 1}; stroke: ${this.gradient[1]}`
};
this.hasLine = this.inputs.reduce((line, put) => line || !put.zeroValue, false)
&& this.outputs.reduce((line, put) => line || !put.zeroValue, false);
}
calcTotalValue(tx: Transaction): number {
@ -278,6 +282,9 @@ export class TxBowtieGraphComponent implements OnInit, OnChanges {
lineParams.forEach((line, i) => {
if (xputs[i].value === 0) {
line.outerY = lastOuter + (this.zeroValueThickness / 2);
if (xputs.length === 1) {
line.outerY = (this.height / 2);
}
lastOuter += this.zeroValueThickness + spacing;
return;
}

View File

@ -118,7 +118,7 @@ export class NodesNetworksChartComponent implements OnInit {
color: 'grey',
fontSize: 15
},
text: $localize`Indexing in progess`,
text: $localize`Indexing in progress`,
left: 'center',
top: 'center',
};

View File

@ -109,7 +109,7 @@ export class LightningStatisticsChartComponent implements OnInit {
color: 'grey',
fontSize: 15
},
text: $localize`Indexing in progess`,
text: $localize`Indexing in progress`,
left: 'center',
top: 'center'
};

View File

@ -1471,6 +1471,7 @@
</trans-unit>
<trans-unit id="1405c5f1a9834338ff13442c550927ab7144fdc8" datatype="html">
<source>Community Integrations</source>
<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>
@ -1544,6 +1545,7 @@
</trans-unit>
<trans-unit id="address-label.multisig" datatype="html">
<source>Multisig <x id="multisigM" equiv-text="ms.m"/> of <x id="multisigN" equiv-text="ms.n"/></source>
<target>Multi-signature <x id="multisigM" equiv-text="ms.m"/> de <x id="multisigN" equiv-text="ms.n"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/address-labels/address-labels.component.ts</context>
<context context-type="linenumber">105</context>
@ -2027,6 +2029,7 @@
</trans-unit>
<trans-unit id="4718502b32e47c66db00ac7cf4f7f058acb6e849" datatype="html">
<source>Block </source>
<target>Bloc</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">7,9</context>
@ -2035,6 +2038,7 @@
</trans-unit>
<trans-unit id="adb216f561e9101b11a8288cc7da44afa1ab33b8" datatype="html">
<source>Template vs Mined</source>
<target>Modèle vs Miné</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">11,17</context>
@ -2121,6 +2125,7 @@
</trans-unit>
<trans-unit id="e9503a2605cf5d41273a7d5ad653873f28f8f1a3" datatype="html">
<source>Match rate</source>
<target>Taux de correspondance</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">64,67</context>
@ -2129,6 +2134,7 @@
</trans-unit>
<trans-unit id="c97ea3cbb05527c76b0011820ca76e8e00632ca1" datatype="html">
<source>Missing txs</source>
<target>Txs manquantes</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">68,71</context>
@ -2137,6 +2143,7 @@
</trans-unit>
<trans-unit id="94d8765805623dd51e562e6e4bb669a944bbe516" datatype="html">
<source>Added txs</source>
<target>Txs ajoutées</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">72,75</context>
@ -2145,6 +2152,7 @@
</trans-unit>
<trans-unit id="da5d7e263a3c6dc585d04844074afaa7229b88a0" datatype="html">
<source>Missing</source>
<target>Manquantes</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">84,85</context>
@ -2153,6 +2161,7 @@
</trans-unit>
<trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">
<source>Added</source>
<target>Ajoutées</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">86,92</context>
@ -2470,6 +2479,7 @@
</trans-unit>
<trans-unit id="80065834848189518" datatype="html">
<source>No data to display yet. Try again later.</source>
<target>Aucune donnée à afficher pour le moment. Réessayez plus tard.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-prediction-graph/block-prediction-graph.component.ts</context>
<context context-type="linenumber">108,103</context>
@ -2523,6 +2533,7 @@
</trans-unit>
<trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">
<source>Block</source>
<target>Bloc</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block-preview.component.html</context>
<context context-type="linenumber">3,7</context>
@ -2535,6 +2546,7 @@
</trans-unit>
<trans-unit id="445c243f1d1cd2c7f0df430cdb2fa25639600396" datatype="html">
<source><x id="INTERPOLATION" equiv-text="&lt;/ng-template&gt; &lt;/h1&gt; &lt;div class=&quot;blockhash&quot; *ngIf=&quot;block"/></source>
<target> <x id="INTERPOLATION" equiv-text="&lt;/ng-template&gt; &lt;/h1&gt; &lt;div class=&quot;blockhash&quot; *ngIf=&quot;block"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block-preview.component.html</context>
<context context-type="linenumber">11,12</context>
@ -3250,6 +3262,7 @@
</trans-unit>
<trans-unit id="5115edb23059f4dcfe6ce0a979e40962a149c35c" datatype="html">
<source>Hashrate &amp; Difficulty</source>
<target>Taux de hachage &amp; difficulté</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">15,16</context>
@ -3258,6 +3271,7 @@
</trans-unit>
<trans-unit id="a3382a60534e9fff5c3a0fcde39bab356afc4a59" datatype="html">
<source>Lightning</source>
<target>Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">31</context>
@ -3266,6 +3280,7 @@
</trans-unit>
<trans-unit id="b420668a91f8ebaf6e6409c4ba87f1d45961d2bd" datatype="html">
<source>Lightning Nodes Per Network</source>
<target>Nœuds Lightning par réseau</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">34</context>
@ -3286,6 +3301,7 @@
</trans-unit>
<trans-unit id="ea8db27e6db64f8b940711948c001a1100e5fe9f" datatype="html">
<source>Lightning Network Capacity</source>
<target>Capacité du réseau Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">36</context>
@ -3306,6 +3322,7 @@
</trans-unit>
<trans-unit id="8573a1576789bd2c4faeaed23037c4917812c6cf" datatype="html">
<source>Lightning Nodes Per ISP</source>
<target>Nœuds Lightning par FAI</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">38</context>
@ -3318,6 +3335,7 @@
</trans-unit>
<trans-unit id="9d3ad4c6623870d96b65fb7a708fed6ce7c20044" datatype="html">
<source>Lightning Nodes Per Country</source>
<target>Nœuds Lightning par pays</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">40</context>
@ -3334,6 +3352,7 @@
</trans-unit>
<trans-unit id="af8560ca50882114be16c951650f83bca73161a7" datatype="html">
<source>Lightning Nodes World Map</source>
<target>Carte du monde des nœuds Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">42</context>
@ -3350,6 +3369,7 @@
</trans-unit>
<trans-unit id="b482ceceb39c7a045cb2ab2c64f7091d21e63d44" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Carte du monde des canaux Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">44</context>
@ -3470,6 +3490,7 @@
</trans-unit>
<trans-unit id="142e923d3b04186ac6ba23387265d22a2fa404e0" datatype="html">
<source>Lightning Explorer</source>
<target>Explorateur Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context>
<context context-type="linenumber">44,45</context>
@ -3482,6 +3503,7 @@
</trans-unit>
<trans-unit id="7cbedd89f60daafaf0e56363900d666a4e02ffb1" datatype="html">
<source>beta</source>
<target>bêta</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context>
<context context-type="linenumber">45,48</context>
@ -3737,6 +3759,7 @@
</trans-unit>
<trans-unit id="2158ea60725d3a97aed6f0f00aa7df48d7bb42ff" datatype="html">
<source>mining pool</source>
<target>Pool de minage</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -4067,6 +4090,7 @@
</trans-unit>
<trans-unit id="7deec1c1520f06170e1f8e8ddfbe4532312f638f" datatype="html">
<source>Explore the full Bitcoin ecosystem</source>
<target>Explorez tout l'écosystème Bitcoin</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-form.component.html</context>
<context context-type="linenumber">4,6</context>
@ -4427,6 +4451,7 @@
</trans-unit>
<trans-unit id="53fbdc20554c4e68ae509f652b38ab80021c0739" datatype="html">
<source>Flow</source>
<target>Flux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">195,198</context>
@ -4440,6 +4465,7 @@
</trans-unit>
<trans-unit id="d0fd8887b50687cfc0fc1f6569f6fd6c5db4ffc0" datatype="html">
<source>Hide diagram</source>
<target>Masquer le diagramme</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">198,203</context>
@ -4448,6 +4474,7 @@
</trans-unit>
<trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b" datatype="html">
<source>Show more</source>
<target>Montrer plus</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">219,221</context>
@ -4456,6 +4483,7 @@
</trans-unit>
<trans-unit id="5403a767248e304199592271bba3366d2ca3f903" datatype="html">
<source>Show less</source>
<target>Montrer moins</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">221,227</context>
@ -4464,6 +4492,7 @@
</trans-unit>
<trans-unit id="e7aa6db8df12d0158df972b6abfc65a8478b2b7d" datatype="html">
<source>Show diagram</source>
<target>Afficher le diagramme</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">241,242</context>
@ -4657,6 +4686,7 @@
</trans-unit>
<trans-unit id="ac0c4b49e44c42db35ddf590fb5f78375a891b01" datatype="html">
<source>other inputs</source>
<target>autres entrées</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">12</context>
@ -4665,6 +4695,7 @@
</trans-unit>
<trans-unit id="8900247c0476fea8fcbee57a72a1d1da5ddd40ff" datatype="html">
<source>other outputs</source>
<target>autres sorties</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">13</context>
@ -4673,6 +4704,7 @@
</trans-unit>
<trans-unit id="3e242f213dd1a0754aad9164aa80887d67708500" datatype="html">
<source>Input</source>
<target>Entrées</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">43</context>
@ -4681,6 +4713,7 @@
</trans-unit>
<trans-unit id="7a080851e25a41e898776a9c90cf8dbe81027f9a" datatype="html">
<source>Output</source>
<target>Sorties</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">44</context>
@ -4689,6 +4722,7 @@
</trans-unit>
<trans-unit id="25d58cd5c18fd9c1c89d6062d67dcc2482161410" datatype="html">
<source>This transaction saved <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/>% on fees by using native SegWit</source>
<target>Cette transaction a permis d'économiser <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/> % sur les frais en utilisant SegWit natif</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">2</context>
@ -4715,6 +4749,7 @@
</trans-unit>
<trans-unit id="b6a3f6afdac6873e2d261647d834c02c91376893" datatype="html">
<source>This transaction saved <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/>% on fees by using SegWit and could save <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/>% more by fully upgrading to native SegWit</source>
<target>Cette transaction a permis d'économiser <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/> % sur les frais en utilisant SegWit et pourrait économiser <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/> % de plus en passant entièrement à SegWit natif</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">4</context>
@ -4723,6 +4758,7 @@
</trans-unit>
<trans-unit id="a67530e246368aa7e5d010061fd84c3c4fe755c2" datatype="html">
<source>This transaction could save <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/>% on fees by upgrading to native SegWit or <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialP2shSegwitGains * 100 | number: '1.0-0' }}"/>% by upgrading to SegWit-P2SH</source>
<target>Cette transaction pourrait économiser <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/> % sur les frais en passant à SegWit natif ou <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialP2shSegwitGains * 100 | number: '1.0-0' }}"/> % en passant à SegWit-P2SH</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">6</context>
@ -4731,6 +4767,7 @@
</trans-unit>
<trans-unit id="17e9c05e053cbd29d3835d8ecb19508d0f07241b" datatype="html">
<source>This transaction uses Taproot and thereby saved at least <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/>% on fees</source>
<target>Cette transaction utilise Taproot et a ainsi économisé au moins <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/> % sur les frais</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">12</context>
@ -4739,6 +4776,7 @@
</trans-unit>
<trans-unit id="65d5167c4947e3ad81758d238a7ac7e893c261f0" datatype="html">
<source>Taproot</source>
<target>Taproot</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">12</context>
@ -4760,6 +4798,7 @@
</trans-unit>
<trans-unit id="47b821c7df420c96de0b22844a88c04d52628540" datatype="html">
<source>This transaction uses Taproot and already saved at least <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/>% on fees, but could save an additional <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/>% by fully using Taproot</source>
<target>Cette transaction utilise Taproot et a déjà économisé au moins <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/> % sur les frais, mais pourrait économiser <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/> % supplémentaires en utilisant pleinement Taproot</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">14</context>
@ -4768,6 +4807,7 @@
</trans-unit>
<trans-unit id="aa31fc4d29f35b2fd36080bb6ff84be8eaab66fd" datatype="html">
<source>This transaction could save <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/>% on fees by using Taproot</source>
<target>Cette transaction pourrait économiser <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/> % sur les frais en utilisant Taproot</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">16</context>
@ -4785,6 +4825,7 @@
</trans-unit>
<trans-unit id="07883574bb93ea23b764861f56a525bdaf907513" datatype="html">
<source>This transaction supports Replace-By-Fee (RBF) allowing fee bumping</source>
<target>Cette transaction prend en charge le Replace-By-Fee/remplacement par frais (RBF), permettant une augmentation des frais</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">25</context>
@ -5021,6 +5062,7 @@
</trans-unit>
<trans-unit id="4ca458fe3274d1c79640b052d57cf3b900b650b6" datatype="html">
<source>Base fee</source>
<target>Frais de base</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">30</context>
@ -5033,6 +5075,7 @@
</trans-unit>
<trans-unit id="6acd06bd5a3af583cd46c6d9f7954d7a2b44095e" datatype="html">
<source>mSats</source>
<target>mSats</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">36</context>
@ -5049,6 +5092,7 @@
</trans-unit>
<trans-unit id="fb2137ba0df55f21a9d6b6ad08d56d74ad852e0e" datatype="html">
<source>This channel supports zero base fee routing</source>
<target>Ce canal prend en charge le routage sans frais de base</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">45</context>
@ -5057,6 +5101,7 @@
</trans-unit>
<trans-unit id="3ec76ccfe1fdcbfd7ea152392f6472d93d4e8cab" datatype="html">
<source>Zero base fee</source>
<target>Aucun frais de base</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">46</context>
@ -5065,6 +5110,7 @@
</trans-unit>
<trans-unit id="b5e42e06ea8a4012a38eef209104bbd9dd1a0fc0" datatype="html">
<source>This channel does not support zero base fee routing</source>
<target>Ce canal ne prend pas en charge le routage sans frais de base</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">51</context>
@ -5073,6 +5119,7 @@
</trans-unit>
<trans-unit id="09a1bc9c4198e87e9e974a51e86b181429b480d3" datatype="html">
<source>Non-zero base fee</source>
<target>Frais de base non nuls</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">52</context>
@ -5081,6 +5128,7 @@
</trans-unit>
<trans-unit id="055060668d0b9902c37abfb6168a08a36eba4496" datatype="html">
<source>Min HTLC</source>
<target>HTLC min.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">58</context>
@ -5089,6 +5137,7 @@
</trans-unit>
<trans-unit id="c3d94c1a5aef6211f4a902027bd08540d7222b0d" datatype="html">
<source>Max HTLC</source>
<target>HTLC max.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">64</context>
@ -5097,6 +5146,7 @@
</trans-unit>
<trans-unit id="9fe79011b50c2ca1f9b7db7066046631bfc6b3cb" datatype="html">
<source>Timelock delta</source>
<target>Timelock delta</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">70</context>
@ -5105,6 +5155,7 @@
</trans-unit>
<trans-unit id="205c1b86ac1cc419c4d0cca51fdde418c4ffdc20" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> channels</source>
<target> <x id="INTERPOLATION" equiv-text="{{ i }}"/> canaux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">80</context>
@ -5117,6 +5168,7 @@
</trans-unit>
<trans-unit id="3bbd25c289760a3ba57e30df5ad5fe8977ab25a5" datatype="html">
<source>lightning channel</source>
<target>canal Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5125,6 +5177,7 @@
</trans-unit>
<trans-unit id="43c4133c7a0263d2e33dd4c2e74d40784b2e4b1c" datatype="html">
<source>Inactive</source>
<target>Inactif</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">10,11</context>
@ -5141,6 +5194,7 @@
</trans-unit>
<trans-unit id="b36e1450940b7f6028d8587568c7d669b53f7a06" datatype="html">
<source>Active</source>
<target>Actif</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">11,12</context>
@ -5157,6 +5211,7 @@
</trans-unit>
<trans-unit id="4804b8e78964cee9e5c85f31fd982639b97780b2" datatype="html">
<source>Closed</source>
<target>Fermé</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">12,14</context>
@ -5177,6 +5232,7 @@
</trans-unit>
<trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">
<source>Created</source>
<target>Établi</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">23,26</context>
@ -5189,6 +5245,7 @@
</trans-unit>
<trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">
<source>Capacity</source>
<target>Capacité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">27,28</context>
@ -5241,6 +5298,7 @@
</trans-unit>
<trans-unit id="8fd0077b032e360ece45c4fd655f85b2400dcb83" datatype="html">
<source>ppm</source>
<target>ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">34,35</context>
@ -5261,6 +5319,7 @@
</trans-unit>
<trans-unit id="13142ad9637003749d667393aaae7a286d1eba5b" datatype="html">
<source>Lightning channel</source>
<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>
@ -5273,6 +5332,7 @@
</trans-unit>
<trans-unit id="8dad9f60ff582b632a864f22c7466327793c3f09" datatype="html">
<source>Last update</source>
<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>
@ -5305,6 +5365,7 @@
</trans-unit>
<trans-unit id="0c134c6787c6b763446c096ea5233ace6fd9116d" datatype="html">
<source>Closing date</source>
<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>
@ -5317,6 +5378,7 @@
</trans-unit>
<trans-unit id="cdd2ea2e12437df848ec474ac15af48859bd09a0" datatype="html">
<source>Opening transaction</source>
<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">73,74</context>
@ -5325,6 +5387,7 @@
</trans-unit>
<trans-unit id="50411064ac48e15659d1985b414ae91af0c8cd36" datatype="html">
<source>Closing transaction</source>
<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">82,84</context>
@ -5333,6 +5396,7 @@
</trans-unit>
<trans-unit id="6008566722612122663" datatype="html">
<source>Channel: <x id="PH" equiv-text="value.short_id"/></source>
<target>Canal : <x id="PH" equiv-text="value.short_id"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.ts</context>
<context context-type="linenumber">37</context>
@ -5340,6 +5404,7 @@
</trans-unit>
<trans-unit id="c9039b1b13b3ef165b66b3c5d79f810ab1ebb050" datatype="html">
<source>Open</source>
<target>Ouvert</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">5,7</context>
@ -5348,6 +5413,7 @@
</trans-unit>
<trans-unit id="a43e63c25599408ef14b33c80dd523021b21f846" datatype="html">
<source>No channels to display</source>
<target>Aucun canal à afficher</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">29,35</context>
@ -5356,6 +5422,7 @@
</trans-unit>
<trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html">
<source>Alias</source>
<target>Alias</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">35,37</context>
@ -5392,6 +5459,7 @@
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Statut</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">37,38</context>
@ -5400,6 +5468,7 @@
</trans-unit>
<trans-unit id="0cd107458dce99721e72971d426a5a3106074331" datatype="html">
<source>Channel ID</source>
<target>ID du canal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">41,45</context>
@ -5408,6 +5477,7 @@
</trans-unit>
<trans-unit id="e4b2d9e6a2ab9e6ca34027ec03beaac42b7badd4" datatype="html">
<source>sats</source>
<target>sats</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">61,65</context>
@ -5460,6 +5530,7 @@
</trans-unit>
<trans-unit id="ab456546aa39de3328fcfdf077f410b5ff1aa773" datatype="html">
<source>Avg Capacity</source>
<target>Capacité moy</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>
@ -5472,6 +5543,7 @@
</trans-unit>
<trans-unit id="f68705670e611f13da1a43e90f9c97d8761dd9ef" datatype="html">
<source>Avg Fee Rate</source>
<target>Taux de frais moy</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>
@ -5484,6 +5556,7 @@
</trans-unit>
<trans-unit id="db1f0c0605ab0c4a904523635982253ff72eed40" datatype="html">
<source>The average fee rate charged by routing nodes, ignoring fee rates &gt; 0.5% or 5000ppm</source>
<target>Le taux de frais moyen facturé par les nœuds de routage, en ignorant les taux de frais &gt; 0,5 % ou 5 000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">28,30</context>
@ -5492,6 +5565,7 @@
</trans-unit>
<trans-unit id="140fb39368f210ec945417f3eb23bf9564396e5c" datatype="html">
<source>Avg Base Fee</source>
<target>Frais de base moy</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>
@ -5504,6 +5578,7 @@
</trans-unit>
<trans-unit id="0a46218f4a7b17b6445460898d75ab78e7e7979b" datatype="html">
<source>The average base fee charged by routing nodes, ignoring base fees &gt; 5000ppm</source>
<target>Frais de base moyens facturés par les nœuds de routage, sans tenir compte des frais de base &gt; 5 000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">43,45</context>
@ -5512,6 +5587,7 @@
</trans-unit>
<trans-unit id="2e72b276a3c5cc2ec27b4c8189639ba2fe62b6cb" datatype="html">
<source>Med Capacity</source>
<target>Capacité med</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">59,61</context>
@ -5520,6 +5596,7 @@
</trans-unit>
<trans-unit id="2c1c39e28735f607d62dbf3272eb792451c265a5" datatype="html">
<source>Med Fee Rate</source>
<target>Taux de frais med</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">72,74</context>
@ -5528,6 +5605,7 @@
</trans-unit>
<trans-unit id="cb4dae32e1b4d6a2ba6287d9f7bd859ca7259468" datatype="html">
<source>The median fee rate charged by routing nodes, ignoring fee rates &gt; 0.5% or 5000ppm</source>
<target>Le taux de frais médian facturé par les nœuds de routage, en ignorant les taux de frais &gt; 0,5 % ou 5 000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">74,76</context>
@ -5536,6 +5614,7 @@
</trans-unit>
<trans-unit id="a541dbcef4908bf2e767e77d7a09cc62450e8e56" datatype="html">
<source>Med Base Fee</source>
<target>Frais de base med</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">87,89</context>
@ -5544,6 +5623,7 @@
</trans-unit>
<trans-unit id="b8539025268617abfcab1c3f2a2c60cd8d7485fb" datatype="html">
<source>The median base fee charged by routing nodes, ignoring base fees &gt; 5000ppm</source>
<target>Frais de base médians facturés par les nœuds de routage, sans tenir compte des frais de base &gt; 5 000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">89,91</context>
@ -5552,6 +5632,7 @@
</trans-unit>
<trans-unit id="de1c07e9943fc284461bb8fb4860faecf52a1568" datatype="html">
<source>Lightning node group</source>
<target>Groupe de nœuds Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5564,6 +5645,7 @@
</trans-unit>
<trans-unit id="6e2329529b1953198c7dfa0edb260554310bc636" datatype="html">
<source>Nodes</source>
<target>Nœuds</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">25,29</context>
@ -5604,6 +5686,7 @@
</trans-unit>
<trans-unit id="14a12efce56ffe89f839e50320bcf47e4e9ca4e4" datatype="html">
<source>Liquidity</source>
<target>Liquidité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">29,31</context>
@ -5640,6 +5723,7 @@
</trans-unit>
<trans-unit id="807cf11e6ac1cde912496f764c176bdfdd6b7e19" datatype="html">
<source>Channels</source>
<target>Canaux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">40,43</context>
@ -5700,6 +5784,7 @@
</trans-unit>
<trans-unit id="e4706894b195010f6814e54bf6570c729d69aaca" datatype="html">
<source>Average size</source>
<target>Taille moyenne</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">44,46</context>
@ -5712,6 +5797,7 @@
</trans-unit>
<trans-unit id="ed31c09fd77c36238c13d83635f3fe5294c733d2" datatype="html">
<source>Location</source>
<target>Emplacement</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group.component.html</context>
<context context-type="linenumber">74,77</context>
@ -5752,6 +5838,7 @@
</trans-unit>
<trans-unit id="29c05e9a540827cdfa8e3b2e5e2f27aeb478916c" datatype="html">
<source>Network Statistics</source>
<target>Statistiques du réseau</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">10</context>
@ -5760,6 +5847,7 @@
</trans-unit>
<trans-unit id="066e05b9a5db60850d907783fde6913e2e47cd5b" datatype="html">
<source>Channels Statistics</source>
<target>Statistiques des canaux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">24</context>
@ -5768,6 +5856,7 @@
</trans-unit>
<trans-unit id="0f33aeb084ac4d83cb0fe6f72648a8585b1b5e88" datatype="html">
<source>Lightning Network History</source>
<target>Historique du réseau Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">49</context>
@ -5776,6 +5865,7 @@
</trans-unit>
<trans-unit id="2d9883d230a47fbbb2ec969e32a186597ea27405" datatype="html">
<source>Liquidity Ranking</source>
<target>Classement par liquidité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
@ -5792,6 +5882,7 @@
</trans-unit>
<trans-unit id="c50bf442cf99f6fc5f8b687c460f33234b879869" datatype="html">
<source>Connectivity Ranking</source>
<target>Classement par connectivité</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">76</context>
@ -5804,6 +5895,7 @@
</trans-unit>
<trans-unit id="027f48063a5512e5c26b6ca88f7d7734e2d333a7" datatype="html">
<source>Percentage change past week</source>
<target>Variation sur une semaine</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node-statistics/node-statistics.component.html</context>
<context context-type="linenumber">5,7</context>
@ -5820,6 +5912,7 @@
</trans-unit>
<trans-unit id="be6ebbb11d55adb8e821d503f8e10ccf43ed8b00" datatype="html">
<source>Lightning node</source>
<target>Nœud Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5836,6 +5929,7 @@
</trans-unit>
<trans-unit id="af15c87bfed273bc095ba572cf27e3aaffc33b22" datatype="html">
<source>Active capacity</source>
<target>Capacité active</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">20,22</context>
@ -5848,6 +5942,7 @@
</trans-unit>
<trans-unit id="52ffa66bd0399a49d5aa8d6f8fa077a6e8db09c0" datatype="html">
<source>Active channels</source>
<target>Canaux actifs</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">26,30</context>
@ -5860,6 +5955,7 @@
</trans-unit>
<trans-unit id="a43f25a9ac40e8e2441ff0be7a36b8e5d15534df" datatype="html">
<source>Country</source>
<target>Pays</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">44,47</context>
@ -5868,6 +5964,7 @@
</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>
@ -5876,6 +5973,7 @@
</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>
@ -5884,6 +5982,7 @@
</trans-unit>
<trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">
<source>Unknown</source>
<target>Inconnue</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,56</context>
@ -5904,6 +6003,7 @@
</trans-unit>
<trans-unit id="8fa4d523f7b91df4390120b85ed0406138273e1a" datatype="html">
<source>Color</source>
<target>Couleur</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">75,77</context>
@ -5912,6 +6012,7 @@
</trans-unit>
<trans-unit id="5b9904cb31f6f28314443f6385dc5facab7ea851" datatype="html">
<source>ISP</source>
<target>FAI</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">82,83</context>
@ -5924,6 +6025,7 @@
</trans-unit>
<trans-unit id="86d9619247d148019e5599707c39a36e880a2d23" datatype="html">
<source>Exclusively on Tor</source>
<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">88,90</context>
@ -5932,6 +6034,7 @@
</trans-unit>
<trans-unit id="b371db1a7ab2167dc8dd91b48ea929d71bb4ef4c" datatype="html">
<source>Open channels</source>
<target>Canaux ouverts</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">145,148</context>
@ -5940,6 +6043,7 @@
</trans-unit>
<trans-unit id="a2dff531c3d7477178553f579e0ec7c3ac7a6f30" datatype="html">
<source>Closed channels</source>
<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">149,152</context>
@ -5948,6 +6052,7 @@
</trans-unit>
<trans-unit id="2519445964020754921" datatype="html">
<source>Node: <x id="PH" equiv-text="node.alias"/></source>
<target>Nœud : <x id="PH" equiv-text="node.alias"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.ts</context>
<context context-type="linenumber">42</context>
@ -5955,6 +6060,7 @@
</trans-unit>
<trans-unit id="7cac1c3013423d82d5149a5854d709bd08411430" datatype="html">
<source>(Tor nodes excluded)</source>
<target>(Nœuds Tor exclus)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.html</context>
<context context-type="linenumber">8,11</context>
@ -5975,6 +6081,7 @@
</trans-unit>
<trans-unit id="8199511328474154549" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Carte du monde des canaux Lightning</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>
@ -5982,6 +6089,7 @@
</trans-unit>
<trans-unit id="4390631969351833104" datatype="html">
<source>No geolocation data available</source>
<target>Aucune donnée de géolocalisation disponible</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">218,213</context>
@ -5989,6 +6097,7 @@
</trans-unit>
<trans-unit id="a4d393ee035f4225083c22cc3909b26a05a87528" datatype="html">
<source>Active channels map</source>
<target>Carte des canaux actifs</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels/node-channels.component.html</context>
<context context-type="linenumber">2,3</context>
@ -5997,6 +6106,7 @@
</trans-unit>
<trans-unit id="4635698809727522638" datatype="html">
<source>Indexing in progess</source>
<target>Indexation en cours</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">121,116</context>
@ -6008,6 +6118,7 @@
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Accessible uniquement sur Clearnet</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>
@ -6019,6 +6130,7 @@
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Accessible sur 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">185,182</context>
@ -6030,6 +6142,7 @@
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Accessible uniquement sur 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">206,203</context>
@ -6041,6 +6154,7 @@
</trans-unit>
<trans-unit id="0bd8b27f60a1f098a53e06328426d818e3508ff9" datatype="html">
<source>Share</source>
<target>Part</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>
@ -6053,6 +6167,7 @@
</trans-unit>
<trans-unit id="5222540403093176126" datatype="html">
<source><x id="PH" equiv-text="country.count.toString()"/> nodes</source>
<target> <x id="PH" equiv-text="country.count.toString()"/> nœuds</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts</context>
<context context-type="linenumber">103,102</context>
@ -6068,6 +6183,7 @@
</trans-unit>
<trans-unit id="7032954508645880700" datatype="html">
<source><x id="PH" equiv-text="this.amountShortenerPipe.transform(country.capacity / 100000000, 2)"/> BTC capacity</source>
<target>Capacité de <x id="PH" equiv-text="this.amountShortenerPipe.transform(country.capacity / 100000000, 2)"/> BTC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts</context>
<context context-type="linenumber">104,102</context>
@ -6075,6 +6191,7 @@
</trans-unit>
<trans-unit id="7ede3edfacd291eb9db08e11845d9efdf197f417" datatype="html">
<source>Lightning nodes in <x id="INTERPOLATION" equiv-text="{{ country?.name }}"/></source>
<target>Nœuds Lightning: <x id="INTERPOLATION" equiv-text="{{ country?.name }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">3,4</context>
@ -6083,6 +6200,7 @@
</trans-unit>
<trans-unit id="4498ec29c37744fef46809ebc3db67c5fb789917" datatype="html">
<source>ISP Count</source>
<target>Nombre de FAI</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">34,38</context>
@ -6091,6 +6209,7 @@
</trans-unit>
<trans-unit id="90a6a964ba53464578003e3b4b2873ef5d2132a1" datatype="html">
<source>Top ISP</source>
<target>FAI les plus utilisés</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">38,40</context>
@ -6099,6 +6218,7 @@
</trans-unit>
<trans-unit id="7246059109648045954" datatype="html">
<source>Lightning nodes in <x id="PH" equiv-text="response.country.en"/></source>
<target>Nœuds Lightning: <x id="PH" equiv-text="response.country.en"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.ts</context>
<context context-type="linenumber">35</context>
@ -6106,6 +6226,7 @@
</trans-unit>
<trans-unit id="6b4442323c695a8211357c7e4486dd620c443822" datatype="html">
<source>Clearnet Capacity</source>
<target>Capacité Clearnet</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>
@ -6118,6 +6239,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>Liquidité qui circule sur les nœuds annonçant au moins une adresse IP clearnet</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>
@ -6126,6 +6248,7 @@
</trans-unit>
<trans-unit id="462d2233ddacc9869eb28e09b3b12f1d85556937" datatype="html">
<source>Unknown Capacity</source>
<target>Capacité inconnue</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>
@ -6138,6 +6261,7 @@
</trans-unit>
<trans-unit id="26fb07e8754b87bba4bf12c5137ffa77dac389a8" datatype="html">
<source>How much liquidity is running on nodes which ISP was not identifiable</source>
<target>Liquidité qui circule sur les nœuds dont le FAI n'était pas identifiable</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">15,16</context>
@ -6146,6 +6270,7 @@
</trans-unit>
<trans-unit id="df3728b721159d25e68f5daf44aaab7fa25f1415" datatype="html">
<source>Tor Capacity</source>
<target>Capacité Tor</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">20,22</context>
@ -6158,6 +6283,7 @@
</trans-unit>
<trans-unit id="23549ef4e1f846f06abcf07ceecb115945a0cf61" datatype="html">
<source>How much liquidity is running on nodes advertising only Tor addresses</source>
<target>Liquidité qui circule sur les nœuds annonçant uniquement les adresses Tor</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">22,23</context>
@ -6166,6 +6292,7 @@
</trans-unit>
<trans-unit id="e008f2a76179fdcd7110b41ca624131f91075949" datatype="html">
<source>Top 100 ISPs hosting LN nodes</source>
<target>Top 100 des FAI hébergeant des nœuds LN</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">31,33</context>
@ -6174,6 +6301,7 @@
</trans-unit>
<trans-unit id="3627306100664959238" datatype="html">
<source><x id="PH" equiv-text="this.amountShortenerPipe.transform(isp[2] / 100000000, 2)"/> BTC</source>
<target> <x id="PH" equiv-text="this.amountShortenerPipe.transform(isp[2] / 100000000, 2)"/> BTC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts</context>
<context context-type="linenumber">158,156</context>
@ -6185,6 +6313,7 @@
</trans-unit>
<trans-unit id="c18497e4f0db0d0ad0c71ba294295f42b3d312c9" datatype="html">
<source>Lightning ISP</source>
<target>FAI Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -6193,6 +6322,7 @@
</trans-unit>
<trans-unit id="41074627e075a9b1bd8197c474ea68a2b8276e54" datatype="html">
<source>Top country</source>
<target>Meilleur pays</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">39,41</context>
@ -6205,6 +6335,7 @@
</trans-unit>
<trans-unit id="5fad6872a652d922ad8822f4016e104b9a8cc113" datatype="html">
<source>Top node</source>
<target>Meilleur nœud</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">45,48</context>
@ -6213,6 +6344,7 @@
</trans-unit>
<trans-unit id="5735693498020397727" datatype="html">
<source>Lightning nodes on ISP: <x id="PH" equiv-text="response.isp"/> [AS<x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>]</source>
<target>Nœuds Lightning sur le FAI : <x id="PH" equiv-text="response.isp"/> [AS <x id="PH_1" equiv-text="this.route.snapshot.params.isp"/> ]</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts</context>
<context context-type="linenumber">44</context>
@ -6224,6 +6356,7 @@
</trans-unit>
<trans-unit id="d82f436f033a7d81680b8430275f94dda530151c" datatype="html">
<source>Lightning nodes on ISP: <x id="INTERPOLATION" equiv-text="{{ isp?.name }}"/></source>
<target>Nœuds Lightning sur le FAI : <x id="INTERPOLATION" equiv-text="{{ isp?.name }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">2,4</context>
@ -6232,6 +6365,7 @@
</trans-unit>
<trans-unit id="ca0b795795658155d44ddca02e95f1feeeb4a88f" datatype="html">
<source>ASN</source>
<target>ASN</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">11,14</context>
@ -6240,6 +6374,7 @@
</trans-unit>
<trans-unit id="5b727d251b06e9959cf24a90250a480d425339de" datatype="html">
<source>Top 100 oldest lightning nodes</source>
<target>Top 100 des nœuds Lightning les plus anciens</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html</context>
<context context-type="linenumber">3,7</context>
@ -6248,6 +6383,7 @@
</trans-unit>
<trans-unit id="4157312397261844620" datatype="html">
<source>Oldest lightning nodes</source>
<target>Noeuds Lightning les plus anciens</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts</context>
<context context-type="linenumber">27</context>
@ -6255,6 +6391,7 @@
</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>
@ -6263,6 +6400,7 @@
</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>
@ -6271,6 +6409,7 @@
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Nœuds les plus anciens</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
<context context-type="linenumber">36</context>
@ -6279,6 +6418,7 @@
</trans-unit>
<trans-unit id="4034215342842066505" datatype="html">
<source>Top lightning nodes</source>
<target>Top nœuds Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts</context>
<context context-type="linenumber">22</context>
@ -6286,6 +6426,7 @@
</trans-unit>
<trans-unit id="af1176facd00a0580509fb2900ab0cf7f9b39ae7" datatype="html">
<source>Indexing in progress</source>
<target>Indexation en cours</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.html</context>
<context context-type="linenumber">52,55</context>

File diff suppressed because it is too large Load Diff

View File

@ -1471,6 +1471,7 @@
</trans-unit>
<trans-unit id="1405c5f1a9834338ff13442c550927ab7144fdc8" datatype="html">
<source>Community Integrations</source>
<target>Интеграции c сообществом</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">191,193</context>
@ -1544,6 +1545,7 @@
</trans-unit>
<trans-unit id="address-label.multisig" datatype="html">
<source>Multisig <x id="multisigM" equiv-text="ms.m"/> of <x id="multisigN" equiv-text="ms.n"/></source>
<target>Мультиподпись <x id="multisigM" equiv-text="ms.m"/> из <x id="multisigN" equiv-text="ms.n"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/address-labels/address-labels.component.ts</context>
<context context-type="linenumber">105</context>
@ -2027,6 +2029,7 @@
</trans-unit>
<trans-unit id="4718502b32e47c66db00ac7cf4f7f058acb6e849" datatype="html">
<source>Block </source>
<target>Блок</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">7,9</context>
@ -2121,6 +2124,7 @@
</trans-unit>
<trans-unit id="e9503a2605cf5d41273a7d5ad653873f28f8f1a3" datatype="html">
<source>Match rate</source>
<target>Коэффициент соответствия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">64,67</context>
@ -2129,6 +2133,7 @@
</trans-unit>
<trans-unit id="c97ea3cbb05527c76b0011820ca76e8e00632ca1" datatype="html">
<source>Missing txs</source>
<target>Отсутствующие транзакции</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">68,71</context>
@ -2137,6 +2142,7 @@
</trans-unit>
<trans-unit id="94d8765805623dd51e562e6e4bb669a944bbe516" datatype="html">
<source>Added txs</source>
<target>Добавленные транзакции</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">72,75</context>
@ -2145,6 +2151,7 @@
</trans-unit>
<trans-unit id="da5d7e263a3c6dc585d04844074afaa7229b88a0" datatype="html">
<source>Missing</source>
<target>Отсутствующие</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">84,85</context>
@ -2153,6 +2160,7 @@
</trans-unit>
<trans-unit id="80e3b490720757978c99a7b5af3885faf202b955" datatype="html">
<source>Added</source>
<target>Добавленные</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-audit/block-audit.component.html</context>
<context context-type="linenumber">86,92</context>
@ -2470,6 +2478,7 @@
</trans-unit>
<trans-unit id="80065834848189518" datatype="html">
<source>No data to display yet. Try again later.</source>
<target>Пока нет данных для отображения. Попробуйте позже.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-prediction-graph/block-prediction-graph.component.ts</context>
<context context-type="linenumber">108,103</context>
@ -2523,6 +2532,7 @@
</trans-unit>
<trans-unit id="7f5d0c10614e8a34f0e2dad33a0568277c50cf69" datatype="html">
<source>Block</source>
<target>Блок</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block-preview.component.html</context>
<context context-type="linenumber">3,7</context>
@ -2535,6 +2545,7 @@
</trans-unit>
<trans-unit id="445c243f1d1cd2c7f0df430cdb2fa25639600396" datatype="html">
<source><x id="INTERPOLATION" equiv-text="&lt;/ng-template&gt; &lt;/h1&gt; &lt;div class=&quot;blockhash&quot; *ngIf=&quot;block"/></source>
<target> <x id="INTERPOLATION" equiv-text="&lt;/ng-template&gt; &lt;/h1&gt; &lt;div class=&quot;blockhash&quot; *ngIf=&quot;block"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block-preview.component.html</context>
<context context-type="linenumber">11,12</context>
@ -3250,6 +3261,7 @@
</trans-unit>
<trans-unit id="5115edb23059f4dcfe6ce0a979e40962a149c35c" datatype="html">
<source>Hashrate &amp; Difficulty</source>
<target>Хэшрейт и сложность</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">15,16</context>
@ -3258,6 +3270,7 @@
</trans-unit>
<trans-unit id="a3382a60534e9fff5c3a0fcde39bab356afc4a59" datatype="html">
<source>Lightning</source>
<target>Лайтнинг</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">31</context>
@ -3266,6 +3279,7 @@
</trans-unit>
<trans-unit id="b420668a91f8ebaf6e6409c4ba87f1d45961d2bd" datatype="html">
<source>Lightning Nodes Per Network</source>
<target>Узлы Лайтнинг на сеть</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">34</context>
@ -3286,6 +3300,7 @@
</trans-unit>
<trans-unit id="ea8db27e6db64f8b940711948c001a1100e5fe9f" datatype="html">
<source>Lightning Network Capacity</source>
<target>Объем сети Лайтнинг</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">36</context>
@ -3306,6 +3321,7 @@
</trans-unit>
<trans-unit id="8573a1576789bd2c4faeaed23037c4917812c6cf" datatype="html">
<source>Lightning Nodes Per ISP</source>
<target>Узлов Лайтнинг на провайдера</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">38</context>
@ -3318,6 +3334,7 @@
</trans-unit>
<trans-unit id="9d3ad4c6623870d96b65fb7a708fed6ce7c20044" datatype="html">
<source>Lightning Nodes Per Country</source>
<target>Узлов Лайтнинг на страну</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">40</context>
@ -3334,6 +3351,7 @@
</trans-unit>
<trans-unit id="af8560ca50882114be16c951650f83bca73161a7" datatype="html">
<source>Lightning Nodes World Map</source>
<target>Мировая карта узлов Лайтнинг</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">42</context>
@ -3350,6 +3368,7 @@
</trans-unit>
<trans-unit id="b482ceceb39c7a045cb2ab2c64f7091d21e63d44" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Мировая карта лайтнинг-каналов</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/graphs/graphs.component.html</context>
<context context-type="linenumber">44</context>
@ -3470,6 +3489,7 @@
</trans-unit>
<trans-unit id="142e923d3b04186ac6ba23387265d22a2fa404e0" datatype="html">
<source>Lightning Explorer</source>
<target>Лайтнинг-обозреватель</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context>
<context context-type="linenumber">44,45</context>
@ -3482,6 +3502,7 @@
</trans-unit>
<trans-unit id="7cbedd89f60daafaf0e56363900d666a4e02ffb1" datatype="html">
<source>beta</source>
<target>бета</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/master-page/master-page.component.html</context>
<context context-type="linenumber">45,48</context>
@ -3737,6 +3758,7 @@
</trans-unit>
<trans-unit id="2158ea60725d3a97aed6f0f00aa7df48d7bb42ff" datatype="html">
<source>mining pool</source>
<target>майнинг-пул</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -4067,6 +4089,7 @@
</trans-unit>
<trans-unit id="7deec1c1520f06170e1f8e8ddfbe4532312f638f" datatype="html">
<source>Explore the full Bitcoin ecosystem</source>
<target>Исследуйте всю экосистему Биткоина</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/search-form/search-form.component.html</context>
<context context-type="linenumber">4,6</context>
@ -4440,6 +4463,7 @@
</trans-unit>
<trans-unit id="d0fd8887b50687cfc0fc1f6569f6fd6c5db4ffc0" datatype="html">
<source>Hide diagram</source>
<target>Скрыть диаграмму</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">198,203</context>
@ -4448,6 +4472,7 @@
</trans-unit>
<trans-unit id="f0c5f6f270e70cbe063b5368fcf48f9afc1abd9b" datatype="html">
<source>Show more</source>
<target>Показать больше</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">219,221</context>
@ -4456,6 +4481,7 @@
</trans-unit>
<trans-unit id="5403a767248e304199592271bba3366d2ca3f903" datatype="html">
<source>Show less</source>
<target>Показывай меньше</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">221,227</context>
@ -4464,6 +4490,7 @@
</trans-unit>
<trans-unit id="e7aa6db8df12d0158df972b6abfc65a8478b2b7d" datatype="html">
<source>Show diagram</source>
<target>Показать схему</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">241,242</context>
@ -4657,6 +4684,7 @@
</trans-unit>
<trans-unit id="ac0c4b49e44c42db35ddf590fb5f78375a891b01" datatype="html">
<source>other inputs</source>
<target>другие входы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">12</context>
@ -4665,6 +4693,7 @@
</trans-unit>
<trans-unit id="8900247c0476fea8fcbee57a72a1d1da5ddd40ff" datatype="html">
<source>other outputs</source>
<target>другие выходы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">13</context>
@ -4673,6 +4702,7 @@
</trans-unit>
<trans-unit id="3e242f213dd1a0754aad9164aa80887d67708500" datatype="html">
<source>Input</source>
<target>Вход</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">43</context>
@ -4681,6 +4711,7 @@
</trans-unit>
<trans-unit id="7a080851e25a41e898776a9c90cf8dbe81027f9a" datatype="html">
<source>Output</source>
<target>Выход</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-bowtie-graph-tooltip/tx-bowtie-graph-tooltip.component.html</context>
<context context-type="linenumber">44</context>
@ -4689,6 +4720,7 @@
</trans-unit>
<trans-unit id="25d58cd5c18fd9c1c89d6062d67dcc2482161410" datatype="html">
<source>This transaction saved <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/>% on fees by using native SegWit</source>
<target>Эта транзакция сэкономила <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/> % на комиссиях за счет использования нативного SegWit.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">2</context>
@ -4715,6 +4747,7 @@
</trans-unit>
<trans-unit id="b6a3f6afdac6873e2d261647d834c02c91376893" datatype="html">
<source>This transaction saved <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/>% on fees by using SegWit and could save <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/>% more by fully upgrading to native SegWit</source>
<target>Эта транзакция сэкономила <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedSegwitGains * 100 | number: '1.0-0' }}"/> % на комиссиях за счет использования SegWit и может сэкономить еще <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/> % за счет полного перехода на нативный SegWit.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">4</context>
@ -4723,6 +4756,7 @@
</trans-unit>
<trans-unit id="a67530e246368aa7e5d010061fd84c3c4fe755c2" datatype="html">
<source>This transaction could save <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/>% on fees by upgrading to native SegWit or <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialP2shSegwitGains * 100 | number: '1.0-0' }}"/>% by upgrading to SegWit-P2SH</source>
<target>Эта транзакция могла сэкономить <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialSegwitGains * 100 | number : '1.0-0' }}"/> % на комиссиях за счет перехода на нативный SegWit или <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialP2shSegwitGains * 100 | number: '1.0-0' }}"/> % за счет обновления до SegWit-P2SH.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">6</context>
@ -4731,6 +4765,7 @@
</trans-unit>
<trans-unit id="17e9c05e053cbd29d3835d8ecb19508d0f07241b" datatype="html">
<source>This transaction uses Taproot and thereby saved at least <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/>% on fees</source>
<target>Эта транзакция использует Taproot и, таким образом, сэкономила как минимум <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/> % на комиссиях.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">12</context>
@ -4739,6 +4774,7 @@
</trans-unit>
<trans-unit id="65d5167c4947e3ad81758d238a7ac7e893c261f0" datatype="html">
<source>Taproot</source>
<target>Taproot</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">12</context>
@ -4760,6 +4796,7 @@
</trans-unit>
<trans-unit id="47b821c7df420c96de0b22844a88c04d52628540" datatype="html">
<source>This transaction uses Taproot and already saved at least <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/>% on fees, but could save an additional <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/>% by fully using Taproot</source>
<target>Эта транзакция использует Taproot и уже сэкономила как минимум <x id="INTERPOLATION" equiv-text="{{ segwitGains.realizedTaprootGains * 100 | number: '1.0-0' }}"/> % на комиссиях, но может сэкономить дополнительно <x id="INTERPOLATION_1" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/> % за счет использования Taproot в полной мере.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">14</context>
@ -4768,6 +4805,7 @@
</trans-unit>
<trans-unit id="aa31fc4d29f35b2fd36080bb6ff84be8eaab66fd" datatype="html">
<source>This transaction could save <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/>% on fees by using Taproot</source>
<target>Эта транзакция может сэкономить <x id="INTERPOLATION" equiv-text="{{ segwitGains.potentialTaprootGains * 100 | number: '1.0-0' }}"/> % на комиссиях с помощью Taproot.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">16</context>
@ -4785,6 +4823,7 @@
</trans-unit>
<trans-unit id="07883574bb93ea23b764861f56a525bdaf907513" datatype="html">
<source>This transaction supports Replace-By-Fee (RBF) allowing fee bumping</source>
<target>Эта транзакция поддерживает функцию Replace-By-Fee (RBF), что позволяет повышать комиссию.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/tx-features/tx-features.component.html</context>
<context context-type="linenumber">25</context>
@ -5021,6 +5060,7 @@
</trans-unit>
<trans-unit id="4ca458fe3274d1c79640b052d57cf3b900b650b6" datatype="html">
<source>Base fee</source>
<target>Базовая комиссия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">30</context>
@ -5033,6 +5073,7 @@
</trans-unit>
<trans-unit id="6acd06bd5a3af583cd46c6d9f7954d7a2b44095e" datatype="html">
<source>mSats</source>
<target>мСат</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">36</context>
@ -5049,6 +5090,7 @@
</trans-unit>
<trans-unit id="fb2137ba0df55f21a9d6b6ad08d56d74ad852e0e" datatype="html">
<source>This channel supports zero base fee routing</source>
<target>Этот канал поддерживает маршрутизацию с нулевой базовой комиссией.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">45</context>
@ -5057,6 +5099,7 @@
</trans-unit>
<trans-unit id="3ec76ccfe1fdcbfd7ea152392f6472d93d4e8cab" datatype="html">
<source>Zero base fee</source>
<target>Нулевая базовая комиссия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">46</context>
@ -5065,6 +5108,7 @@
</trans-unit>
<trans-unit id="b5e42e06ea8a4012a38eef209104bbd9dd1a0fc0" datatype="html">
<source>This channel does not support zero base fee routing</source>
<target>Этот канал не поддерживает маршрутизацию с нулевой базовой комиссией.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">51</context>
@ -5073,6 +5117,7 @@
</trans-unit>
<trans-unit id="09a1bc9c4198e87e9e974a51e86b181429b480d3" datatype="html">
<source>Non-zero base fee</source>
<target>Ненулевая базовая комиссия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">52</context>
@ -5081,6 +5126,7 @@
</trans-unit>
<trans-unit id="055060668d0b9902c37abfb6168a08a36eba4496" datatype="html">
<source>Min HTLC</source>
<target>Мин. HTLC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">58</context>
@ -5089,6 +5135,7 @@
</trans-unit>
<trans-unit id="c3d94c1a5aef6211f4a902027bd08540d7222b0d" datatype="html">
<source>Max HTLC</source>
<target>Макс. HTLC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">64</context>
@ -5105,6 +5152,7 @@
</trans-unit>
<trans-unit id="205c1b86ac1cc419c4d0cca51fdde418c4ffdc20" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> channels</source>
<target> <x id="INTERPOLATION" equiv-text="{{ i }}"/> каналов</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-box/channel-box.component.html</context>
<context context-type="linenumber">80</context>
@ -5117,6 +5165,7 @@
</trans-unit>
<trans-unit id="3bbd25c289760a3ba57e30df5ad5fe8977ab25a5" datatype="html">
<source>lightning channel</source>
<target>лайтнинг-канал</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5125,6 +5174,7 @@
</trans-unit>
<trans-unit id="43c4133c7a0263d2e33dd4c2e74d40784b2e4b1c" datatype="html">
<source>Inactive</source>
<target>Неактивный</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">10,11</context>
@ -5141,6 +5191,7 @@
</trans-unit>
<trans-unit id="b36e1450940b7f6028d8587568c7d669b53f7a06" datatype="html">
<source>Active</source>
<target>Активный</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">11,12</context>
@ -5157,6 +5208,7 @@
</trans-unit>
<trans-unit id="4804b8e78964cee9e5c85f31fd982639b97780b2" datatype="html">
<source>Closed</source>
<target>Закрыт</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">12,14</context>
@ -5177,6 +5229,7 @@
</trans-unit>
<trans-unit id="1b051734b0ee9021991c91b3ed4e81c244322462" datatype="html">
<source>Created</source>
<target>Создан</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">23,26</context>
@ -5189,6 +5242,7 @@
</trans-unit>
<trans-unit id="ce9dfdc6dccb28dc75a78c704e09dc18fb02dcfa" datatype="html">
<source>Capacity</source>
<target>Объем</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.html</context>
<context context-type="linenumber">27,28</context>
@ -5261,6 +5315,7 @@
</trans-unit>
<trans-unit id="13142ad9637003749d667393aaae7a286d1eba5b" datatype="html">
<source>Lightning channel</source>
<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>
@ -5273,6 +5328,7 @@
</trans-unit>
<trans-unit id="8dad9f60ff582b632a864f22c7466327793c3f09" datatype="html">
<source>Last update</source>
<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>
@ -5305,6 +5361,7 @@
</trans-unit>
<trans-unit id="0c134c6787c6b763446c096ea5233ace6fd9116d" datatype="html">
<source>Closing date</source>
<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>
@ -5317,6 +5374,7 @@
</trans-unit>
<trans-unit id="cdd2ea2e12437df848ec474ac15af48859bd09a0" datatype="html">
<source>Opening transaction</source>
<target>Транзакция открытия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">73,74</context>
@ -5325,6 +5383,7 @@
</trans-unit>
<trans-unit id="50411064ac48e15659d1985b414ae91af0c8cd36" datatype="html">
<source>Closing transaction</source>
<target>Транзакция закрытия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.html</context>
<context context-type="linenumber">82,84</context>
@ -5333,6 +5392,7 @@
</trans-unit>
<trans-unit id="6008566722612122663" datatype="html">
<source>Channel: <x id="PH" equiv-text="value.short_id"/></source>
<target>Канал: <x id="PH" equiv-text="value.short_id"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel.component.ts</context>
<context context-type="linenumber">37</context>
@ -5348,6 +5408,7 @@
</trans-unit>
<trans-unit id="a43e63c25599408ef14b33c80dd523021b21f846" datatype="html">
<source>No channels to display</source>
<target>Нет каналов для отображения</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">29,35</context>
@ -5356,6 +5417,7 @@
</trans-unit>
<trans-unit id="fbaaeb297e70b9a800acf841b9d26c19d60651ef" datatype="html">
<source>Alias</source>
<target>Псевдоним</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">35,37</context>
@ -5392,6 +5454,7 @@
</trans-unit>
<trans-unit id="81b97b8ea996ad1e4f9fca8415021850214884b1" datatype="html">
<source>Status</source>
<target>Статус</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">37,38</context>
@ -5400,6 +5463,7 @@
</trans-unit>
<trans-unit id="0cd107458dce99721e72971d426a5a3106074331" datatype="html">
<source>Channel ID</source>
<target>ID канала</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">41,45</context>
@ -5408,6 +5472,7 @@
</trans-unit>
<trans-unit id="e4b2d9e6a2ab9e6ca34027ec03beaac42b7badd4" datatype="html">
<source>sats</source>
<target>сат</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-list/channels-list.component.html</context>
<context context-type="linenumber">61,65</context>
@ -5460,6 +5525,7 @@
</trans-unit>
<trans-unit id="ab456546aa39de3328fcfdf077f410b5ff1aa773" datatype="html">
<source>Avg Capacity</source>
<target>Средняя емкость</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>
@ -5472,6 +5538,7 @@
</trans-unit>
<trans-unit id="f68705670e611f13da1a43e90f9c97d8761dd9ef" datatype="html">
<source>Avg Fee Rate</source>
<target>Средняя комиссия</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>
@ -5484,6 +5551,7 @@
</trans-unit>
<trans-unit id="db1f0c0605ab0c4a904523635982253ff72eed40" datatype="html">
<source>The average fee rate charged by routing nodes, ignoring fee rates &gt; 0.5% or 5000ppm</source>
<target>Средняя комиссия, взимаемая узлами маршрутизации, без учета ставок комиссии &gt; 0,5% или 5000 ppm.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">28,30</context>
@ -5492,6 +5560,7 @@
</trans-unit>
<trans-unit id="140fb39368f210ec945417f3eb23bf9564396e5c" datatype="html">
<source>Avg Base Fee</source>
<target>Средняя базовая комиссия</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>
@ -5504,6 +5573,7 @@
</trans-unit>
<trans-unit id="0a46218f4a7b17b6445460898d75ab78e7e7979b" datatype="html">
<source>The average base fee charged by routing nodes, ignoring base fees &gt; 5000ppm</source>
<target>Средняя базовая комиссия, взимаемая узлами маршрутизации, без учета базовых комиссий &gt; 5000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">43,45</context>
@ -5512,6 +5582,7 @@
</trans-unit>
<trans-unit id="2e72b276a3c5cc2ec27b4c8189639ba2fe62b6cb" datatype="html">
<source>Med Capacity</source>
<target>Медианныйобъем</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">59,61</context>
@ -5520,6 +5591,7 @@
</trans-unit>
<trans-unit id="2c1c39e28735f607d62dbf3272eb792451c265a5" datatype="html">
<source>Med Fee Rate</source>
<target>Медианная комиссия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">72,74</context>
@ -5528,6 +5600,7 @@
</trans-unit>
<trans-unit id="cb4dae32e1b4d6a2ba6287d9f7bd859ca7259468" datatype="html">
<source>The median fee rate charged by routing nodes, ignoring fee rates &gt; 0.5% or 5000ppm</source>
<target>Медианная комиссия, взимаемая узлами маршрутизации, без учета ставок комиссии &gt; 0,5% или 5000 ppm.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">74,76</context>
@ -5536,6 +5609,7 @@
</trans-unit>
<trans-unit id="a541dbcef4908bf2e767e77d7a09cc62450e8e56" datatype="html">
<source>Med Base Fee</source>
<target>Медианная базовая комиссия</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">87,89</context>
@ -5544,6 +5618,7 @@
</trans-unit>
<trans-unit id="b8539025268617abfcab1c3f2a2c60cd8d7485fb" datatype="html">
<source>The median base fee charged by routing nodes, ignoring base fees &gt; 5000ppm</source>
<target>Медианная базовая комиссия, взимаемая узлами маршрутизации, без учета базовых комиссий &gt; 5000 ppm</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channels-statistics/channels-statistics.component.html</context>
<context context-type="linenumber">89,91</context>
@ -5552,6 +5627,7 @@
</trans-unit>
<trans-unit id="de1c07e9943fc284461bb8fb4860faecf52a1568" datatype="html">
<source>Lightning node group</source>
<target>Группа лайтнинг-узлов </target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5564,6 +5640,7 @@
</trans-unit>
<trans-unit id="6e2329529b1953198c7dfa0edb260554310bc636" datatype="html">
<source>Nodes</source>
<target>Узлы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">25,29</context>
@ -5604,6 +5681,7 @@
</trans-unit>
<trans-unit id="14a12efce56ffe89f839e50320bcf47e4e9ca4e4" datatype="html">
<source>Liquidity</source>
<target>Ликвидность</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">29,31</context>
@ -5640,6 +5718,7 @@
</trans-unit>
<trans-unit id="807cf11e6ac1cde912496f764c176bdfdd6b7e19" datatype="html">
<source>Channels</source>
<target>Каналы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">40,43</context>
@ -5700,6 +5779,7 @@
</trans-unit>
<trans-unit id="e4706894b195010f6814e54bf6570c729d69aaca" datatype="html">
<source>Average size</source>
<target>Средний размер</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group-preview.component.html</context>
<context context-type="linenumber">44,46</context>
@ -5712,6 +5792,7 @@
</trans-unit>
<trans-unit id="ed31c09fd77c36238c13d83635f3fe5294c733d2" datatype="html">
<source>Location</source>
<target>Расположение</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group.component.html</context>
<context context-type="linenumber">74,77</context>
@ -5752,6 +5833,7 @@
</trans-unit>
<trans-unit id="29c05e9a540827cdfa8e3b2e5e2f27aeb478916c" datatype="html">
<source>Network Statistics</source>
<target>Статистика сети</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">10</context>
@ -5760,6 +5842,7 @@
</trans-unit>
<trans-unit id="066e05b9a5db60850d907783fde6913e2e47cd5b" datatype="html">
<source>Channels Statistics</source>
<target>Статистика каналов</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">24</context>
@ -5768,6 +5851,7 @@
</trans-unit>
<trans-unit id="0f33aeb084ac4d83cb0fe6f72648a8585b1b5e88" datatype="html">
<source>Lightning Network History</source>
<target>История сети Лайтнинг</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">49</context>
@ -5776,6 +5860,7 @@
</trans-unit>
<trans-unit id="2d9883d230a47fbbb2ec969e32a186597ea27405" datatype="html">
<source>Liquidity Ranking</source>
<target>Рейтинг ликвидности</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">62</context>
@ -5792,6 +5877,7 @@
</trans-unit>
<trans-unit id="c50bf442cf99f6fc5f8b687c460f33234b879869" datatype="html">
<source>Connectivity Ranking</source>
<target>Рейтинг соединения</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.html</context>
<context context-type="linenumber">76</context>
@ -5804,6 +5890,7 @@
</trans-unit>
<trans-unit id="027f48063a5512e5c26b6ca88f7d7734e2d333a7" datatype="html">
<source>Percentage change past week</source>
<target>Процентное изменение за последнюю неделю</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node-statistics/node-statistics.component.html</context>
<context context-type="linenumber">5,7</context>
@ -5820,6 +5907,7 @@
</trans-unit>
<trans-unit id="be6ebbb11d55adb8e821d503f8e10ccf43ed8b00" datatype="html">
<source>Lightning node</source>
<target>Лайтнинг-узел</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -5836,6 +5924,7 @@
</trans-unit>
<trans-unit id="af15c87bfed273bc095ba572cf27e3aaffc33b22" datatype="html">
<source>Active capacity</source>
<target>Активная емкость</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">20,22</context>
@ -5848,6 +5937,7 @@
</trans-unit>
<trans-unit id="52ffa66bd0399a49d5aa8d6f8fa077a6e8db09c0" datatype="html">
<source>Active channels</source>
<target>Активные каналы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">26,30</context>
@ -5860,6 +5950,7 @@
</trans-unit>
<trans-unit id="a43f25a9ac40e8e2441ff0be7a36b8e5d15534df" datatype="html">
<source>Country</source>
<target>Страна</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.html</context>
<context context-type="linenumber">44,47</context>
@ -5868,6 +5959,7 @@
</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>
@ -5876,6 +5968,7 @@
</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>
@ -5884,6 +5977,7 @@
</trans-unit>
<trans-unit id="e5d8bb389c702588877f039d72178f219453a72d" datatype="html">
<source>Unknown</source>
<target>Неизвестно</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">52,56</context>
@ -5904,6 +5998,7 @@
</trans-unit>
<trans-unit id="8fa4d523f7b91df4390120b85ed0406138273e1a" datatype="html">
<source>Color</source>
<target>Цвет</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">75,77</context>
@ -5912,6 +6007,7 @@
</trans-unit>
<trans-unit id="5b9904cb31f6f28314443f6385dc5facab7ea851" datatype="html">
<source>ISP</source>
<target>Интернет-провайдер</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">82,83</context>
@ -5924,6 +6020,7 @@
</trans-unit>
<trans-unit id="86d9619247d148019e5599707c39a36e880a2d23" datatype="html">
<source>Exclusively on Tor</source>
<target>Исключительно Tor</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">88,90</context>
@ -5932,6 +6029,7 @@
</trans-unit>
<trans-unit id="b371db1a7ab2167dc8dd91b48ea929d71bb4ef4c" datatype="html">
<source>Open channels</source>
<target>Открытые каналы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">145,148</context>
@ -5940,6 +6038,7 @@
</trans-unit>
<trans-unit id="a2dff531c3d7477178553f579e0ec7c3ac7a6f30" datatype="html">
<source>Closed channels</source>
<target>Закрытые каналы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">149,152</context>
@ -5948,6 +6047,7 @@
</trans-unit>
<trans-unit id="2519445964020754921" datatype="html">
<source>Node: <x id="PH" equiv-text="node.alias"/></source>
<target>Узел: <x id="PH" equiv-text="node.alias"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.ts</context>
<context context-type="linenumber">42</context>
@ -5955,6 +6055,7 @@
</trans-unit>
<trans-unit id="7cac1c3013423d82d5149a5854d709bd08411430" datatype="html">
<source>(Tor nodes excluded)</source>
<target>(узлы Tor исключены)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.html</context>
<context context-type="linenumber">8,11</context>
@ -5975,6 +6076,7 @@
</trans-unit>
<trans-unit id="8199511328474154549" datatype="html">
<source>Lightning Nodes Channels World Map</source>
<target>Мировая карта каналов лайтнинг-узлов</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>
@ -5982,6 +6084,7 @@
</trans-unit>
<trans-unit id="4390631969351833104" datatype="html">
<source>No geolocation data available</source>
<target>Данные геолокации недоступны</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">218,213</context>
@ -5989,6 +6092,7 @@
</trans-unit>
<trans-unit id="a4d393ee035f4225083c22cc3909b26a05a87528" datatype="html">
<source>Active channels map</source>
<target>Карта активных каналов</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels/node-channels.component.html</context>
<context context-type="linenumber">2,3</context>
@ -5997,6 +6101,7 @@
</trans-unit>
<trans-unit id="4635698809727522638" datatype="html">
<source>Indexing in progess</source>
<target>Индексирование в процессе</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">121,116</context>
@ -6008,6 +6113,7 @@
</trans-unit>
<trans-unit id="1055322764280599360" datatype="html">
<source>Reachable on Clearnet Only</source>
<target>Доступно только в Clearnet</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>
@ -6019,6 +6125,7 @@
</trans-unit>
<trans-unit id="2760682261176173881" datatype="html">
<source>Reachable on Clearnet and Darknet</source>
<target>Доступно в Clearnet и 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">185,182</context>
@ -6030,6 +6137,7 @@
</trans-unit>
<trans-unit id="1191036460161514668" datatype="html">
<source>Reachable on Darknet Only</source>
<target>Доступно только в 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">206,203</context>
@ -6041,6 +6149,7 @@
</trans-unit>
<trans-unit id="0bd8b27f60a1f098a53e06328426d818e3508ff9" datatype="html">
<source>Share</source>
<target>Поделиться</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>
@ -6053,6 +6162,7 @@
</trans-unit>
<trans-unit id="5222540403093176126" datatype="html">
<source><x id="PH" equiv-text="country.count.toString()"/> nodes</source>
<target> узлы <x id="PH" equiv-text="country.count.toString()"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts</context>
<context context-type="linenumber">103,102</context>
@ -6068,6 +6178,7 @@
</trans-unit>
<trans-unit id="7032954508645880700" datatype="html">
<source><x id="PH" equiv-text="this.amountShortenerPipe.transform(country.capacity / 100000000, 2)"/> BTC capacity</source>
<target> <x id="PH" equiv-text="this.amountShortenerPipe.transform(country.capacity / 100000000, 2)"/> Емкость BTC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country-chart/nodes-per-country-chart.component.ts</context>
<context context-type="linenumber">104,102</context>
@ -6075,6 +6186,7 @@
</trans-unit>
<trans-unit id="7ede3edfacd291eb9db08e11845d9efdf197f417" datatype="html">
<source>Lightning nodes in <x id="INTERPOLATION" equiv-text="{{ country?.name }}"/></source>
<target>лайтнинг-злы в <x id="INTERPOLATION" equiv-text="{{ country?.name }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">3,4</context>
@ -6083,6 +6195,7 @@
</trans-unit>
<trans-unit id="4498ec29c37744fef46809ebc3db67c5fb789917" datatype="html">
<source>ISP Count</source>
<target>Количество интернет-провайдеров</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">34,38</context>
@ -6091,6 +6204,7 @@
</trans-unit>
<trans-unit id="90a6a964ba53464578003e3b4b2873ef5d2132a1" datatype="html">
<source>Top ISP</source>
<target>Топ интернет-провайдеры</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.html</context>
<context context-type="linenumber">38,40</context>
@ -6099,6 +6213,7 @@
</trans-unit>
<trans-unit id="7246059109648045954" datatype="html">
<source>Lightning nodes in <x id="PH" equiv-text="response.country.en"/></source>
<target>лайтнинг-узлы в <x id="PH" equiv-text="response.country.en"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-country/nodes-per-country.component.ts</context>
<context context-type="linenumber">35</context>
@ -6106,6 +6221,7 @@
</trans-unit>
<trans-unit id="6b4442323c695a8211357c7e4486dd620c443822" datatype="html">
<source>Clearnet Capacity</source>
<target>Емкость Clearnet</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>
@ -6118,6 +6234,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>Сколько ликвидности в узлах, сообщающих хотя бы один IP-адрес на Clearnet</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>
@ -6126,6 +6243,7 @@
</trans-unit>
<trans-unit id="462d2233ddacc9869eb28e09b3b12f1d85556937" datatype="html">
<source>Unknown Capacity</source>
<target>Емкость неизвестна</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>
@ -6138,6 +6256,7 @@
</trans-unit>
<trans-unit id="26fb07e8754b87bba4bf12c5137ffa77dac389a8" datatype="html">
<source>How much liquidity is running on nodes which ISP was not identifiable</source>
<target>Сколько ликвидности в узлах, интернет-провайдер которых не удалось идентифицировать</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">15,16</context>
@ -6146,6 +6265,7 @@
</trans-unit>
<trans-unit id="df3728b721159d25e68f5daf44aaab7fa25f1415" datatype="html">
<source>Tor Capacity</source>
<target>Емкость Tor</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">20,22</context>
@ -6158,6 +6278,7 @@
</trans-unit>
<trans-unit id="23549ef4e1f846f06abcf07ceecb115945a0cf61" datatype="html">
<source>How much liquidity is running on nodes advertising only Tor addresses</source>
<target>Сколько ликвидности в узлах, сообщающих только адреса Tor</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">22,23</context>
@ -6166,6 +6287,7 @@
</trans-unit>
<trans-unit id="e008f2a76179fdcd7110b41ca624131f91075949" datatype="html">
<source>Top 100 ISPs hosting LN nodes</source>
<target>Топ-100 интернет-провайдеров, размещающих узлы LN</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">31,33</context>
@ -6174,6 +6296,7 @@
</trans-unit>
<trans-unit id="3627306100664959238" datatype="html">
<source><x id="PH" equiv-text="this.amountShortenerPipe.transform(isp[2] / 100000000, 2)"/> BTC</source>
<target> <x id="PH" equiv-text="this.amountShortenerPipe.transform(isp[2] / 100000000, 2)"/> BTC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp-chart/nodes-per-isp-chart.component.ts</context>
<context context-type="linenumber">158,156</context>
@ -6185,6 +6308,7 @@
</trans-unit>
<trans-unit id="c18497e4f0db0d0ad0c71ba294295f42b3d312c9" datatype="html">
<source>Lightning ISP</source>
<target>Лайтнинг интернет-провайдер</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">3,5</context>
@ -6193,6 +6317,7 @@
</trans-unit>
<trans-unit id="41074627e075a9b1bd8197c474ea68a2b8276e54" datatype="html">
<source>Top country</source>
<target>Топ страна</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">39,41</context>
@ -6205,6 +6330,7 @@
</trans-unit>
<trans-unit id="5fad6872a652d922ad8822f4016e104b9a8cc113" datatype="html">
<source>Top node</source>
<target>Топ узел</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.html</context>
<context context-type="linenumber">45,48</context>
@ -6213,6 +6339,7 @@
</trans-unit>
<trans-unit id="5735693498020397727" datatype="html">
<source>Lightning nodes on ISP: <x id="PH" equiv-text="response.isp"/> [AS<x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>]</source>
<target>Лайтнинг-узлы у провайдера: <x id="PH" equiv-text="response.isp"/> [AS <x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>]</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp-preview.component.ts</context>
<context context-type="linenumber">44</context>
@ -6224,6 +6351,7 @@
</trans-unit>
<trans-unit id="d82f436f033a7d81680b8430275f94dda530151c" datatype="html">
<source>Lightning nodes on ISP: <x id="INTERPOLATION" equiv-text="{{ isp?.name }}"/></source>
<target>Лайтнинг-узлы у провайдера: <x id="INTERPOLATION" equiv-text="{{ isp?.name }}"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">2,4</context>
@ -6232,6 +6360,7 @@
</trans-unit>
<trans-unit id="ca0b795795658155d44ddca02e95f1feeeb4a88f" datatype="html">
<source>ASN</source>
<target>ASN</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-per-isp/nodes-per-isp.component.html</context>
<context context-type="linenumber">11,14</context>
@ -6240,6 +6369,7 @@
</trans-unit>
<trans-unit id="5b727d251b06e9959cf24a90250a480d425339de" datatype="html">
<source>Top 100 oldest lightning nodes</source>
<target>Топ-100 самых старых узлов Lightning</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.html</context>
<context context-type="linenumber">3,7</context>
@ -6248,6 +6378,7 @@
</trans-unit>
<trans-unit id="4157312397261844620" datatype="html">
<source>Oldest lightning nodes</source>
<target>Самые старые лайтнинг-узлы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/oldest-nodes/oldest-nodes.component.ts</context>
<context context-type="linenumber">27</context>
@ -6255,6 +6386,7 @@
</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>
@ -6263,6 +6395,7 @@
</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>
@ -6271,6 +6404,7 @@
</trans-unit>
<trans-unit id="47a30fc5a836252f8fe03e2949756b150684d934" datatype="html">
<source>Oldest nodes</source>
<target>Самые старые узлы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.html</context>
<context context-type="linenumber">36</context>
@ -6279,6 +6413,7 @@
</trans-unit>
<trans-unit id="4034215342842066505" datatype="html">
<source>Top lightning nodes</source>
<target>Топ лайтнинг-узлы</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts</context>
<context context-type="linenumber">22</context>
@ -6286,6 +6421,7 @@
</trans-unit>
<trans-unit id="af1176facd00a0580509fb2900ab0cf7f9b39ae7" datatype="html">
<source>Indexing in progress</source>
<target>Выполняется индексирование</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.html</context>
<context context-type="linenumber">52,55</context>