Compare commits

..

89 Commits

Author SHA1 Message Date
orangesurf
b640202c63 Changes following feedback 2023-12-08 13:44:22 +00:00
orangesurf
b3258b0be7 Update FAQ to add Accelerator details 2023-12-06 20:57:41 +00:00
wiz
4169e1053f Merge pull request #4482 from mempool/mononaut/fix-negative-accel-rate
Fix negative accelerated fee rate, simplify fee rate table
2023-12-07 01:50:12 +09:00
wiz
a46e779d0c Merge branch 'master' into mononaut/fix-negative-accel-rate 2023-12-06 23:56:12 +09:00
Mononaut
51102004bb Fix negative accelerated fee rate, simplify fee rate table 2023-12-06 14:50:26 +00:00
wiz
08e9142d57 Merge pull request #4481 from mempool/mononaut/improve-acceleration-tracking
Improve acceleration tracking
2023-12-06 22:42:00 +09:00
Mononaut
b7c4cd43fc Better error handling for accelerations update request 2023-12-06 12:09:46 +00:00
Mononaut
08a35b85a8 Fix current accelerations update race condition 2023-12-06 12:09:28 +00:00
wiz
51a28b2e01 Merge pull request #4480 from mempool/mononaut/mined-acceleration-info
Show accelerated fee rates for mined transactions
2023-12-05 23:00:15 +09:00
Mononaut
966adf5963 Show accelerated fee rates on mined tx pages 2023-12-05 13:48:38 +00:00
wiz
ae7b17c4fd Merge pull request #4478 from mempool/mononaut/accelerated-badge
Accelerated tx audit badge
2023-12-05 17:36:52 +09:00
Mononaut
5b4bc9fe19 Accelerated tx audit badge 2023-12-05 08:33:57 +00:00
wiz
89eb7ec90b ops: Enable accelerator in production config 2023-12-05 05:29:18 +09:00
wiz
a646c5f22f Merge pull request #4390 from ncois/tooltip-overflow-bug
Fix tooltip overflow by increasing width
2023-12-04 23:44:44 +09:00
wiz
c345f2164b Merge pull request #4462 from ncois/search-block-datetime
Search a block by date and timestamp
2023-12-04 23:44:19 +09:00
wiz
9791ee018d Merge pull request #4466 from ncois/pool-hashrate-format
Pool chart hashrate format in power of ten
2023-12-04 23:44:06 +09:00
wiz
7c83b85e3e Merge pull request #4476 from mempool/nymkappa/fix-waitlist-message
[accel preview] only show waitlist message if logged in
2023-12-04 23:43:50 +09:00
nymkappa
63942af720 wait list -> waitlist @softsimon 2023-12-04 23:30:22 +09:00
nymkappa
4da5910e0b [accel preview] only show waitlist message if logged in 2023-12-04 23:23:51 +09:00
wiz
025788e78c Merge pull request #4471 from mempool/nymkappa/fix-one-bug-add-two-more
Various fixes and improvements
2023-12-04 22:51:41 +09:00
nymkappa
88a9524064 Merge branch 'master' into pool-hashrate-format 2023-12-04 21:34:43 +09:00
ncois
c216e849e6 Add more precision to hashrate graphs 2023-12-04 09:56:56 +01:00
nymkappa
c86768edc9 [about] fix merge conflict #4425 2023-12-04 16:59:29 +09:00
nymkappa
4283d30ce0 Merge branch 'master' into search-block-datetime 2023-12-04 13:09:58 +09:00
nymkappa
e2eeaebfc7 Merge branch 'master' into nymkappa/fix-one-bug-add-two-more 2023-12-04 10:47:49 +09:00
softsimon
90d87aaaca Merge pull request #4472 from mempool/simon/upgrading-fontawesome
Upgrading fontawesome
2023-12-03 18:17:33 +09:00
softsimon
b2e9275ad9 Upgrading fontawesome 2023-12-03 17:34:31 +09:00
nymkappa
181e816c1a Merge branch 'nymkappa/about-page-empty-anchor' into nymkappa/fix-one-bug-add-two-more 2023-12-03 15:17:04 +09:00
softsimon
758ca4e93a Merge pull request #4233 from mempool/hunicus/enterprise-abs
Make enterprise links not relative
2023-12-03 14:09:25 +09:00
softsimon
a33f915c7a Merge pull request #4438 from mempool/mononaut/refactor-difficulty-reindexing
Refactor difficulty reindexing to process blocks in height order
2023-12-03 13:15:01 +09:00
softsimon
75c6d006ff Merge pull request #4433 from mempool/mononaut/dismiss-acceleration-preview
Make the acceleration preview dismissable
2023-12-02 18:19:46 +09:00
softsimon
1fe983a299 Merge pull request #4468 from mempool/mononaut/fix-liquid-fee-rounding
Fix liquid recommended fee rounding
2023-12-02 15:05:13 +09:00
Mononaut
cd8e3e2604 Fix liquid fee rounding 2023-12-02 03:20:09 +00:00
wiz
dfc4309d9e Merge pull request #4465 from mempool/mononaut/fix-liquid-minfee
Fix Liquid minfee defaults
2023-12-01 21:52:25 +09:00
ncois
0a70273456 Pool chart: show power of ten of hashrate on desktop 2023-12-01 12:57:30 +01:00
softsimon
62c9a88235 Merge pull request #4448 from mempool/nymkappa/accel-preview-logged-in
[accelerator] show wait list message in preview when logged in with no access
2023-12-01 18:37:05 +09:00
Mononaut
851e07b50b Fix liquid minfee defaults 2023-12-01 18:12:59 +09:00
wiz
e1bbec074b Merge pull request #4457 from mempool/mononaut/matomo-path
matomo path
2023-12-01 17:54:06 +09:00
Mononaut
9fcafeeeb0 Switch to toggle-style acceleration dismiss button 2023-12-01 14:55:19 +09:00
Mononaut
e986cfd30b Make the acceleration preview dismissable 2023-12-01 14:21:05 +09:00
ncois
2584a1f2b0 Add date and timestamp search option 2023-11-30 20:05:25 +01:00
softsimon
1c92394563 Merge pull request #4449 from mempool/nymkappa/translation-typo
Fix some SEO strings
2023-11-30 18:33:05 +09:00
softsimon
36398ca57a Updating messages.xlf 2023-11-30 18:29:06 +09:00
softsimon
6b978f9262 Merge pull request #3706 from mempool/mononaut/reconnect-dead-websocket
reconnect websocket after closed by server
2023-11-30 18:26:18 +09:00
softsimon
12cf130c00 Merge branch 'master' into mononaut/reconnect-dead-websocket 2023-11-30 17:57:19 +09:00
softsimon
ba933a81c3 Merge pull request #3704 from mempool/mononaut/handle-websocket-errors
Disconnect websocket clients on error
2023-11-30 17:56:58 +09:00
Mononaut
7de7081d67 matomo path 2023-11-30 17:35:26 +09:00
nymkappa
6b933c202f Update nodes-rankings-dashboard.component.ts 2023-11-30 17:22:22 +09:00
softsimon
f1525b7df5 Merge pull request #4445 from mempool/dependabot/npm_and_yarn/frontend/fortawesome/fontawesome-svg-core-6.5.0
Bump @fortawesome/fontawesome-svg-core from 6.4.0 to 6.5.0 in /frontend
2023-11-30 17:05:19 +09:00
wiz
62c4af1a0c Merge pull request #4455 from mempool/mononaut/fix-matomo-fix
Fix matomo again
2023-11-30 15:49:00 +09:00
Mononaut
4ac98bc483 Fix matomo again 2023-11-30 15:46:58 +09:00
softsimon
ed07daebca Merge branch 'master' into mononaut/handle-websocket-errors 2023-11-30 15:18:16 +09:00
wiz
f8bbf7783c Merge pull request #4443 from mempool/nymkappa/debug-add-context
[log] create more general error
2023-11-30 14:53:51 +09:00
softsimon
fac2fab16a Merge pull request #4437 from mempool/simon/remove-audit-beta
Remove block audit beta-tag
2023-11-30 14:50:57 +09:00
wiz
76de4e34d8 Merge pull request #4425 from mempool/mononaut/fix-matomo
fix matomo bug
2023-11-30 14:40:26 +09:00
softsimon
6109f25aa9 Merge pull request #4452 from ncois/tx-ui-overflow
Fix overflow on transaction page
2023-11-30 14:36:15 +09:00
softsimon
86303175e9 Merge pull request #4451 from ncois/format-difficulty-chart
Difficulty adjustment chart: format the hashrate and difficulty
2023-11-30 14:27:39 +09:00
nymkappa
a670131f40 Merge branch 'master' into tooltip-overflow-bug 2023-11-30 11:54:16 +09:00
ncois
c5ce3167f3 Fix overflow on transaction page 2023-11-29 15:27:45 +01:00
ncois
9913254a5c Difficulty value: remove rounding 2023-11-29 11:16:48 +01:00
ncois
fbb4ba39c2 Mining chart: show hashrate power of ten on desktop 2023-11-29 11:08:38 +01:00
nymkappa
22bf0fe928 Re-apply fix from https://github.com/mempool/mempool/pull/4419/files#diff-9daf43654b4e0bb2c925b6396c6e3a7e1b117bd854fe9c46290f025bfe0a762eR285 2023-11-29 18:03:23 +09:00
nymkappa
3b30765070 Revert unnecessary changes 2023-11-29 18:00:07 +09:00
nymkappa
63fde7d0b6 Merge branch 'master' into nymkappa/about-page-sponsors-component 2023-11-29 17:57:54 +09:00
softsimon
cf338970bf Merge pull request #4450 from mempool/translations_frontend-src-locale-messages-xlf--master_fr
Updates for file frontend/src/locale/messages.xlf in fr
2023-11-29 16:35:27 +09:00
Mononaut
08e046ea2a fix matomo bug 2023-11-29 16:17:07 +09:00
transifex-integration[bot]
5697710c23 Translate frontend/src/locale/messages.xlf in fr
100% reviewed source file: 'frontend/src/locale/messages.xlf'
on 'fr'.
2023-11-29 07:00:03 +00:00
nymkappa
b9e050e24b Fix small typo in lightning node ranking dashboard seo 2023-11-29 15:59:15 +09:00
nymkappa
ff819673e5 Fix "and" chain in lightning dashboard seo 2023-11-29 15:56:35 +09:00
nymkappa
2e2801a4ab Add missing txid in seo tx preview 2023-11-29 15:51:35 +09:00
nymkappa
f52b17ca7a Add missing space in seo address preview 2023-11-29 15:28:14 +09:00
softsimon
3d25235705 Merge pull request #4439 from mempool/mononaut/fix-ln-search-suggestions
Fix spurious ln channel typeahead matches
2023-11-29 15:24:34 +09:00
nymkappa
2cbc6783a4 [accelerator] show wait list message in preview when logged in with no access 2023-11-29 15:02:48 +09:00
dependabot[bot]
406bf5d3b7 Bump @fortawesome/fontawesome-svg-core from 6.4.0 to 6.5.0 in /frontend
Bumps [@fortawesome/fontawesome-svg-core](https://github.com/FortAwesome/Font-Awesome) from 6.4.0 to 6.5.0.
- [Release notes](https://github.com/FortAwesome/Font-Awesome/releases)
- [Changelog](https://github.com/FortAwesome/Font-Awesome/blob/6.x/CHANGELOG.md)
- [Commits](https://github.com/FortAwesome/Font-Awesome/compare/6.4.0...6.5.0)

---
updated-dependencies:
- dependency-name: "@fortawesome/fontawesome-svg-core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-29 02:48:50 +00:00
nymkappa
f5bf883de9 [about] fix auto scroll to chad/whale 2023-11-28 18:05:18 +09:00
nymkappa
c06cade1ca [log] create more general error 2023-11-28 17:13:52 +09:00
softsimon
c23a872887 Updating german i18n 2023-11-28 14:42:25 +09:00
Mononaut
0b449347c1 Fix spurious ln channel typeahead matches 2023-11-26 09:22:44 +00:00
softsimon
d2da81e039 Remove block audit beta-tag 2023-11-26 17:21:13 +09:00
Mononaut
66d88abdc5 Refactor difficulty reindexing to process blocks in height order 2023-11-26 08:17:30 +00:00
Mononaut
85c9c79699 reconnect websocket after closed by server 2023-11-25 11:25:07 +00:00
Mononaut
652100f774 More verbose websocket error logs 2023-11-25 09:02:27 +00:00
Mononaut
0f04f751e1 Disconnect websocket clients on error 2023-11-25 08:27:17 +00:00
ncois
643402c046 Merge branch 'mempool:master' into tooltip-overflow-bug 2023-11-24 13:28:42 +01:00
nymkappa
3103ef15e5 [about page] move CTA sponsors box into a sub component 2023-11-24 11:13:12 +09:00
ncois
f57436f511 Merge branch 'master' into tooltip-overflow-bug 2023-11-22 12:14:03 +01:00
ncois
1eb425897e Adjust the width of the incoming tx tooltip for 2h timeframe 2023-11-19 16:42:09 +01:00
ncois
9d0bfdfa88 Increase tooltip width in mempool graphs 2023-11-17 13:47:28 +01:00
hunicus
d630e7217a Make enterprise links not relative 2023-09-06 01:42:19 +09:00
78 changed files with 1841 additions and 688 deletions

View File

@@ -80,7 +80,13 @@ class ChannelsApi {
public async $searchChannelsById(search: string): Promise<any[]> {
try {
const searchStripped = search.replace(/[^0-9x]/g, '') + '%';
// restrict search to valid id/short_id prefix formats
let searchStripped = search.match(/[0-9]+[0-9x]*/)?.[0] || '';
if (!searchStripped.length) {
return [];
}
// add wildcard to search by prefix
searchStripped += '%';
const query = `SELECT id, short_id, capacity, status FROM channels WHERE id LIKE ? OR short_id LIKE ? LIMIT 10`;
const [rows]: any = await DB.query(query, [searchStripped, searchStripped]);
return rows;

View File

@@ -15,11 +15,12 @@ class FeeApi {
constructor() { }
defaultFee = Common.isLiquid() ? 0.1 : 1;
minimumIncrement = Common.isLiquid() ? 0.1 : 1;
public getRecommendedFee(): RecommendedFees {
const pBlocks = projectedBlocks.getMempoolBlocks();
const mPool = mempool.getMempoolInfo();
const minimumFee = Math.ceil(mPool.mempoolminfee * 100000);
const minimumFee = this.roundUpToNearest(mPool.mempoolminfee * 100000, this.minimumIncrement);
const defaultMinFee = Math.max(minimumFee, this.defaultFee);
if (!pBlocks.length) {
@@ -58,7 +59,11 @@ class FeeApi {
const multiplier = (pBlock.blockVSize - 500000) / 500000;
return Math.max(Math.round(useFee * multiplier), this.defaultFee);
}
return Math.ceil(useFee);
return this.roundUpToNearest(useFee, this.minimumIncrement);
}
private roundUpToNearest(value: number, nearest: number): number {
return Math.ceil(value / nearest) * nearest;
}
}

View File

@@ -9,7 +9,7 @@ import loadingIndicators from './loading-indicators';
import bitcoinClient from './bitcoin/bitcoin-client';
import bitcoinSecondClient from './bitcoin/bitcoin-second-client';
import rbfCache from './rbf-cache';
import accelerationApi, { Acceleration } from './services/acceleration';
import { Acceleration } from './services/acceleration';
import redisCache from './redis-cache';
class Mempool {
@@ -18,7 +18,7 @@ class Mempool {
private mempoolCache: { [txId: string]: MempoolTransactionExtended } = {};
private spendMap = new Map<string, MempoolTransactionExtended>();
private mempoolInfo: IBitcoinApi.MempoolInfo = { loaded: false, size: 0, bytes: 0, usage: 0, total_fee: 0,
maxmempool: 300000000, mempoolminfee: 0.00001000, minrelaytxfee: 0.00001000 };
maxmempool: 300000000, mempoolminfee: Common.isLiquid() ? 0.00000100 : 0.00001000, minrelaytxfee: Common.isLiquid() ? 0.00000100 : 0.00001000 };
private mempoolChangedCallback: ((newMempool: {[txId: string]: MempoolTransactionExtended; }, newTransactions: MempoolTransactionExtended[],
deletedTransactions: MempoolTransactionExtended[], accelerationDelta: string[]) => void) | undefined;
private $asyncMempoolChangedCallback: ((newMempool: {[txId: string]: MempoolTransactionExtended; }, mempoolSize: number, newTransactions: MempoolTransactionExtended[],
@@ -185,7 +185,7 @@ class Mempool {
return txTimes;
}
public async $updateMempool(transactions: string[], pollRate: number): Promise<void> {
public async $updateMempool(transactions: string[], accelerations: Acceleration[] | null, pollRate: number): Promise<void> {
logger.debug(`Updating mempool...`);
// warn if this run stalls the main loop for more than 2 minutes
@@ -330,7 +330,7 @@ class Mempool {
const newTransactionsStripped = newTransactions.map((tx) => Common.stripTransaction(tx));
this.latestTransactions = newTransactionsStripped.concat(this.latestTransactions).slice(0, 6);
const accelerationDelta = await this.$updateAccelerations();
const accelerationDelta = accelerations != null ? await this.$updateAccelerations(accelerations) : [];
if (accelerationDelta.length) {
hasChange = true;
}
@@ -370,14 +370,12 @@ class Mempool {
return this.accelerations;
}
public async $updateAccelerations(): Promise<string[]> {
public $updateAccelerations(newAccelerations: Acceleration[]): string[] {
if (!config.MEMPOOL_SERVICES.ACCELERATIONS) {
return [];
}
try {
const newAccelerations = await accelerationApi.$fetchAccelerations();
const changed: string[] = [];
const newAccelerationMap: { [txid: string]: Acceleration } = {};

View File

@@ -15,6 +15,13 @@ import bitcoinApi from '../bitcoin/bitcoin-api-factory';
import { IEsploraApi } from '../bitcoin/esplora-api.interface';
import database from '../../database';
interface DifficultyBlock {
timestamp: number,
height: number,
bits: number,
difficulty: number,
}
class Mining {
private blocksPriceIndexingRunning = false;
public lastHashrateIndexingDate: number | null = null;
@@ -421,6 +428,7 @@ class Mining {
indexedHeights[height] = true;
}
// gets {time, height, difficulty, bits} of blocks in ascending order of height
const blocks: any = await BlocksRepository.$getBlocksDifficulty();
const genesisBlock: IEsploraApi.Block = await bitcoinApi.$getBlock(await bitcoinApi.$getBlockHash(0));
let currentDifficulty = genesisBlock.difficulty;
@@ -436,41 +444,45 @@ class Mining {
});
}
const oldestConsecutiveBlock = await BlocksRepository.$getOldestConsecutiveBlock();
if (config.MEMPOOL.INDEXING_BLOCKS_AMOUNT !== -1) {
currentBits = oldestConsecutiveBlock.bits;
currentDifficulty = oldestConsecutiveBlock.difficulty;
if (!blocks?.length) {
// no blocks in database yet
return;
}
const oldestConsecutiveBlock = this.getOldestConsecutiveBlock(blocks);
currentBits = oldestConsecutiveBlock.bits;
currentDifficulty = oldestConsecutiveBlock.difficulty;
let totalBlockChecked = 0;
let timer = new Date().getTime() / 1000;
for (const block of blocks) {
// skip until the first block after the oldest consecutive block
if (block.height <= oldestConsecutiveBlock.height) {
continue;
}
// difficulty has changed between two consecutive blocks!
if (block.bits !== currentBits) {
if (indexedHeights[block.height] === true) { // Already indexed
if (block.height >= oldestConsecutiveBlock.height) {
currentDifficulty = block.difficulty;
currentBits = block.bits;
}
continue;
// skip if already indexed
if (indexedHeights[block.height] !== true) {
let adjustment = block.difficulty / currentDifficulty;
adjustment = Math.round(adjustment * 1000000) / 1000000; // Remove float point noise
await DifficultyAdjustmentsRepository.$saveAdjustments({
time: block.time,
height: block.height,
difficulty: block.difficulty,
adjustment: adjustment,
});
totalIndexed++;
}
let adjustment = block.difficulty / currentDifficulty;
adjustment = Math.round(adjustment * 1000000) / 1000000; // Remove float point noise
await DifficultyAdjustmentsRepository.$saveAdjustments({
time: block.time,
height: block.height,
difficulty: block.difficulty,
adjustment: adjustment,
});
totalIndexed++;
if (block.height >= oldestConsecutiveBlock.height) {
currentDifficulty = block.difficulty;
currentBits = block.bits;
}
}
// update the current difficulty
currentDifficulty = block.difficulty;
currentBits = block.bits;
}
totalBlockChecked++;
const elapsedSeconds = Math.max(1, Math.round((new Date().getTime() / 1000) - timer));
@@ -633,6 +645,17 @@ class Mining {
default: return 86400 * scale;
}
}
// Finds the oldest block in a consecutive chain back from the tip
// assumes `blocks` is sorted in ascending height order
private getOldestConsecutiveBlock(blocks: DifficultyBlock[]): DifficultyBlock {
for (let i = blocks.length - 1; i > 0; i--) {
if ((blocks[i].height - blocks[i - 1].height) > 1) {
return blocks[i];
}
}
return blocks[0];
}
}
export default new Mining();

View File

@@ -1,6 +1,7 @@
import { query } from '../../utils/axios-query';
import config from '../../config';
import logger from '../../logger';
import { BlockExtended, PoolTag } from '../../mempool.interfaces';
import axios from 'axios';
export interface Acceleration {
txid: string,
@@ -9,10 +10,15 @@ export interface Acceleration {
}
class AccelerationApi {
public async $fetchAccelerations(): Promise<Acceleration[]> {
public async $fetchAccelerations(): Promise<Acceleration[] | null> {
if (config.MEMPOOL_SERVICES.ACCELERATIONS) {
const response = await query(`${config.MEMPOOL_SERVICES.API}/accelerator/accelerations`);
return (response as Acceleration[]) || [];
try {
const response = await axios.get(`${config.MEMPOOL_SERVICES.API}/accelerator/accelerations`, { responseType: 'json', timeout: 10000 });
return response.data as Acceleration[];
} catch (e) {
logger.warn('Failed to fetch current accelerations from the mempool services backend: ' + (e instanceof Error ? e.message : e));
return null;
}
} else {
return [];
}

View File

@@ -94,9 +94,13 @@ class WebsocketHandler {
throw new Error('WebSocket.Server is not set');
}
this.wss.on('connection', (client: WebSocket) => {
this.wss.on('connection', (client: WebSocket, req) => {
this.numConnected++;
client.on('error', logger.info);
client['remoteAddress'] = req.headers['x-forwarded-for'] || req.socket?.remoteAddress || 'unknown';
client.on('error', (e) => {
logger.info(`websocket client error from ${client['remoteAddress']}: ` + (e instanceof Error ? e.message : e));
client.close();
});
client.on('close', () => {
this.numDisconnected++;
});
@@ -282,7 +286,8 @@ class WebsocketHandler {
client.send(serializedResponse);
}
} catch (e) {
logger.debug('Error parsing websocket message: ' + (e instanceof Error ? e.message : e));
logger.debug(`Error parsing websocket message from ${client['remoteAddress']}: ` + (e instanceof Error ? e.message : e));
client.close();
}
});
});

View File

@@ -43,6 +43,7 @@ import { AxiosError } from 'axios';
import v8 from 'v8';
import { formatBytes, getBytesUnit } from './utils/format';
import redisCache from './api/redis-cache';
import accelerationApi from './api/services/acceleration';
class Server {
private wss: WebSocket.Server | undefined;
@@ -205,10 +206,11 @@ class Server {
}
}
const newMempool = await bitcoinApi.$getRawMempool();
const newAccelerations = await accelerationApi.$fetchAccelerations();
const numHandledBlocks = await blocks.$updateBlocks();
const pollRate = config.MEMPOOL.POLL_RATE_MS * (indexer.indexerIsRunning() ? 10 : 1);
if (numHandledBlocks === 0) {
await memPool.$updateMempool(newMempool, pollRate);
await memPool.$updateMempool(newMempool, newAccelerations, pollRate);
}
indexer.$run();
priceUpdater.$run();

View File

@@ -541,7 +541,7 @@ class BlocksRepository {
*/
public async $getBlocksDifficulty(): Promise<object[]> {
try {
const [rows]: any[] = await DB.query(`SELECT UNIX_TIMESTAMP(blockTimestamp) as time, height, difficulty, bits FROM blocks`);
const [rows]: any[] = await DB.query(`SELECT UNIX_TIMESTAMP(blockTimestamp) as time, height, difficulty, bits FROM blocks ORDER BY height ASC`);
return rows;
} catch (e) {
logger.err('Cannot get blocks difficulty list from the db. Reason: ' + (e instanceof Error ? e.message : e));

File diff suppressed because it is too large Load Diff

View File

@@ -74,9 +74,9 @@
"@angular/platform-server": "^16.2.2",
"@angular/router": "^16.2.2",
"@fortawesome/angular-fontawesome": "~0.13.0",
"@fortawesome/fontawesome-common-types": "~6.4.0",
"@fortawesome/fontawesome-svg-core": "~6.4.0",
"@fortawesome/free-solid-svg-icons": "~6.4.0",
"@fortawesome/fontawesome-common-types": "~6.5.1",
"@fortawesome/fontawesome-svg-core": "~6.5.1",
"@fortawesome/free-solid-svg-icons": "~6.5.1",
"@mempool/mempool.js": "2.3.0",
"@ng-bootstrap/ng-bootstrap": "^15.1.0",
"@types/qrcode": "~1.5.0",
@@ -90,7 +90,7 @@
"ngx-infinite-scroll": "^16.0.0",
"qrcode": "1.5.1",
"rxjs": "~7.8.1",
"tinyify": "^4.0.0",
"tinyify": "^3.1.0",
"tlite": "^0.1.9",
"tslib": "~2.6.0",
"zone.js": "~0.13.1"

View File

@@ -225,7 +225,7 @@ const witnessSize = (vin: Vin) => vin.witness ? vin.witness.reduce((S, w) => S +
const scriptSigSize = (vin: Vin) => vin.scriptsig ? vin.scriptsig.length / 2 : 0;
// Power of ten wrapper
export function selectPowerOfTen(val: number): { divider: number, unit: string } {
export function selectPowerOfTen(val: number, multiplier = 1): { divider: number, unit: string } {
const powerOfTen = {
exa: Math.pow(10, 18),
peta: Math.pow(10, 15),
@@ -236,17 +236,17 @@ export function selectPowerOfTen(val: number): { divider: number, unit: string }
};
let selectedPowerOfTen: { divider: number, unit: string };
if (val < powerOfTen.kilo) {
if (val < powerOfTen.kilo * multiplier) {
selectedPowerOfTen = { divider: 1, unit: '' }; // no scaling
} else if (val < powerOfTen.mega) {
} else if (val < powerOfTen.mega * multiplier) {
selectedPowerOfTen = { divider: powerOfTen.kilo, unit: 'k' };
} else if (val < powerOfTen.giga) {
} else if (val < powerOfTen.giga * multiplier) {
selectedPowerOfTen = { divider: powerOfTen.mega, unit: 'M' };
} else if (val < powerOfTen.tera) {
} else if (val < powerOfTen.tera * multiplier) {
selectedPowerOfTen = { divider: powerOfTen.giga, unit: 'G' };
} else if (val < powerOfTen.peta) {
} else if (val < powerOfTen.peta * multiplier) {
selectedPowerOfTen = { divider: powerOfTen.tera, unit: 'T' };
} else if (val < powerOfTen.exa) {
} else if (val < powerOfTen.exa * multiplier) {
selectedPowerOfTen = { divider: powerOfTen.peta, unit: 'P' };
} else {
selectedPowerOfTen = { divider: powerOfTen.exa, unit: 'E' };

View File

@@ -0,0 +1,16 @@
<div id="become-sponsor-container">
<div class="become-sponsor community">
<p style="font-weight: 700; font-size: 18px;">If you're an individual...</p>
<a href="https://mempool.space/sponsor" class="btn" style="background-color: rgba(152, 88, 255, 0.75); box-shadow: 0px 0px 50px 5px rgba(152, 88, 255, 0.75)" i18n="about.community-sponsor-button" (click)="onSponsorClick($event)">Become a Community Sponsor</a>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Exclusive swag</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Your avatar on the About page</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> And more coming soon :)</p>
</div>
<div class="become-sponsor enterprise">
<p style="font-weight: 700; font-size: 18px;">If you're a business...</p>
<a href="https://mempool.space/enterprise" class="btn" style="background-color: rgba(152, 88, 255, 0.75); box-shadow: 0px 0px 50px 5px rgba(152, 88, 255, 0.75)" i18n="about.enterprise-sponsor-button" (click)="onEnterpriseClick($event)">Become an Enterprise Sponsor</a>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Increased API limits</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Co-branded instance</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> 99% service-level agreement</p>
</div>
</div>

View File

@@ -0,0 +1,45 @@
#become-sponsor-container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
gap: 20px;
margin: 68px auto;
}
.become-sponsor {
background-color: #1d1f31;
border-radius: 16px;
padding: 12px 20px;
width: 400px;
padding: 40px 20px;
}
.become-sponsor a {
margin-top: 10px;
}
#become-sponsor-container .btn {
margin-bottom: 24px;
}
#become-sponsor-container .ng-fa-icon {
color: #2ecc71;
margin-right: 5px;
}
#become-sponsor-container .sponsor-feature {
text-align: left;
width: 250px;
margin: 12px auto;
white-space: nowrap;
}
@media (max-width: 992px) {
#become-sponsor-container {
flex-wrap: wrap;
}
}

View File

@@ -0,0 +1,22 @@
import { Component } from '@angular/core';
import { EnterpriseService } from '../../services/enterprise.service';
@Component({
selector: 'app-about-sponsors',
templateUrl: './about-sponsors.component.html',
styleUrls: ['./about-sponsors.component.scss'],
})
export class AboutSponsorsComponent {
constructor(private enterpriseService: EnterpriseService) {
}
onSponsorClick(e): boolean {
this.enterpriseService.goal(5);
return true;
}
onEnterpriseClick(e): boolean {
this.enterpriseService.goal(6);
return true;
}
}

View File

@@ -33,22 +33,7 @@
</video>
<ng-container *ngIf="officialMempoolSpace">
<div id="become-sponsor-container">
<div class="become-sponsor community">
<p style="font-weight: 700; font-size: 18px;">If you're an individual...</p>
<a href="https://mempool.space/sponsor" class="btn" style="background-color: rgba(152, 88, 255, 0.75); box-shadow: 0px 0px 50px 5px rgba(152, 88, 255, 0.75)" i18n="about.community-sponsor-button">Become a Community Sponsor</a>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Exclusive swag</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Your avatar on the About page</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> And more coming soon :)</p>
</div>
<div class="become-sponsor enterprise">
<p style="font-weight: 700; font-size: 18px;">If you're a business...</p>
<a href="https://mempool.space/enterprise" class="btn" style="background-color: rgba(152, 88, 255, 0.75); box-shadow: 0px 0px 50px 5px rgba(152, 88, 255, 0.75)" i18n="about.enterprise-sponsor-button">Become an Enterprise Sponsor</a>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Increased API limits</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> Co-branded instance</p>
<p class="sponsor-feature"><fa-icon [icon]="['fas', 'check']"></fa-icon> 99% service-level agreement</p>
</div>
</div>
<app-about-sponsors></app-about-sponsors>
</ng-container>
<div class="enterprise-sponsor" id="enterprise-sponsors">
@@ -197,7 +182,7 @@
</div>
<ng-container *ngIf="officialMempoolSpace">
<div *ngIf="profiles$ | async as profiles" id="community-sponsors">
<div *ngIf="profiles$ | async as profiles" id="community-sponsors-anchor">
<div class="community-sponsor" style="margin-bottom: 68px" *ngIf="profiles.whales.length > 0">
<h3 i18n="about.sponsors.withHeart">Whale Sponsors</h3>
<div class="wrapper">

View File

@@ -246,49 +246,3 @@
width: 64px;
height: 64px;
}
#become-sponsor-container {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: center;
align-items: center;
gap: 20px;
margin: 68px auto;
}
.become-sponsor {
background-color: #1d1f31;
border-radius: 16px;
padding: 12px 20px;
width: 400px;
padding: 40px 20px;
}
.become-sponsor a {
margin-top: 10px;
}
#become-sponsor-container .btn {
margin-bottom: 24px;
}
#become-sponsor-container .ng-fa-icon {
color: #2ecc71;
margin-right: 5px;
}
#become-sponsor-container .sponsor-feature {
text-align: left;
width: 250px;
margin: 12px auto;
white-space: nowrap;
}
@media (max-width: 992px) {
#become-sponsor-container {
flex-wrap: wrap;
}
}

View File

@@ -9,6 +9,7 @@ import { Router, ActivatedRoute } from '@angular/router';
import { map, share, tap } from 'rxjs/operators';
import { ITranslators } from '../../interfaces/node-api.interface';
import { DOCUMENT } from '@angular/common';
import { EnterpriseService } from '../../services/enterprise.service';
@Component({
selector: 'app-about',
@@ -33,6 +34,7 @@ export class AboutComponent implements OnInit {
private websocketService: WebsocketService,
private seoService: SeoService,
public stateService: StateService,
private enterpriseService: EnterpriseService,
private apiService: ApiService,
private router: Router,
private route: ActivatedRoute,
@@ -47,8 +49,13 @@ export class AboutComponent implements OnInit {
this.websocketService.want(['blocks']);
this.profiles$ = this.apiService.getAboutPageProfiles$().pipe(
tap(() => {
this.goToAnchor()
tap((profiles: any) => {
const scrollToSponsors = this.route.snapshot.fragment === 'community-sponsors';
if (scrollToSponsors && !profiles?.whales?.length && !profiles?.chads?.length) {
return;
} else {
this.goToAnchor(scrollToSponsors)
}
}),
share(),
)
@@ -83,11 +90,19 @@ export class AboutComponent implements OnInit {
this.goToAnchor();
}
goToAnchor() {
goToAnchor(scrollToSponsor = false) {
if (!scrollToSponsor) {
return;
}
setTimeout(() => {
if (this.route.snapshot.fragment) {
if (this.document.getElementById(this.route.snapshot.fragment)) {
this.document.getElementById(this.route.snapshot.fragment).scrollIntoView({behavior: 'smooth'});
const el = scrollToSponsor ? this.document.getElementById('community-sponsors-anchor') : this.document.getElementById(this.route.snapshot.fragment);
if (el) {
if (scrollToSponsor) {
el.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'center'});
} else {
el.scrollIntoView({behavior: 'smooth'});
}
}
}
}, 1);
@@ -108,4 +123,14 @@ export class AboutComponent implements OnInit {
unmutePromoVideo(): void {
this.promoVideo.nativeElement.muted = false;
}
onSponsorClick(e): boolean {
this.enterpriseService.goal(5);
return true;
}
onEnterpriseClick(e): boolean {
this.enterpriseService.goal(6);
return true;
}
}

View File

@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Routes, RouterModule } from '@angular/router';
import { AboutComponent } from './about.component';
import { AboutSponsorsComponent } from './about-sponsors.component';
import { SharedModule } from '../../shared/shared.module';
const routes: Routes = [
@@ -29,6 +30,10 @@ export class AboutRoutingModule { }
],
declarations: [
AboutComponent,
AboutSponsorsComponent,
],
exports: [
AboutSponsorsComponent,
]
})
export class AboutModule { }

View File

@@ -27,6 +27,11 @@
<ng-container *ngIf="estimate">
<div [class]="{estimateDisabled: error}">
<div *ngIf="user && !estimate.hasAccess">
<div class="alert alert-mempool">You are currently on the waitlist</div>
</div>
<h5>Your transaction</h5>
<div class="row">
<div class="col">
@@ -230,7 +235,7 @@
<div class="row mb-3" *ngIf="isLoggedIn()">
<div class="col">
<div class="d-flex justify-content-end">
<div class="d-flex justify-content-end" *ngIf="user && estimate.hasAccess">
<button class="btn btn-sm btn-primary btn-success" style="width: 150px" (click)="accelerate()">Accelerate</button>
</div>
</div>

View File

@@ -56,6 +56,7 @@ export class AcceleratePreviewComponent implements OnInit, OnDestroy, OnChanges
userBid = 0;
selectFeeRateIndex = 1;
isMobile: boolean = window.innerWidth <= 767.98;
user: any = undefined;
maxRateOptions: RateOption[] = [];
@@ -78,6 +79,8 @@ export class AcceleratePreviewComponent implements OnInit, OnDestroy, OnChanges
}
ngOnInit() {
this.user = this.storageService.getAuth()?.user ?? null;
this.estimateSubscription = this.apiService.estimate$(this.tx.txid).pipe(
tap((response) => {
if (response.status === 204) {
@@ -93,7 +96,7 @@ export class AcceleratePreviewComponent implements OnInit, OnDestroy, OnChanges
this.estimateSubscription.unsubscribe();
}
if (this.estimate.userBalance <= 0) {
if (this.estimate.hasAccess === true && this.estimate.userBalance <= 0) {
if (this.isLoggedIn()) {
this.error = `not_enough_balance`;
this.scrollToPreviewWithTimeout('mempoolError', 'center');

View File

@@ -69,7 +69,7 @@ export class AddressPreviewComponent implements OnInit, OnDestroy {
this.addressString = this.addressString.toLowerCase();
}
this.seoService.setTitle($localize`:@@address.component.browser-title:Address: ${this.addressString}:INTERPOLATION:`);
this.seoService.setDescription($localize`:@@meta.description.bitcoin.address:See mempool transactions, confirmed transactions, balance, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'}${seoDescriptionNetwork(this.stateService.network)} address ${this.addressString}:INTERPOLATION:.`);
this.seoService.setDescription($localize`:@@meta.description.bitcoin.address:See mempool transactions, confirmed transactions, balance, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'} ${seoDescriptionNetwork(this.stateService.network)} address ${this.addressString}:INTERPOLATION:.`);
return (this.addressString.match(/04[a-fA-F0-9]{128}|(02|03)[a-fA-F0-9]{64}/)
? this.electrsApiService.getPubKeyAddress$(this.addressString)

View File

@@ -55,7 +55,7 @@
<td *ngSwitchCase="'added'"><span class="badge badge-warning" i18n="transaction.audit.added">Added</span></td>
<td *ngSwitchCase="'selected'"><span class="badge badge-warning" i18n="transaction.audit.marginal">Marginal fee rate</span></td>
<td *ngSwitchCase="'rbf'"><span class="badge badge-warning" i18n="transaction.audit.conflicting">Conflicting</span></td>
<td *ngSwitchCase="'accelerated'"><span class="badge badge-success" i18n="transaction.audit.accelerated">Accelerated</span></td>
<td *ngSwitchCase="'accelerated'"><span class="badge badge-accelerated" i18n="transaction.audit.accelerated">Accelerated</span></td>
</ng-container>
</tr>
</tbody>

View File

@@ -19,4 +19,17 @@
.td-width {
padding-right: 10px;
}
.badge.badge-accelerated {
background-color: #653b9c;
box-shadow: #ad7de57f 0px 0px 12px -2px;
color: white;
animation: acceleratePulse 1s infinite;
}
@keyframes acceleratePulse {
0% { background-color: #653b9c; box-shadow: #ad7de57f 0px 0px 12px -2px; }
50% { background-color: #8457bb; box-shadow: #ad7de5 0px 0px 18px -2px;}
100% { background-color: #653b9c; box-shadow: #ad7de57f 0px 0px 12px -2px; }
}

View File

@@ -219,13 +219,13 @@
<div class="box" *ngIf="!error && webGlEnabled && showAudit">
<div class="nav nav-tabs" *ngIf="isMobile && showAudit">
<a class="nav-link" [class.active]="mode === 'projected'"
fragment="projected" (click)="changeMode('projected')"><ng-container i18n="block.expected">Expected</ng-container>&nbsp;&nbsp;<span class="badge badge-pill badge-warning" i18n="beta">beta</span></a>
fragment="projected" (click)="changeMode('projected')"><ng-container i18n="block.expected">Expected</ng-container></a>
<a class="nav-link" [class.active]="mode === 'actual'" i18n="block.actual"
fragment="actual" (click)="changeMode('actual')">Actual</a>
</div>
<div class="row">
<div class="col-sm">
<h3 class="block-subtitle" *ngIf="!isMobile"><ng-container i18n="block.expected-block">Expected Block</ng-container> <span class="badge badge-pill badge-warning beta" i18n="beta">beta</span></h3>
<h3 class="block-subtitle" *ngIf="!isMobile"><ng-container i18n="block.expected-block">Expected Block</ng-container></h3>
<div class="block-graph-wrapper">
<app-block-overview-graph #blockGraphProjected [isLoading]="isLoadingOverview" [resolution]="86"
[blockLimit]="stateService.blockVSize" [orientation]="'top'" [flip]="false" [mirrorTxid]="hoverTx" [auditHighlighting]="showAudit"

View File

@@ -249,10 +249,8 @@ export class HashrateChartComponent implements OnInit {
for (const tick of ticks) {
if (tick.seriesIndex === 0) { // Hashrate
let hashrate = tick.data[1];
if (this.isMobile()) {
hashratePowerOfTen = selectPowerOfTen(tick.data[1]);
hashrate = Math.round(tick.data[1] / hashratePowerOfTen.divider);
}
hashratePowerOfTen = selectPowerOfTen(tick.data[1], 10);
hashrate = tick.data[1] / hashratePowerOfTen.divider;
hashrateString = `${tick.marker} ${tick.seriesName}: ${formatNumber(hashrate, this.locale, '1.0-0')} ${hashratePowerOfTen.unit}H/s<br>`;
} else if (tick.seriesIndex === 1) { // Difficulty
let difficultyPowerOfTen = hashratePowerOfTen;
@@ -260,18 +258,14 @@ export class HashrateChartComponent implements OnInit {
if (difficulty === null) {
difficultyString = `${tick.marker} ${tick.seriesName}: No data<br>`;
} else {
if (this.isMobile()) {
difficultyPowerOfTen = selectPowerOfTen(tick.data[1]);
difficulty = Math.round(tick.data[1] / difficultyPowerOfTen.divider);
}
difficultyPowerOfTen = selectPowerOfTen(tick.data[1]);
difficulty = tick.data[1] / difficultyPowerOfTen.divider;
difficultyString = `${tick.marker} ${tick.seriesName}: ${formatNumber(difficulty, this.locale, '1.2-2')} ${difficultyPowerOfTen.unit}<br>`;
}
} else if (tick.seriesIndex === 2) { // Hashrate MA
let hashrate = tick.data[1];
if (this.isMobile()) {
hashratePowerOfTen = selectPowerOfTen(tick.data[1]);
hashrate = Math.round(tick.data[1] / hashratePowerOfTen.divider);
}
hashratePowerOfTen = selectPowerOfTen(tick.data[1], 10);
hashrate = tick.data[1] / hashratePowerOfTen.divider;
hashrateStringMA = `${tick.marker} ${tick.seriesName}: ${formatNumber(hashrate, this.locale, '1.0-0')} ${hashratePowerOfTen.unit}H/s`;
}
}

View File

@@ -209,8 +209,7 @@ export class IncomingTransactionsGraphComponent implements OnInit, OnChanges, On
obj[['left', 'right'][+(pos[0] < size.viewSize[0] / 2)]] = 80;
return obj;
},
extraCssText: `width: ${(['2h', '24h'].includes(this.windowPreference) || this.template === 'widget') ? '125px' : '135px'};
background: transparent;
extraCssText: `background: transparent;
border: none;
box-shadow: none;`,
axisPointer: {
@@ -233,7 +232,8 @@ export class IncomingTransactionsGraphComponent implements OnInit, OnChanges, On
}
}
});
return `<div class="tx-wrapper-tooltip-chart ${(this.template === 'advanced') ? 'tx-wrapper-tooltip-chart-advanced' : ''}">${itemFormatted}</div>`;
return `<div class="tx-wrapper-tooltip-chart ${(this.template === 'advanced') ? 'tx-wrapper-tooltip-chart-advanced' : ''}"
style="width: ${(this.windowPreference === '2h' || this.template === 'widget') ? '125px' : '215px'}">${itemFormatted}</div>`;
}
},
xAxis: [

View File

@@ -163,10 +163,8 @@ export class PoolComponent implements OnInit {
let hashratePowerOfTen: any = selectPowerOfTen(1);
let hashrate = ticks[0].data[1];
if (this.isMobile()) {
hashratePowerOfTen = selectPowerOfTen(ticks[0].data[1]);
hashrate = Math.round(ticks[0].data[1] / hashratePowerOfTen.divider);
}
hashratePowerOfTen = selectPowerOfTen(ticks[0].data[1], 10);
hashrate = ticks[0].data[1] / hashratePowerOfTen.divider;
return `
<b style="color: white; margin-left: 18px">${ticks[0].axisValueLabel}</b><br>

View File

@@ -40,6 +40,8 @@ export class SearchFormComponent implements OnInit {
regexBlockhash = /^[0]{8}[a-fA-F0-9]{56}$/;
regexTransaction = /^([a-fA-F0-9]{64})(:\d+)?$/;
regexBlockheight = /^[0-9]{1,9}$/;
regexDate = /^(?:\d{4}[-/]\d{1,2}[-/]\d{1,2}(?: \d{1,2}:\d{2})?)$/;
regexUnixTimestamp = /^\d{10}$/;
focus$ = new Subject<string>();
click$ = new Subject<string>();
@@ -173,6 +175,8 @@ export class SearchFormComponent implements OnInit {
const lightningResults = result[1];
const matchesBlockHeight = this.regexBlockheight.test(searchText);
const matchesDateTime = this.regexDate.test(searchText) && new Date(searchText).toString() !== 'Invalid Date';
const matchesUnixTimestamp = this.regexUnixTimestamp.test(searchText);
const matchesTxId = this.regexTransaction.test(searchText) && !this.regexBlockhash.test(searchText);
const matchesBlockHash = this.regexBlockhash.test(searchText);
const matchesAddress = !matchesTxId && this.regexAddress.test(searchText);
@@ -181,10 +185,16 @@ export class SearchFormComponent implements OnInit {
searchText = 'B' + searchText;
}
if (matchesDateTime && searchText.indexOf('/') !== -1) {
searchText = searchText.replace(/\//g, '-');
}
return {
searchText: searchText,
hashQuickMatch: +(matchesBlockHeight || matchesBlockHash || matchesTxId || matchesAddress),
hashQuickMatch: +(matchesBlockHeight || matchesBlockHash || matchesTxId || matchesAddress || matchesUnixTimestamp || matchesDateTime),
blockHeight: matchesBlockHeight,
dateTime: matchesDateTime,
unixTimestamp: matchesUnixTimestamp,
txId: matchesTxId,
blockHash: matchesBlockHash,
address: matchesAddress,
@@ -243,6 +253,13 @@ export class SearchFormComponent implements OnInit {
} else {
this.navigate('/tx/', matches[0]);
}
} else if (this.regexDate.test(searchText) || this.regexUnixTimestamp.test(searchText)) {
let timestamp: number;
this.regexDate.test(searchText) ? timestamp = Math.floor(new Date(searchText).getTime() / 1000) : timestamp = searchText;
this.apiService.getBlockDataFromTimestamp$(timestamp).subscribe(
(data) => { this.navigate('/block/', data.hash); },
(error) => { console.log(error); this.isSearching = false; }
);
} else {
this.searchResults.searchButtonClick();
this.isSearching = false;

View File

@@ -5,6 +5,18 @@
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container>
</button>
</ng-template>
<ng-template [ngIf]="results.dateTime">
<div class="card-title" i18n="search.bitcoin-block-date">Date</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container>
</button>
</ng-template>
<ng-template [ngIf]="results.unixTimestamp">
<div class="card-title" i18n="search.bitcoin-block-timestamp">Timestamp</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">
<ng-container *ngTemplateOutlet="goTo; context: { $implicit: results.searchText }"></ng-container>
</button>
</ng-template>
<ng-template [ngIf]="results.txId">
<div class="card-title" i18n="search.bitcoin-transaction">Bitcoin Transaction</div>
<button (click)="clickItem(0)" [class.active]="0 === activeIdx" type="button" role="option" class="dropdown-item">

View File

@@ -88,7 +88,7 @@ export class TransactionPreviewComponent implements OnInit, OnDestroy {
this.seoService.setTitle(
$localize`:@@bisq.transaction.browser-title:Transaction: ${this.txId}:INTERPOLATION:`
);
this.seoService.setDescription($localize`:@@meta.description.bitcoin.transaction:Get real-time status, addresses, fees, script info, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'}${seoDescriptionNetwork(this.stateService.network)} transaction with txid {txid}.`);
this.seoService.setDescription($localize`:@@meta.description.bitcoin.transaction:Get real-time status, addresses, fees, script info, and more for ${this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'}${seoDescriptionNetwork(this.stateService.network)} transaction with txid ${this.txId}.`);
this.resetTransaction();
return merge(
of(true),

View File

@@ -83,9 +83,13 @@
<!-- Accelerator -->
<ng-container *ngIf="!tx?.status?.confirmed && showAccelerationSummary">
<div class="title mt-3">
<br>
<div class="title float-left">
<h2>Accelerate</h2>
</div>
<button type="button" class="btn btn-outline-info accelerator-toggle btn-sm float-right" (click)="showAccelerationSummary = false" i18n="hide-accelerator">Hide accelerator</button>
<div class="clearfix"></div>
<div class="box">
<app-accelerate-preview [tx]="tx" [scrollEvent]="scrollIntoAccelPreview"></app-accelerate-preview>
</div>
@@ -508,18 +512,24 @@
<app-fee-rate [fee]="tx.feePerVsize"></app-fee-rate>
<ng-template [ngIf]="tx?.status?.confirmed">
&nbsp;
<app-tx-fee-rating *ngIf="tx.fee && !hasEffectiveFeeRate" [tx]="tx"></app-tx-fee-rating>
<app-tx-fee-rating *ngIf="tx.fee && !hasEffectiveFeeRate && !accelerationInfo" [tx]="tx"></app-tx-fee-rating>
</ng-template>
</td>
</tr>
<tr *ngIf="cpfpInfo && hasEffectiveFeeRate">
<td *ngIf="tx.acceleration" i18n="transaction.accelerated-fee-rate|Accelerated transaction fee rate">Accelerated fee rate</td>
<td *ngIf="!tx.acceleration" i18n="transaction.effective-fee-rate|Effective transaction fee rate">Effective fee rate</td>
<tr *ngIf="(cpfpInfo && hasEffectiveFeeRate) || accelerationInfo">
<td *ngIf="tx.acceleration || accelerationInfo" i18n="transaction.accelerated-fee-rate|Accelerated transaction fee rate">Accelerated fee rate</td>
<td *ngIf="!(tx.acceleration || accelerationInfo)" i18n="transaction.effective-fee-rate|Effective transaction fee rate">Effective fee rate</td>
<td>
<div class="effective-fee-container">
<app-fee-rate [fee]="tx.effectiveFeePerVsize"></app-fee-rate>
<ng-template [ngIf]="tx?.status?.confirmed">
<app-tx-fee-rating class="ml-2 mr-2" *ngIf="tx.fee || tx.effectiveFeePerVsize" [tx]="tx"></app-tx-fee-rating>
<app-fee-rate *ngIf="accelerationInfo" [fee]="accelerationInfo.actualFeeDelta" [weight]="accelerationInfo.effectiveVsize * 4"></app-fee-rate>
<app-fee-rate *ngIf="!accelerationInfo" [fee]="tx.effectiveFeePerVsize"></app-fee-rate>
<ng-template [ngIf]="tx?.status?.confirmed || tx.acceleration || accelerationInfo">
<app-tx-fee-rating *ngIf="!(tx.acceleration || accelerationInfo) && (tx.fee || tx.effectiveFeePerVsize)" class="ml-2 mr-2 effective-fee-rating" [tx]="tx"></app-tx-fee-rating>
<ng-container *ngIf="accelerationInfo || tx.acceleration">
&nbsp;
<span class="badge badge-accelerated" i18n="transaction.audit.accelerated">Accelerated</span>
</ng-container>
</ng-template>
</div>
<button *ngIf="cpfpInfo.bestDescendant || cpfpInfo.descendants?.length || cpfpInfo.ancestors?.length" type="button" class="btn btn-outline-info btn-sm btn-small-height float-right" (click)="showCpfpDetails = !showCpfpDetails">CPFP <fa-icon [icon]="['fas', 'info-circle']" [fixedWidth]="true"></fa-icon></button>

View File

@@ -60,6 +60,11 @@
top: -1px;
}
.badge.badge-accelerated {
background-color: #653b9c;
color: white;
}
.btn-small-height {
line-height: 1;
}
@@ -152,6 +157,16 @@
@media (min-width: 768px){
display: inline-block;
}
@media (max-width: 425px){
display: flex;
flex-direction: column;
}
}
.effective-fee-rating {
@media (max-width: 767px){
margin-right: 0px !important;
}
}
.title {
@@ -169,7 +184,7 @@
}
}
.details-button, .flow-toggle {
.details-button, .flow-toggle, .accelerator-toggle {
margin-top: -5px;
margin-left: 10px;
@media (min-width: 768px){

View File

@@ -21,7 +21,7 @@ import { ApiService } from '../../services/api.service';
import { SeoService } from '../../services/seo.service';
import { StorageService } from '../../services/storage.service';
import { seoDescriptionNetwork } from '../../shared/common.utils';
import { BlockExtended, CpfpInfo, RbfTree, MempoolPosition, DifficultyAdjustment } from '../../interfaces/node-api.interface';
import { BlockExtended, CpfpInfo, RbfTree, MempoolPosition, DifficultyAdjustment, Acceleration } from '../../interfaces/node-api.interface';
import { LiquidUnblinding } from './liquid-ublinding';
import { RelativeUrlPipe } from '../../shared/pipes/relative-url/relative-url.pipe';
import { Price, PriceService } from '../../services/price.service';
@@ -49,6 +49,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
fetchCpfpSubscription: Subscription;
fetchRbfSubscription: Subscription;
fetchCachedTxSubscription: Subscription;
fetchAccelerationSubscription: Subscription;
txReplacedSubscription: Subscription;
txRbfInfoSubscription: Subscription;
mempoolPositionSubscription: Subscription;
@@ -62,12 +63,14 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
rbfReplaces: string[];
rbfInfo: RbfTree;
cpfpInfo: CpfpInfo | null;
accelerationInfo: Acceleration | null = null;
sigops: number | null;
adjustedVsize: number | null;
showCpfpDetails = false;
fetchCpfp$ = new Subject<string>();
fetchRbfHistory$ = new Subject<string>();
fetchCachedTx$ = new Subject<string>();
fetchAcceleration$ = new Subject<string>();
isCached: boolean = false;
now = Date.now();
da$: Observable<DifficultyAdjustment>;
@@ -238,6 +241,25 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
}
});
this.fetchAccelerationSubscription = this.fetchAcceleration$.pipe(
tap(() => {
this.accelerationInfo = null;
}),
switchMap((blockHash: string) => {
return this.apiService.getAccelerationHistory$({ blockHash });
}),
catchError(() => {
return of(null);
})
).subscribe((accelerationHistory) => {
for (const acceleration of accelerationHistory) {
if (acceleration.txid === this.txId && (acceleration.status === 'completed' || acceleration.status === 'mined') && acceleration.feePaid > 0) {
acceleration.actualFeeDelta = Math.max(acceleration.effectiveFee, acceleration.effectiveFee + acceleration.feePaid - acceleration.baseFee - acceleration.vsizeFee);
this.accelerationInfo = acceleration;
}
}
});
this.mempoolPositionSubscription = this.stateService.mempoolTxPosition$.subscribe(txPosition => {
this.now = Date.now();
if (txPosition && txPosition.txid === this.txId && txPosition.position) {
@@ -365,6 +387,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
this.getTransactionTime();
}
} else {
this.fetchAcceleration$.next(tx.status.block_hash);
this.transactionTime = 0;
}
@@ -417,6 +440,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
};
this.stateService.markBlock$.next({ blockHeight: block.height });
this.audioService.playSound('magic');
this.fetchAcceleration$.next(block.id);
}
});
@@ -585,6 +609,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
this.rbfInfo = null;
this.rbfReplaces = [];
this.showCpfpDetails = false;
this.accelerationInfo = null;
this.txInBlockIndex = null;
this.mempoolPosition = null;
document.body.scrollTo(0, 0);
@@ -664,6 +689,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy {
this.fetchCpfpSubscription.unsubscribe();
this.fetchRbfSubscription.unsubscribe();
this.fetchCachedTxSubscription.unsubscribe();
this.fetchAccelerationSubscription.unsubscribe();
this.txReplacedSubscription.unsubscribe();
this.txRbfInfoSubscription.unsubscribe();
this.queryParamsSubscription.unsubscribe();

View File

@@ -2922,7 +2922,7 @@ export const restApiDocsData = [
fragment: "get-blocks-bulk",
title: "GET Blocks (Bulk)",
description: {
default: "<p>Returns details on the range of blocks between <code>:minHeight</code> and <code>:maxHeight</code>, inclusive, up to 10 blocks. If <code>:maxHeight</code> is not specified, it defaults to the current tip.</p><p>To return data for more than 10 blocks, consider becoming an <a href='/enterprise'>enterprise sponsor</a>.</p>"
default: "<p>Returns details on the range of blocks between <code>:minHeight</code> and <code>:maxHeight</code>, inclusive, up to 10 blocks. If <code>:maxHeight</code> is not specified, it defaults to the current tip.</p><p>To return data for more than 10 blocks, consider becoming an <a href='https://mempool.space/enterprise'>enterprise sponsor</a>.</p>"
},
urlString: "/v1/blocks-bulk/:minHeight[/:maxHeight]",
showConditions: bitcoinNetworks,
@@ -8775,6 +8775,83 @@ export const faqData = [
fragment: "what-is-svb",
title: "What is sat/vB?",
},
{
type: "category",
category: "accelerator",
fragment: "mempool-accelerator",
title: "Mempool Accelerator™",
showConditions: bitcoinNetworks
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "what-is-mempool-accelerator",
title: "What is Mempool Accelerator™?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "how-does-mempool-accelerator-work",
title: "How does Mempool Accelerator™ work?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "join-accelerator-waitlist",
title: "How can I join the Waitlist for the Mempool Accelerator™?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "who-has-access-to-mempool-accelerator",
title: "Who has access to Mempool Accelerator™?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "account-requirement",
title: "Why is an account required for Mempool Accelerator™?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "mempool-accelerator-balance",
title: "How do I deposit into Mempool Accelerator™?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "how-to-request-an-acceleration",
title: "How do I request an acceleration?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "cancelling-an-acceleration",
title: "How do I cancel an acceleration?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "mempool-accelerator-improves-transparency",
title: "Does this break fee estimation algorithms?",
},
{
type: "endpoint",
category: "accelerator",
showConditions: bitcoinNetworks,
fragment: "will-mining-pools-underpay-miners",
title: "Will mining pools underpay miners?",
},
{
type: "category",
category: "help",

View File

@@ -40,7 +40,7 @@
<div class="doc-content">
<p class="doc-welcome-note">Below is a reference for the {{ network.val === '' ? 'Bitcoin' : network.val.charAt(0).toUpperCase() + network.val.slice(1) }} <ng-container i18n="api-docs.title">REST API service</ng-container>.</p>
<p class="doc-welcome-note api-note" *ngIf="officialMempoolInstance">Note that we enforce rate limits. If you exceed these limits, you will get an HTTP 429 error. If you repeatedly exceed the limits, you may be banned from accessing the service altogether. Consider an <a href="/enterprise">enterprise sponsorship</a> if you need higher API limits.</p>
<p class="doc-welcome-note api-note" *ngIf="officialMempoolInstance">Note that we enforce rate limits. If you exceed these limits, you will get an HTTP 429 error. If you repeatedly exceed the limits, you may be banned from accessing the service altogether. Consider an <a href="https://mempool.space/enterprise">enterprise sponsorship</a> if you need higher API limits.</p>
<div class="doc-item-container" *ngFor="let item of restDocs">
<h3 *ngIf="( item.type === 'category' ) && ( item.showConditions.indexOf(network.val) > -1 )">{{ item.title }}</h3>
@@ -123,7 +123,7 @@
<p>{{electrsPort}}</p>
<p class="subtitle">SSL</p>
<p>Enabled</p>
<p class="note" *ngIf="network.val !== 'signet'">Electrum RPC interface for Bitcoin Signet is <a href="/signet/docs/api/electrs">publicly available</a>. Electrum RPC interface for all other networks is available to <a href='/enterprise'>sponsors</a> only—whitelisting is required.</p>
<p class="note" *ngIf="network.val !== 'signet'">Electrum RPC interface for Bitcoin Signet is <a href="/signet/docs/api/electrs">publicly available</a>. Electrum RPC interface for all other networks is available to <a href='https://mempool.space/enterprise'>sponsors</a> only—whitelisting is required.</p>
</div>
</div>
</div>
@@ -180,15 +180,37 @@
</ng-template>
<ng-template type="why-is-transaction-stuck-in-mempool">
<p>If it's been a while and your transaction hasn't confirmed, your transaction is probably using a lower feerate relative to other transactions currently in the mempool. Depending on how you made your transaction, there may be <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="how-to-get-transaction-confirmed-quickly">ways to accelerate the process</a>.</p><p>There's no need to panic—a Bitcoin transaction will always either confirm completely (or not at all) at some point. As long as you have your transaction's ID, you can always see where your funds are.</p><p style='font-weight:700'>This site only provides data about the Bitcoin network—it cannot help you get your transaction confirmed quicker.</p>
<p>If it's been a while and your transaction hasn't confirmed, your transaction is probably using a lower feerate relative to other transactions currently in the mempool.</p>
<p style='font-weight:700'> You can accelerate your transaction with <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="what-is-mempool-accelerator">Mempool Accelerator™</a></p>
<p>Depending on how you made your transaction, there may be <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="how-to-get-transaction-confirmed-quickly">other ways</a> to increase the fee.</p>
<p>There's no need to panic—a Bitcoin transaction will always either confirm completely (or not at all) at some point. As long as you have your transaction's ID, you can always see where your funds are.</p>
</ng-template>
<ng-template type="how-to-get-transaction-confirmed-quickly">
<p>To get your transaction confirmed quicker, you will need to increase its effective feerate.</p><p>If your transaction was created with RBF enabled, your stuck transaction can simply be replaced with a new one that has a higher fee.</p><p>Otherwise, if you control any of the stuck transaction's outputs, you can use CPFP to increase your stuck transaction's effective feerate.</p><p>If you are not sure how to do RBF or CPFP, work with the tool you used to make the transaction (wallet software, exchange company, etc). This website only provides data about the Bitcoin network, so there is nothing it can do to help you get your transaction confirmed quicker.</p>
<p>There are 3 ways to increase the incentive for a miner to include your transaction</p>
<ol>
<li>
<p><b>Replace By Fee (RBF)</b></p>
<p>If you are the sender in a bitcoin transaction you can create a new transaction which spends the same inputs but with a higher fee.</p>
<p>Full RBF miners will mine blocks containing your replacement even if you don't flag RBF, but you may have issues propagating the transaction. </p>
</li>
<li>
<p><b>Child Pays for Parent (CPFP)</b></p>
<p>If you are the recipient of an unconfirmed transaction output you can spend it and increase the effective fee (the weighted average of both the original unconfirmed transaction and your CPFP transaction).</p>
<p>A miner can't confirm a CPFP transaction without also confirming the original, making it impossible for the miner to take the fee from your CPFP unless your unconfirmed original transaction is included in the same (or a previous) block.</p>
</li>
<li>
<p><b>Out of Band</b></p>
<p>The <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="what-is-mempool-accelerator">Mempool Accelerator™</a> is a transaction acceleration marketplace which enables acceleration offers to be made to mining partners, where payment is made via an alternate method (not in the onchain transaction fee).</p>
<p>Unlike RBF and CPFP a new onchain transaction does not need to be signed for each fee increase and depending on the payment method used may not be required at all, but trust is required by one or more parties involved (miner or user). </p>
</li>
</ol>
</ng-template>
<ng-template type="how-prevent-stuck-transaction">
<p>You must use an adequate transaction fee commensurate with how quickly you need the transaction to be confirmed. See Mempool's fee estimates on the <a [routerLink]="['/' | relativeUrl]">front page</a>.</p><p>Also consider using RBF (if your wallet supports it) so that you can bump the feerate on your transaction if it does end up getting stuck.</p>
<p>You must use an adequate transaction fee commensurate with how quickly you need the transaction to be confirmed. See Mempool's fee estimates on the <a [routerLink]="['/' | relativeUrl]">front page</a>.</p>
<p>If you need your transaction to be confirmed quickly but don't want to overpay you can use the <a href="https://mempool.space/accelerator" target="_blank">Mempool Accelerator™ </a>.</p>
<p>You may be able to increase your transaction bid manually <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="how-to-get-transaction-confirmed-quickly">using RBF / CPFP</a>, if your wallet supports these features.</p>
</ng-template>
<ng-template type="looking-up-transactions">
@@ -288,7 +310,7 @@
</ng-template>
<ng-template type="host-my-own-instance-server">
<p>You can manually install Mempool on your own server, but this requires advanced sysadmin skills since you will be manually configuring everything. You could also use our <a href="https://github.com/mempool/mempool/tree/master/docker" target="_blank">Docker images</a>.</p><p>In any case, we only provide support for manual deployments to <a href="/enterprise">enterprise sponsors</a>.</p>
<p>You can manually install Mempool on your own server, but this requires advanced sysadmin skills since you will be manually configuring everything. You could also use our <a href="https://github.com/mempool/mempool/tree/master/docker" target="_blank">Docker images</a>.</p><p>In any case, we only provide support for manual deployments to <a href="https://mempool.space/enterprise">enterprise sponsors</a>.</p>
<p>For casual users, we strongly suggest installing Mempool using one of the <a href="https://github.com/mempool/mempool#one-click-installation" target="_blank">1-click install methods</a>.</p>
</ng-template>
@@ -299,3 +321,67 @@
<ng-template type="address-lookup-issues">
<p>If you're getting errors when doing address lookups, it's probably because of your Electrum server backend.</p><p>Mempool uses an Electrum server to do address lookups. There are several implementations of the Electrum server protocol, and Mempool can use any of them, but the implementation you use affects performance:</p><ol><li><a href="https://github.com/romanz/electrs" target="_blank">romanz/electrs</a>. This is a common choice for its low resource requirements, and most full-node distros use it. But while this implementation works great for basic queries, it will struggle with heavier ones (e.g. looking up addresses with many transactions)—especially when running on low-power hardware like a Raspberry Pi.</li><li><a href="https://github.com/cculianu/Fulcrum" target="_blank">Fulcrum</a>. Fulcrum requires more resources than romanz/electrs but it can still run on a Raspberry Pi, and it handles heavy queries much more efficiently. If you're having issues with romanz/electrs, Fulcrum is worth a try.</li><li><a href="https://github.com/Blockstream/electrs" target="_blank">blockstream/electrs</a>. If you have stronger hardware, consider running Blockstream's electrs implementation. It's the backend mempool.space uses, and is also what powers blockstream.info.</li></ol>
</ng-template>
<ng-template type="what-is-mempool-accelerator">
<p><a href="https://mempool.space/accelerator" target="_blank">Mempool Accelerator™ </a> is a bitcoin transaction prioritisation service offered by mempool.space in collaboration bitcoin mining partners - Using the accelerator you can get your transaction confirmed quickly and easily.</p>
</ng-template>
<ng-template type="how-does-mempool-accelerator-work">
<p>When a user requests an acceleration the following actions are taken:</p>
<ol>
<li>A hold of an amount equal to the "Maximum Acceleration Bid" is placed on the users account balance.</li>
<li>The transaction is monitored to detect ejection from the accelerator mempool. If at any time the transaction is replaced or otherwise ejected from the accelerator mempool the transaction acceleration will be cancelled.</li>
<li>The acceleration request is sent to our mining partners, who apply a fee delta equal to the "Maximum Acceleration Bid" to the transaction.</li>
<li>The transaction is included in the next block produced by our mining partners.</li>
<li>mempool.space calculates the acceleration fee retrospectively (taking into account regular and accelerated transactions) and debits the user balance appropriately. </li>
<li>Any user balance still on hold is released for future accelerations.</li>
</ol>
</ng-template>
<ng-template type="join-accelerator-waitlist">
<p>If you <a href="https://mempool.space/signup" target="_blank">sign up for an account</a> you will automatically join the Mempool Accelerator™ waitlist.</p>
<p>You will get notified once you are granted access, although this will not happy until internal testing is completed and the service is rolled out. See <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="who-has-access-to-mempool-accelerator">here</a> for more details.</p>
</ng-template>
<ng-template type="who-has-access-to-mempool-accelerator">
<p>Currently access to Mempool Accelerator™ is limited to internal testers.</p>
<p>Anyone can <a href="https://mempool.space/signup" target="_blank">sign up</a> to join the waitlist, though their account will not be authorized immediately.
<p>Users who have signed up for the waitlist will see a banner in their account accelerator overview tab stating "You are currently on the waitlist. You will get notified once you are granted access". No user action is required and access will be granted as soon as possible.</p>
<p>Once the service is ready access will be rolled out to Mempool Enterprise® Sponsors and those on the <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="join-accelerator-waitlist">waitlist</a> for Mempool Accelerator™. </p>
</ng-template>
<ng-template type="account-requirement">
<p>The blockspace market will change between the time when a user requests a transaction acceleration and the time that one of our mining partners finds a block. At the time of making an acceleration request it is not possible to know what bid will be sufficient to get into the next block mined by our mining partners, therefore it is not possible to know how much the user should pay.</p>
<p>For this reason, at launch is is necessary to <a href="https://mempool.space/signup" target="_blank">sign up for an account</a> to use the Mempool Accelerator™. Having an account makes it possible to place a hold on user balance while awaiting an acceleration, and retrospectively charge customers the appropriate market rate, leaving the remaining balance for subsequent transaction accelerations. This makes the service very convenient for high volume users who can make many accelerations with a single deposit into their Mempool account.</p>
<p>We know that some users would prefer to pay per acceleration without using an account, and we hope to develop this functionality in the future.</p>
</ng-template>
<ng-template type="mempool-accelerator-balance">
<p>Mempool Accelerator™ will initially use an accounts model in which <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="who-has-access-to-mempool-accelerator">authorized users</a> can top-up their account balance by depositing bitcoin (on chain or lightning) or L-BTC, and draw down on their credit when making an acceleration. </p>
<p>After <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="how-to-request-an-acceleration">requesting an acceleration</a> a hold will be placed on the user account with a value equal to the maximum acceleration bid. Once the acceleration is completed the appropriate market price will be computed retrospectively and only this amount will be debited from the user balance, with the remaining held balance being released.</p>
<p>If the transaction is not accelerated the user will not be charged, and the hold will be released. If the transaction is ejected from the Mempool Accelerator™ mempool we reserve the right to charge you. </p>
</ng-template>
<ng-template type="how-to-request-an-acceleration">
<p> A user of mempool.space can browse to an unconfirmed transaction and click the accelerate button in the ETA field. They will then be shown the Acceleration details, including a breakdown of the fees associated with the service.</p>
<p>Provided the user has an <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="who-has-access-to-mempool-accelerator">authorized account</a> and a <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="who-has-access-to-mempool-accelerator">sufficient balance</a> they can click the Accelerate button.</p>
<p> Optionally, prior to clicking the Accelerate button the user may adjust the maximum acceleration bid.</p>
<p>Once a transaction acceleration has been requested it cannot be cancelled (<a [routerLink]="['/docs/faq' | relativeUrl]" fragment="cancelling-an-acceleration">read more</a>).</p>
</ng-template>
<ng-template type="cancelling-an-acceleration">
<p> Once an acceleration is requested it cannot be cancelled by the user. To give the user control over how much they may pay for the acceleration the user can select the maximum acceleration bid when submitting their acceleration request. If the required fee for acceleration exceeds the maximum bid set by the user the acceleration will be cancelled automatically.</p>
</ng-template>
<ng-template type="mempool-accelerator-improves-transparency">
<p>Transaction prioritisation services have existed for much of bitcoin's history, and miners have always been able to choose which transactions are included in their blocks. By running this service with a commitment to transparency we hope to improve public access to blockspace market data, including out of band offers. This transparency is novel, current transaction prioritisation services are private and although transactions which were included as a result of out of band payments can be identified, the amount paid is not public data. Furthermore, these transactions can only be identified in retrospect, after a block has been mined wheres acceleration bids are shown public on Mempool Space when they are made.</p>
<p>Mempool Accelerator™ publishes data on all accelerated transactions for public access. This information is available both on the mempool.space accelerator website and via an API. By making this information public other entities within the bitcoin ecosystem can better understand current and historic blockspace market dynamics. </p>
<p>"Fee estimation" algorithms can only utilize data which they have access to, and historically "Fee Estimation" algorithms have been blind to transaction prioritisations where out of band payments are made to miners or mining pools.</p>
<p>By making this data public Mempool Accelerator™ will ensure that "Fee Estimation" algorithms can take into account more transaction bid data (both in band and out of band).</p>
</ng-template>
<ng-template type="will-mining-pools-underpay-miners">
<p>If mining pools do not distribute out of band income to miners the incentives of each group are misaligned - mining pools earn more and miners earn less for each accelerated transaction.</p>
<p> To help miners hold mining pools to account we developed the <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="how-do-block-audits-work">Mempool Block Audit</a> feature which highlights transactions which were likely included due to out of band payments (those which were included in blocks but which were not expected when sorting by effective fee rate). </p>
<p> Mempool Accelerator™ <a [routerLink]="['/docs/faq' | relativeUrl]" fragment="mempool-accelerator-improves-transparency">improves transparency</a>, giving miners the data required to inform their decision as to which pool to mine with. For example Mempool Accelerator fees paid to mining pools will be displayed on the block overview pages, making it easy for miners to determine whether this income is shared with miners.</p>
</ng-template>

View File

@@ -302,3 +302,28 @@ export interface INode {
funding_balance?: number;
closing_balance?: number;
}
export interface Acceleration {
txid: string;
status: 'requested' | 'accelerating' | 'mined' | 'completed' | 'failed';
pools: number[];
feePaid: number;
added: number; // timestamp
lastUpdated: number; // timestamp
baseFee: number;
vsizeFee: number;
effectiveFee: number;
effectiveVsize: number;
feeDelta: number;
blockHash: string;
blockHeight: number;
actualFeeDelta?: number;
}
export interface AccelerationHistoryParams {
timeframe?: string,
status?: string,
pool?: string,
blockHash?: string,
}

View File

@@ -25,7 +25,7 @@ export class LightningDashboardComponent implements OnInit, AfterViewInit {
ngOnInit(): void {
this.seoService.setTitle($localize`:@@142e923d3b04186ac6ba23387265d22a2fa404e0:Lightning Explorer`);
this.seoService.setDescription($localize`:@@meta.description.lightning.dashboard:Get stats on the Lightning network (aggregate capacity, connectivity, etc) and Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).`);
this.seoService.setDescription($localize`:@@meta.description.lightning.dashboard:Get stats on the Lightning network (aggregate capacity, connectivity, etc), Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).`);
this.nodesRanking$ = this.lightningApiService.getNodesRanking$().pipe(share());
this.statistics$ = this.lightningApiService.getLatestStatistics$().pipe(share());

View File

@@ -20,7 +20,7 @@ export class NodesRankingsDashboard implements OnInit {
ngOnInit(): void {
this.seoService.setTitle($localize`Top lightning nodes`);
this.seoService.setDescription($localize`:@@meta.description.lightning.rankings-dashboard:See top the Lightning network nodes ranked by liquidity, connectivity, and age.`);
this.seoService.setDescription($localize`:@@meta.description.lightning.rankings-dashboard:See the top Lightning network nodes ranked by liquidity, connectivity, and age.`);
this.nodesRanking$ = this.lightningApiService.getNodesRanking$().pipe(share());
}
}

View File

@@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';
import { CpfpInfo, OptimizedMempoolStats, AddressInformation, LiquidPegs, ITranslators,
PoolStat, BlockExtended, TransactionStripped, RewardStats, AuditScore, BlockSizesAndWeights, RbfTree, BlockAudit } from '../interfaces/node-api.interface';
PoolStat, BlockExtended, TransactionStripped, RewardStats, AuditScore, BlockSizesAndWeights, RbfTree, BlockAudit, Acceleration, AccelerationHistoryParams } from '../interfaces/node-api.interface';
import { BehaviorSubject, Observable, catchError, filter, of, shareReplay, take, tap } from 'rxjs';
import { StateService } from './state.service';
import { IBackendInfo, WebsocketResponse } from '../interfaces/websocket.interface';
@@ -227,6 +227,10 @@ export class ApiService {
return this.httpClient.get<BlockExtended>(this.apiBaseUrl + this.apiBasePath + '/api/v1/block/' + hash);
}
getBlockDataFromTimestamp$(timestamp: number): Observable<any> {
return this.httpClient.get<number>(this.apiBaseUrl + this.apiBasePath + '/api/v1/mining/blocks/timestamp/' + timestamp);
}
getStrippedBlockTransactions$(hash: string): Observable<TransactionStripped[]> {
return this.httpClient.get<TransactionStripped[]>(this.apiBaseUrl + this.apiBasePath + '/api/v1/block/' + hash + '/summary');
}
@@ -424,4 +428,12 @@ export class ApiService {
accelerate$(txInput: string, userBid: number) {
return this.httpClient.post<any>(`${SERVICES_API_PREFIX}/accelerator/accelerate`, { txInput: txInput, userBid: userBid });
}
getAccelerations$(): Observable<Acceleration[]> {
return this.httpClient.get<Acceleration[]>(`${SERVICES_API_PREFIX}/accelerator/accelerations`);
}
getAccelerationHistory$(params: AccelerationHistoryParams): Observable<Acceleration[]> {
return this.httpClient.get<Acceleration[]>(`${SERVICES_API_PREFIX}/accelerator/accelerations/history`, { params: { ...params } });
}
}

View File

@@ -3,6 +3,7 @@ import { Inject, Injectable } from '@angular/core';
import { ApiService } from './api.service';
import { SeoService } from './seo.service';
import { StateService } from './state.service';
import { ActivatedRoute } from '@angular/router';
@Injectable({
providedIn: 'root'
@@ -11,12 +12,15 @@ export class EnterpriseService {
exclusiveHostName = '.mempool.space';
subdomain: string | null = null;
info: object = {};
statsUrl: string;
siteId: number;
constructor(
@Inject(DOCUMENT) private document: Document,
private apiService: ApiService,
private seoService: SeoService,
private stateService: StateService,
private activatedRoute: ActivatedRoute,
) {
const subdomain = this.document.location.hostname.indexOf(this.exclusiveHostName) > -1
&& this.document.location.hostname.split(this.exclusiveHostName)[0] || false;
@@ -56,7 +60,7 @@ export class EnterpriseService {
insertMatomo(siteId?: number): void {
let statsUrl = '//stats.mempool.space/';
if (!siteId) {
switch (this.document.location.hostname) {
case 'mempool.space':
@@ -88,16 +92,63 @@ export class EnterpriseService {
}
}
this.statsUrl = statsUrl;
this.siteId = siteId;
// @ts-ignore
const _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
_paq.push(['setTrackerUrl', statsUrl+'m.php']);
_paq.push(['setSiteId', siteId.toString()]);
const d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.src=statsUrl+'m.js'; s.parentNode.insertBefore(g,s);
})();
if (window._paq && window['Matomo']) {
window['Matomo'].addTracker(statsUrl+'m.php', siteId.toString());
const matomo = this.getMatomo();
matomo.setDocumentTitle(this.seoService.getTitle());
matomo.setCustomUrl(this.getCustomUrl());
matomo.disableCookies();
matomo.trackPageView();
matomo.enableLinkTracking();
} else {
// @ts-ignore
const alreadyInitialized = !!window._paq;
// @ts-ignore
const _paq = window._paq = window._paq || [];
_paq.push(['setDocumentTitle', this.seoService.getTitle()]);
_paq.push(['setCustomUrl', this.getCustomUrl()]);
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
if (alreadyInitialized) {
_paq.push(['addTracker', statsUrl+'m.php', siteId.toString()]);
} else {
(function() {
_paq.push(['setTrackerUrl', statsUrl+'m.php']);
_paq.push(['setSiteId', siteId.toString()]);
const d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
// @ts-ignore
g.type='text/javascript'; g.async=true; g.src=statsUrl+'m.js'; s.parentNode.insertBefore(g,s);
})();
}
}
}
private getMatomo() {
if (this.siteId != null) {
return window['Matomo']?.getTracker(this.statsUrl+'m.php', this.siteId);
}
}
goal(id: number) {
// @ts-ignore
this.getMatomo()?.trackGoal(id);
}
private getCustomUrl(): string {
let url = window.location.origin + '/';
let route = this.activatedRoute;
while (route) {
const segment = route?.routeConfig?.path;
if (segment && segment.length) {
url += segment + '/';
}
route = route.firstChild;
}
return url;
}
}

View File

@@ -76,17 +76,22 @@ export class WebsocketService {
this.stateService.resetChainTip();
this.websocketSubject.complete();
this.subscription.unsubscribe();
this.websocketSubject = webSocket<WebsocketResponse>(
this.webSocketUrl.replace('{network}', this.network ? '/' + this.network : '')
);
this.startSubscription();
this.reconnectWebsocket();
});
}
}
reconnectWebsocket(retrying = false, hasInitData = false) {
console.log('reconnecting websocket');
this.websocketSubject.complete();
this.subscription.unsubscribe();
this.websocketSubject = webSocket<WebsocketResponse>(
this.webSocketUrl.replace('{network}', this.network ? '/' + this.network : '')
);
this.startSubscription(retrying, hasInitData);
}
startSubscription(retrying = false, hasInitData = false) {
if (!hasInitData) {
this.stateService.isLoadingWebSocket$.next(true);
@@ -237,7 +242,7 @@ export class WebsocketService {
this.goneOffline = true;
this.stateService.connectionState$.next(0);
window.setTimeout(() => {
this.startSubscription(true);
this.reconnectWebsocket(true);
}, retryDelay);
}

View File

@@ -2,12 +2,12 @@ import { Component, Input, OnInit } from "@angular/core";
import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
const MempoolErrors = {
'internal_server_error': `Something went wrong, please try again later`,
'acceleration_duplicated': `This transaction has already been accelerated.`,
'acceleration_outbid': `Your fee delta is too low.`,
'cannot_accelerate_tx': `Cannot accelerate this transaction.`,
'cannot_decode_raw_tx': `Cannot decode this raw transaction.`,
'cannot_fetch_raw_tx': `Cannot find this transaction.`,
'database_error': `Something went wrong. Please try again later.`,
'high_sigop_tx': `This transaction cannot be accelerated.`,
'invalid_acceleration_request': `This acceleration request is not valid.`,
'invalid_tx_dependencies': `This transaction dependencies are not valid.`,

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2046,6 +2046,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2105,6 +2105,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>
@@ -2856,6 +2860,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.block" datatype="html">
<source>See size, weight, fee range, included transactions, audit (expected v actual), and more for Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> block <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (<x id="BLOCK_ID" equiv-text="block.id"/>).</source>
<target>Zeige Größe, Gewicht, Gebührenbereich, enthaltene Transaktionen, Prüfung von (erwartet vs. tatsächlich) und mehr für Bitcoin <x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> Block <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (<x id="BLOCK_ID" equiv-text="block.id"/>).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-view/block-view.component.ts</context>
<context context-type="linenumber">114</context>
@@ -3454,6 +3459,7 @@
</trans-unit>
<trans-unit id="meta.description.liquid.blocks" datatype="html">
<source>See the most recent Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> blocks along with basic stats such as block height, block size, and more.</source>
<target>Zeige die neuesten Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>-Blöcke zusammen mit grundlegenden Statistiken wie Blockhöhe, Blockgröße und mehr an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.ts</context>
<context context-type="linenumber">62</context>
@@ -3461,6 +3467,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.blocks" datatype="html">
<source>See the most recent Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> blocks along with basic stats such as block height, block reward, block size, and more.</source>
<target>Zeige die neuesten Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>-Blöcke zusmmen mit grundlegenden Statistiken wie Blockhöhe, Blockbelohnung, Blockgröße und mehr an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.ts</context>
<context context-type="linenumber">64</context>
@@ -3586,6 +3593,7 @@
</trans-unit>
<trans-unit id="1bb6965f8e1bbe40c076528ffd841da86f57f119" datatype="html">
<source><x id="INTERPOLATION" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;blocks&lt;/span&gt;&lt;/ng-template&gt; &lt;ng-"/> <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;"/>blocks<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></source>
<target><x id="INTERPOLATION" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;blocks&lt;/span&gt;&lt;/ng-template&gt; &lt;ng-"/> <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;"/>Blöcke<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/difficulty-mining/difficulty-mining.component.html</context>
<context context-type="linenumber">10,11</context>
@@ -3889,6 +3897,7 @@
</trans-unit>
<trans-unit id="93168b4de564d2c5d21d67cf2fb263f27b45e4c8" datatype="html">
<source>WU/s</source>
<target>WU/s</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">14</context>
@@ -4109,6 +4118,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.hashrate" datatype="html">
<source>See hashrate and difficulty for the Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.network)"/> network visualized over time.</source>
<target>Zeige die Hashrate und den Schwierigkeitsgrad für das Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.network)"/>-Netzwerk im Zeitverlauf an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/hashrate-chart/hashrate-chart.component.ts</context>
<context context-type="linenumber">75</context>
@@ -4216,6 +4226,7 @@
</trans-unit>
<trans-unit id="meta.description.mempool-block" datatype="html">
<source>See stats for <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transactions in the mempool: fee range, aggregate size, and more. Mempool blocks are updated in real-time as the network receives new transactions.</source>
<target>Zeige folgende Statistiken für <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>-Transaktionen im Mempool an: Gebührenbereich, Gesamtgröße und mehr. Mempool-Blöcke werden in Echtzeit aktualisiert, wenn das Netzwerk neue Transaktionen empfängt.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-block/mempool-block.component.ts</context>
<context context-type="linenumber">58</context>
@@ -4320,6 +4331,7 @@
</trans-unit>
<trans-unit id="meta.description.mining.dashboard" datatype="html">
<source>Get real-time Bitcoin mining stats like hashrate, difficulty adjustment, block rewards, pool dominance, and more.</source>
<target>Erhalten Sie Bitcoin-Mining-Statistiken in Echtzeit wie Hashrate, Schwierigkeitsanpassung, Blockbelohnungen, Pool-Dominanz und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.ts</context>
<context context-type="linenumber">21</context>
@@ -4336,6 +4348,7 @@
</trans-unit>
<trans-unit id="4e338e7daa64c7a074cee3824fbd7425e5b7c9a5" datatype="html">
<source>Pools Luck</source>
<target>Pools Glück</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">9</context>
@@ -4366,6 +4379,7 @@
</trans-unit>
<trans-unit id="ade0bf412a0fae1e4672505fc1fa79ade185db05" datatype="html">
<source>Pools Count</source>
<target>Anzahl der Pools</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">17</context>
@@ -4480,6 +4494,7 @@
</trans-unit>
<trans-unit id="5d680aaa8e24bb235cf4fbeff3df0bfc8e2f564e" datatype="html">
<source>Empty Blocks</source>
<target>Leere Blöcke</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">98</context>
@@ -4505,6 +4520,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.pool-ranking" datatype="html">
<source>See the top Bitcoin mining pools ranked by number of blocks mined, over your desired timeframe.</source>
<target>Zeige die Top-Bitcoin-Mining-Pools an, sortiert nach der Anzahl der im gewünschten Zeitraum abgebauten Blöcke.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.ts</context>
<context context-type="linenumber">59</context>
@@ -4594,6 +4610,7 @@
</trans-unit>
<trans-unit id="meta.description.mining.pool" datatype="html">
<source>See mining pool stats for <x id="PH" equiv-text="poolStats.pool.name"/>: most recent mined blocks, hashrate over time, total block reward to date, known coinbase addresses, and more.</source>
<target>Zeige die folgenden Mining-Pool-Statistiken für <x id="PH" equiv-text="poolStats.pool.name"/> an: zuletzt geschürfte Blöcke, Hashrate im Zeitverlauf, bisherige Gesamtblockbelohnung, bekannte Coinbase-Adressen und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool-preview.component.ts</context>
<context context-type="linenumber">86</context>
@@ -4660,6 +4677,7 @@
</trans-unit>
<trans-unit id="3dc78651b2810cbb6e830fe7e57499d8cf6a8e4d" datatype="html">
<source>Blocks (24h)</source>
<target>Blöcke (24h)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">146</context>
@@ -4774,6 +4792,7 @@
</trans-unit>
<trans-unit id="meta.title.push-tx" datatype="html">
<source>Broadcast Transaction</source>
<target>Transaktion senden</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/push-transaction/push-transaction.component.ts</context>
<context context-type="linenumber">31</context>
@@ -4781,6 +4800,7 @@
</trans-unit>
<trans-unit id="meta.description.push-tx" datatype="html">
<source>Broadcast a transaction to the <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> network using the transaction's hash.</source>
<target>Senden einer Transaktion mithilfe des Hashs der Transaktion an das Netzwerk <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/push-transaction/push-transaction.component.ts</context>
<context context-type="linenumber">32</context>
@@ -4788,6 +4808,7 @@
</trans-unit>
<trans-unit id="5e3d5a82750902f159122fcca487b07f1af3141f" datatype="html">
<source>RBF Replacements</source>
<target>RBF-Ersetzung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">2</context>
@@ -4800,6 +4821,7 @@
</trans-unit>
<trans-unit id="8a9b3afe9486474f0d7767605fe99af99c8ea430" datatype="html">
<source>Full RBF</source>
<target>Full RBF</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">24</context>
@@ -4816,6 +4838,7 @@
</trans-unit>
<trans-unit id="c88914ee712e3ab5ad5f88de8a6ed12050919ccb" datatype="html">
<source>There are no replacements in the mempool yet!</source>
<target>Es gibt noch keine Ersetzung im Mempool!</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">34</context>
@@ -4824,6 +4847,7 @@
</trans-unit>
<trans-unit id="meta.description.rbf-list" datatype="html">
<source>See the most recent RBF replacements on the Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> network, updated in real-time.</source>
<target>Zeige die neuesten RBF-Ersetzungen im Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>-Netzwerk an, aktualisiert in Echtzeit.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.ts</context>
<context context-type="linenumber">59</context>
@@ -4869,6 +4893,7 @@
</trans-unit>
<trans-unit id="aa28c3afcb8b1a556fc1e1842e48a57f24fd643f" datatype="html">
<source>Status</source>
<target>Status</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-timeline/rbf-timeline-tooltip.component.html</context>
<context context-type="linenumber">33</context>
@@ -4886,6 +4911,7 @@
</trans-unit>
<trans-unit id="eb3b032a755fc367f7f6e957d0c7dc9d6db49464" datatype="html">
<source>RBF</source>
<target>RBF</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-timeline/rbf-timeline-tooltip.component.html</context>
<context context-type="linenumber">36</context>
@@ -5105,6 +5131,7 @@
</trans-unit>
<trans-unit id="d0e134a0886ae71207e912575d226525062b62f1" datatype="html">
<source>Clock (Mempool)</source>
<target>Uhr (Mempool)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">17</context>
@@ -5157,6 +5184,7 @@
</trans-unit>
<trans-unit id="68d44b7bd049ae93c2bc15973eb5266aec64693e" datatype="html">
<source>Cap outliers</source>
<target>Ausreißer begrenzen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">122</context>
@@ -5165,6 +5193,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.mempool" datatype="html">
<source>See mempool size (in MvB) and transactions per second (in vB/s) visualized over time.</source>
<target>Zeige die Mempool-Größe (in MvB) und Transaktionen pro Sekunde (in vB/s) im Zeitverlauf an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.ts</context>
<context context-type="linenumber">67</context>
@@ -5172,6 +5201,7 @@
</trans-unit>
<trans-unit id="meta.description.tv" datatype="html">
<source>See Bitcoin blocks and mempool congestion in real-time in a simplified format perfect for a TV.</source>
<target>Zeige die Bitcoin-Blöcke und den Mempool-Stau in Echtzeit in einem vereinfachten Format, das perfekt für einen Fernseher geeignet ist.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/television/television.component.ts</context>
<context context-type="linenumber">40</context>
@@ -5384,6 +5414,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.transaction" datatype="html">
<source>Get real-time status, addresses, fees, script info, and more for <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transaction with txid {txid}.</source>
<target>Zeige Echtzeitstatus, Adressen, Gebühren, Skriptinformationen und mehr für die <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>-Transaktion mit txid {txid}.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction-preview.component.ts</context>
<context context-type="linenumber">91</context>
@@ -5425,6 +5456,7 @@
</trans-unit>
<trans-unit id="913e89d2d1ae354079cccf48b3d3f4ebf2e74080" datatype="html">
<source>Accelerate</source>
<target>Beschleunigen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">123</context>
@@ -5462,6 +5494,7 @@
</trans-unit>
<trans-unit id="03721a62015a76e794be64ba2b7e053e801215ea" datatype="html">
<source>RBF History</source>
<target>RBF-Geschichte</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">218</context>
@@ -5533,6 +5566,7 @@
</trans-unit>
<trans-unit id="a8a4dd861f790141e19f773153cf42b5d0b0e6b6" datatype="html">
<source>Adjusted vsize</source>
<target>Angepasste V-Größe</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">298</context>
@@ -5551,6 +5585,7 @@
</trans-unit>
<trans-unit id="3dd65e8fa7035988a691aadcb583862c2a9e336a" datatype="html">
<source>Sigops</source>
<target>Sigops</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">320</context>
@@ -5578,6 +5613,7 @@
</trans-unit>
<trans-unit id="8b01e0411c7160bfee109e504c84ecee5079c326" datatype="html">
<source>Accelerated fee rate</source>
<target>Beschleunigter Gebührensatz</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">516</context>
@@ -5933,6 +5969,7 @@
</trans-unit>
<trans-unit id="4fe744df6d36b5e9b0afab728b77fc635b99f040" datatype="html">
<source>Recent Replacements</source>
<target>Aktuelle Ersetzungen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">79</context>
@@ -5941,6 +5978,7 @@
</trans-unit>
<trans-unit id="23c872b0336e20284724607f2887da39bd8142c3" datatype="html">
<source>Previous fee</source>
<target>Vorherige Gebühr</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">86</context>
@@ -5949,6 +5987,7 @@
</trans-unit>
<trans-unit id="df33bef035883b7afeb388977087f99ab5a54409" datatype="html">
<source>New fee</source>
<target>Neue Gebühr</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">87</context>
@@ -5957,6 +5996,7 @@
</trans-unit>
<trans-unit id="aa6ce7e6e6fe5cd080713965451f25bca15a2a25" datatype="html">
<source>Recent Transactions</source>
<target>Kürzliche Transaktionen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">153</context>
@@ -5994,6 +6034,7 @@
</trans-unit>
<trans-unit id="9dfdbeb922d811d7b7b3fecd48360a059e52aaba" datatype="html">
<source>Incoming Transactions</source>
<target>Eingehende Transaktionen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">259</context>
@@ -6002,6 +6043,7 @@
</trans-unit>
<trans-unit id="999bb1a0150c2815a6b4dd64a1850e763603e525" datatype="html">
<source><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space mer"/>mempool.space merely provides data about the Bitcoin network.<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> It cannot help you with retrieving funds, wallet issues, etc.<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/>For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/></source>
<target><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space mer"/>mempool.space stellt lediglich Daten über das Bitcoin-Netzwerk bereit.<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> Es kann Ihnen beim Abrufen von Geldern, bei Problemen mit der Wallet usw. nicht helfen.<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/>Bei solchen Anfragen müssen Sie Kontakt mit der Entität aufnehmen, die bei der Transaktion geholfen hat (Wallet-Software, Börsenunternehmen usw.).<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/api-docs/api-docs.component.html</context>
<context context-type="linenumber">15,16</context>
@@ -6096,6 +6138,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.faq" datatype="html">
<source>FAQ</source>
<target>FAQ</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">45</context>
@@ -6103,6 +6146,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.faq" datatype="html">
<source>Get answers to common questions like: What is a mempool? Why isn't my transaction confirming? How can I run my own instance of The Mempool Open Source Project? And more.</source>
<target>Erhalten Sie Antworten auf häufige Fragen wie: Was ist ein Mempool? Warum wird meine Transaktion nicht bestätigt? Wie kann ich meine eigene Instanz des Mempool Open Source Project ausführen? Und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">46</context>
@@ -6110,6 +6154,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.rest" datatype="html">
<source>REST API</source>
<target>REST API</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">49</context>
@@ -6117,6 +6162,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-liquid" datatype="html">
<source>Documentation for the liquid.network REST API service: get info on addresses, transactions, assets, blocks, and more.</source>
<target>Dokumentation für den liquid.network REST API-Dienst: Erhalte Informationen zu Adressen, Transaktionen, Assets, Blöcken und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">51</context>
@@ -6124,6 +6170,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-bisq" datatype="html">
<source>Documentation for the bisq.markets REST API service: get info on recent trades, current offers, transactions, network state, and more.</source>
<target>Dokumentation für den bisq.markets-REST-API-Dienst: Erhalte Informationen zu aktuellen Trades, aktuellen Angeboten, Transaktionen, Netzwerkstatus und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">53</context>
@@ -6131,6 +6178,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-bitcoin" datatype="html">
<source>Documentation for the mempool.space REST API service: get info on addresses, transactions, blocks, fees, mining, the Lightning network, and more.</source>
<target>Dokumentation für den REST-API-Dienst mempool.space: Erhalte Informationen zu Adressen, Transaktionen, Blöcken, Gebühren, Mining, dem Lightning-Netzwerk und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">55</context>
@@ -6138,6 +6186,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.websocket" datatype="html">
<source>WebSocket API</source>
<target>WebSocket API</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">59</context>
@@ -6145,6 +6194,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.websocket-liquid" datatype="html">
<source>Documentation for the liquid.network WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more.</source>
<target>Dokumentation für den liquid.network WebSocket API-Dienst: Erhalte Echtzeitinformationen zu Blöcken, Mempools, Transaktionen, Adressen und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">61</context>
@@ -6152,6 +6202,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.websocket-bitcoin" datatype="html">
<source>Documentation for the mempool.space WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more.</source>
<target>Dokumentation für den WebSocket-API-Dienst mempool.space: Erhalte Echtzeitinformationen zu Blöcken, Mempools, Transaktionen, Adressen und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">63</context>
@@ -6159,6 +6210,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.electrum" datatype="html">
<source>Electrum RPC</source>
<target>Electrum RPC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">67</context>
@@ -6166,6 +6218,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.electrumrpc" datatype="html">
<source>Documentation for our Electrum RPC interface: get instant, convenient, and reliable access to an Esplora instance.</source>
<target>Dokumentation für unsere Electrum RPC-Schnittstelle: Erhalte sofortigen, bequemen und zuverlässigen Zugriff auf eine Esplora-Instanz.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">68</context>
@@ -6478,6 +6531,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.channel" datatype="html">
<source>Overview for Lightning channel <x id="PH" equiv-text="params.get('short_id')"/>. See channel capacity, the Lightning nodes involved, related on-chain transactions, and more.</source>
<target>Übersicht über den Lightning-Kanal <x id="PH" equiv-text="params.get('short_id')"/>. Zeige die Kanalkapazität, die beteiligten Lightning-Knoten, zugehörige On-Chain-Transaktionen und mehr an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.ts</context>
<context context-type="linenumber">37</context>
@@ -6976,6 +7030,7 @@
</trans-unit>
<trans-unit id="ec42ed2d917189340598d7993c29b30c7fd32af4" datatype="html">
<source>Connect</source>
<target>Verbinden</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group.component.html</context>
<context context-type="linenumber">73</context>
@@ -7026,6 +7081,7 @@
</trans-unit>
<trans-unit id="34e302a08660d9860dda71e3f350351d34bda498" datatype="html">
<source>Penalties</source>
<target>Strafen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/justice-list/justice-list.component.html</context>
<context context-type="linenumber">4</context>
@@ -7103,6 +7159,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.dashboard" datatype="html">
<source>Get stats on the Lightning network (aggregate capacity, connectivity, etc) and Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).</source>
<target>Erhalte Statistiken zum Lightning-Netzwerk (Gesamtkapazität, Konnektivität usw.) und zu Lightning-Knoten (Kanäle, Liquidität usw.) und Lightning-Kanälen (Status, Gebühren usw.).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts</context>
<context context-type="linenumber">28</context>
@@ -7212,6 +7269,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node" datatype="html">
<source>Overview for the Lightning network node named <x id="PH" equiv-text="node.alias"/>. See channels, capacity, location, fee stats, and more.</source>
<target>Übersicht über den Lightning-Netzwerkknoten mit dem Namen <x id="PH" equiv-text="node.alias"/>. Zeige Kanäle, Kapazität, Standort, Gebührenstatistiken und mehr an.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.ts</context>
<context context-type="linenumber">52</context>
@@ -7272,6 +7330,7 @@
</trans-unit>
<trans-unit id="a737eb6814b234b0fd00e81b645b95a396711f15" datatype="html">
<source>Decoded</source>
<target>Decodiert</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">136</context>
@@ -7410,6 +7469,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node-map" datatype="html">
<source>See the channels of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details.</source>
<target>Zeige die Kanäle von Nicht-Tor-Lightning-Netzwerkknoten visualisiert auf einer Weltkarte an. Bewegen Sie den Mauszeiger/tippen Sie auf Punkte auf der Karte, um Knotennamen und Details anzuzeigen.</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>
@@ -7434,6 +7494,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node-channel-map" datatype="html">
<source>See the locations of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details.</source>
<target>Zeige die Standorte von Nicht-Tor-Lightning-Netzwerkknoten visualisiert auf einer Weltkarte an. Bewegen Sie den Mauszeiger/tippen Sie auf Punkte auf der Karte, um Knotennamen und Details anzuzeigen.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-map/nodes-map.component.ts</context>
<context context-type="linenumber">51</context>
@@ -7441,6 +7502,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-network" datatype="html">
<source>See the number of Lightning network nodes visualized over time by network: clearnet only (IPv4, IPv6), darknet (Tor, I2p, cjdns), and both.</source>
<target>Zeige die Anzahl der Lightning-Netzwerkknoten an, die im Laufe der Zeit nach Netzwerk visualisiert werden: nur Clearnet (IPv4, IPv6), Darknet (Tor, I2p, cjdns) und beide.</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">68</context>
@@ -7509,6 +7571,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-country-overview" datatype="html">
<source>See a geographical breakdown of the Lightning network: how many Lightning nodes are hosted in countries around the world, aggregate BTC capacity for each country, and more.</source>
<target>Zeige eine geografische Aufschlüsselung des Lightning-Netzwerks an: Wie viele Lightning-Knoten werden in Ländern auf der ganzen Welt gehostet, die gesamte BTC-Kapazität für jedes Land und mehr.</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">47</context>
@@ -7579,6 +7642,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-country" datatype="html">
<source>Explore all the Lightning nodes hosted in <x id="PH" equiv-text="response.country.en"/> and see an overview of each node's capacity, number of open channels, and more.</source>
<target>Erkunde alle Lightning-Knoten, die in <x id="PH" equiv-text="response.country.en"/> gehostet werden, und sehe einen Überblick über die Kapazität jedes Knotens, die Anzahl der offenen Kanäle und mehr an.</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">36</context>
@@ -7729,6 +7793,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-isp" datatype="html">
<source>Browse all Bitcoin Lightning nodes using the <x id="PH" equiv-text="response.isp"/> [AS<x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>] ISP and see aggregate stats like total number of nodes, total capacity, and more for the ISP.</source>
<target>Durchsuche alle Bitcoin Lightning-Knoten, die den <x id="PH" equiv-text="response.isp"/> [AS <x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>] ISP verwenden, und sehe aggregierte Statistiken wie die Gesamtzahl der Knoten, die Gesamtkapazität und mehr für den 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">45</context>
@@ -7784,6 +7849,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.oldest" datatype="html">
<source>See the oldest nodes on the Lightning network along with their capacity, number of channels, location, etc.</source>
<target>Zeige die ältesten Knoten im Lightning-Netzwerk zusammen mit ihrer Kapazität, Anzahl der Kanäle, Standort usw.</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">28</context>
@@ -7791,6 +7857,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.liquidity" datatype="html">
<source>See Lightning nodes with the most BTC liquidity deployed along with high-level stats like number of open channels, location, node age, and more.</source>
<target>Zeige die Lightning-Knoten mit der höchsten bereitgestellten BTC-Liquidität sowie allgemeine Statistiken wie die Anzahl der offenen Kanäle, Standort, Knotenalter und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">34</context>
@@ -7798,6 +7865,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.channels" datatype="html">
<source>See Lightning nodes with the most channels open along with high-level stats like total node capacity, node age, and more.</source>
<target>Zeige die Lightning-Knoten mit den meisten offenen Kanälen sowie allgemeine Statistiken wie die Gesamtknotenkapazität, das Knotenalter und mehr.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts</context>
<context context-type="linenumber">38</context>
@@ -7822,6 +7890,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.rankings-dashboard" datatype="html">
<source>See top the Lightning network nodes ranked by liquidity, connectivity, and age.</source>
<target>Zeige die besten Lightning-Netzwerkknoten an, sortiert nach Liquidität, Konnektivität und Alter.</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">23</context>
@@ -7829,6 +7898,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.stats-chart" datatype="html">
<source>See the capacity of the Lightning network visualized over time in terms of the number of open channels and total bitcoin capacity.</source>
<target>Zeige die Kapazität des Lightning-Netzwerks im Zeitverlauf anhand der Anzahl offener Kanäle und der gesamten Bitcoin-Kapazität.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">67</context>
@@ -7836,6 +7906,7 @@
</trans-unit>
<trans-unit id="8e623d3cfecb7c560c114390db53c1f430ffd0de" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> confirmation</source>
<target><x id="INTERPOLATION" equiv-text="{{ i }}"/> Bestätigung</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">4</context>
@@ -7845,6 +7916,7 @@
</trans-unit>
<trans-unit id="bc5b0a2631f0b7bc71aaec6aa6f01af21f9a80d4" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> confirmations</source>
<target><x id="INTERPOLATION" equiv-text="{{ i }}"/> Bestätigungen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">5</context>
@@ -7854,6 +7926,7 @@
</trans-unit>
<trans-unit id="a001c3d27d5fe4a7a362a6089b5b5020ef8c1c95" datatype="html">
<source>Replaced</source>
<target>Ersetzt</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">12</context>
@@ -7863,6 +7936,7 @@
</trans-unit>
<trans-unit id="58fbcd58e305ab289b99fad67d223f3e83ddb755" datatype="html">
<source>Removed</source>
<target>Entfernt</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">15</context>
@@ -7882,6 +7956,7 @@
</trans-unit>
<trans-unit id="57a6f49237ac457ecc67fabdf1361a112ccdbf93" datatype="html">
<source>sat/WU</source>
<target>sat/WU</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/fee-rate/fee-rate.component.html</context>
<context context-type="linenumber">3</context>
@@ -7891,6 +7966,7 @@
</trans-unit>
<trans-unit id="5ce2bda884ea801c34a1a6c23627d9a5e08f0a82" datatype="html">
<source>My Account</source>
<target>Mein Account</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">25</context>
@@ -7903,6 +7979,7 @@
</trans-unit>
<trans-unit id="ba4f24bf9bf3dc4db3d6bc1b8b63339295f0b806" datatype="html">
<source>Sign In</source>
<target>Anmelden</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">26</context>
@@ -7915,6 +7992,7 @@
</trans-unit>
<trans-unit id="1773b1dad3e4b72bca77621985366b9e6a92ae28" datatype="html">
<source>Explore</source>
<target>Erkunden</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">41</context>
@@ -7923,6 +8001,7 @@
</trans-unit>
<trans-unit id="52dd0ddd9ab3ea7caafcb4d6ac95e9459ef635f5" datatype="html">
<source>Connect to our Nodes</source>
<target>Verbinden mit unseren Nodes</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">46</context>
@@ -7931,6 +8010,7 @@
</trans-unit>
<trans-unit id="1cd6dc07ed789f4013d299b031200224977cbb8b" datatype="html">
<source>API Documentation</source>
<target>API-Dokumentation</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">47</context>
@@ -7939,6 +8019,7 @@
</trans-unit>
<trans-unit id="04dfb6eb5a67d7fa19fb24f0e50324ea63fd8f08" datatype="html">
<source>Learn</source>
<target>Lernen</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">50</context>
@@ -7947,6 +8028,7 @@
</trans-unit>
<trans-unit id="14f76d294f3ae892e8033d60bb960701cafca66f" datatype="html">
<source>What is a mempool?</source>
<target>Was ist ein Mempool?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">51</context>
@@ -7955,6 +8037,7 @@
</trans-unit>
<trans-unit id="8ac787087e3eec254d15a4e16492f8877107087b" datatype="html">
<source>What is a block explorer?</source>
<target>Was ist ein Block-Explorer?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">52</context>
@@ -7963,6 +8046,7 @@
</trans-unit>
<trans-unit id="0ab3729578bb613995fc5c90c4d7aa45588dd2a1" datatype="html">
<source>What is a mempool explorer?</source>
<target>Was ist ein Mempool-Explorer?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">53</context>
@@ -7971,6 +8055,7 @@
</trans-unit>
<trans-unit id="8fe988a9cb02c11f99631ca85721d34d67fc32ff" datatype="html">
<source>Why isn't my transaction confirming?</source>
<target>Warum wird meine Transaktion nicht bestätigt?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">54</context>
@@ -7979,6 +8064,7 @@
</trans-unit>
<trans-unit id="03f766a5a2abdbfbdcc2b6135691b9fb1f2ed530" datatype="html">
<source>More FAQs »</source>
<target>Weitere FAQs »</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">55</context>
@@ -7987,6 +8073,7 @@
</trans-unit>
<trans-unit id="7a1c82a943fc99d3080aeffeeb7d21f0726ad8cc" datatype="html">
<source>Networks</source>
<target>Netzwerke</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">59</context>
@@ -7995,6 +8082,7 @@
</trans-unit>
<trans-unit id="f96488094a57809ea9bfe4a2f2bf91af66a0d0a3" datatype="html">
<source>Mainnet Explorer</source>
<target>Mainnet-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">60</context>
@@ -8003,6 +8091,7 @@
</trans-unit>
<trans-unit id="a31347c0f3ec966c373229584cfb7bd6725a0e64" datatype="html">
<source>Testnet Explorer</source>
<target>Testnet-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">61</context>
@@ -8011,6 +8100,7 @@
</trans-unit>
<trans-unit id="c9bf4b5d16994e42297cbe174e831a7edd9cfe72" datatype="html">
<source>Signet Explorer</source>
<target>Signet-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">62</context>
@@ -8019,6 +8109,7 @@
</trans-unit>
<trans-unit id="c127ef3218deed36fb86af83def0b54846f92252" datatype="html">
<source>Liquid Testnet Explorer</source>
<target>Liquid-Testnet-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">63</context>
@@ -8027,6 +8118,7 @@
</trans-unit>
<trans-unit id="3c07f1c84d76a9999153e87343fd642852bb6d34" datatype="html">
<source>Liquid Explorer</source>
<target>Liquid-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">64</context>
@@ -8035,6 +8127,7 @@
</trans-unit>
<trans-unit id="16e770142bcac84dce7dfb9840d11961ee87ae6c" datatype="html">
<source>Bisq Explorer</source>
<target>Bisq-Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">65</context>
@@ -8043,6 +8136,7 @@
</trans-unit>
<trans-unit id="fefee13017c2b85143cd131ee253e327a14053a0" datatype="html">
<source>Tools</source>
<target>Werkzeuge</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">69</context>
@@ -8051,6 +8145,7 @@
</trans-unit>
<trans-unit id="8c23995422ac012b80a2369a878b199c39271906" datatype="html">
<source>Clock (Mined)</source>
<target>Uhr (Mined)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">71</context>
@@ -8059,6 +8154,7 @@
</trans-unit>
<trans-unit id="9a91783e9c0f790ed49edae730f9156070ed9dd5" datatype="html">
<source>Legal</source>
<target>Rechtliches</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">76</context>
@@ -8087,6 +8183,7 @@
</trans-unit>
<trans-unit id="6a0a8485405b9b289101e52a46e282342c8dc9e0" datatype="html">
<source>Trademark Policy</source>
<target>Markenrichtlinie</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">79</context>
@@ -8096,6 +8193,7 @@
</trans-unit>
<trans-unit id="64dd13424d9486cf3d680d934987ec685bac0b3d" datatype="html">
<source>This is a test network. Coins have no value.</source>
<target>Dies ist ein Testnetzwerk. Coins haben keinen Wert.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/testnet-alert/testnet-alert.component.html</context>
<context context-type="linenumber">3</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -59,6 +59,7 @@
</trans-unit>
<trans-unit id="ngb.progressbar.value" datatype="html">
<source><x id="INTERPOLATION"/></source>
<target><x id="INTERPOLATION"/></target>
<context-group purpose="location">
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
@@ -66,6 +67,7 @@
</trans-unit>
<trans-unit id="ngb.carousel.slide-number" datatype="html">
<source> Slide <x id="INTERPOLATION"/> of <x id="INTERPOLATION_1"/> </source>
<target> Diapositive <x id="INTERPOLATION"/> de <x id="INTERPOLATION_1"/></target>
<context-group purpose="location">
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
@@ -404,6 +406,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.address" datatype="html">
<source>See current balance, pending transactions, and history of confirmed transactions for BSQ address <x id="INTERPOLATION" equiv-text="this.addressString"/>.</source>
<target>Consultez le solde actuel, les transactions en attente et l'historique des transactions confirmées pour l'adresse BSQ <x id="INTERPOLATION" equiv-text="this.addressString"/>.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-address/bisq-address.component.ts</context>
<context context-type="linenumber">44</context>
@@ -500,6 +503,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.block" datatype="html">
<source>See all BSQ transactions in Bitcoin block <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (block hash <x id="BLOCK_HASH" equiv-text="block.hash"/>).</source>
<target>Voir toutes les transactions BSQ dans le bloc Bitcoin <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (hachage de bloc <x id="BLOCK_HASH" equiv-text="block.hash"/>).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-block/bisq-block.component.ts</context>
<context context-type="linenumber">92</context>
@@ -627,6 +631,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.blocks" datatype="html">
<source>See a list of recent Bitcoin blocks with BSQ transactions, total BSQ sent per block, and more.</source>
<target>Consultez une liste des blocs Bitcoin récents avec des transactions BSQ, le nombre total de BSQ envoyés par bloc, et plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-blocks/bisq-blocks.component.ts</context>
<context context-type="linenumber">39</context>
@@ -756,6 +761,7 @@
</trans-unit>
<trans-unit id="meta.title.bisq.markets" datatype="html">
<source>Markets</source>
<target>Marchés</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts</context>
<context context-type="linenumber">32</context>
@@ -763,6 +769,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.markets" datatype="html">
<source>Explore the full Bitcoin ecosystem with The Mempool Open Source Project™. See Bisq market prices, trading activity, and more.</source>
<target>Explorez l'intégralité de l'écosystème Bitcoin avec The Mempool Open Source Project™. Consultez les prix du marché Bisq, lactivité d'échange et bien plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-dashboard/bisq-dashboard.component.ts</context>
<context context-type="linenumber">33</context>
@@ -848,6 +855,7 @@
</trans-unit>
<trans-unit id="meta.title.bisq.market" datatype="html">
<source>Bisq market: <x id="PH" equiv-text="pairUpperCase"/></source>
<target>Marché Bisq : <x id="PH" equiv-text="pairUpperCase"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-market/bisq-market.component.ts</context>
<context context-type="linenumber">51</context>
@@ -855,6 +863,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.market" datatype="html">
<source>See price history, current buy/sell offers, and latest trades for the <x id="PH" equiv-text="pairUpperCase"/> market on Bisq.</source>
<target>Consultez l'historique des prix, les offres d'achat/vente en cours et les dernières transactions du marché <x id="PH" equiv-text="pairUpperCase"/> sur Bisq.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-market/bisq-market.component.ts</context>
<context context-type="linenumber">52</context>
@@ -990,6 +999,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.stats" datatype="html">
<source>See high-level stats on the BSQ economy: supply metrics, number of addresses, BSQ price, market cap, and more.</source>
<target>Consultez des statistiques de haut niveau sur l'économie BSQ : mesures d'approvisionnement, nombre d'adresses, prix du BSQ, capitalisation boursière, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-stats/bisq-stats.component.ts</context>
<context context-type="linenumber">29</context>
@@ -1169,6 +1179,7 @@
</trans-unit>
<trans-unit id="d21fcec8ace7941d2bf7c822ce2003cdd9ecff43" datatype="html">
<source>Fee per weight unit</source>
<target>Tarif par unité de poids</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.html</context>
<context context-type="linenumber">68</context>
@@ -1237,6 +1248,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.transaction" datatype="html">
<source>See inputs, outputs, transaction type, burnt amount, and more for transaction with txid <x id="INTERPOLATION" equiv-text="this.txId"/>.</source>
<target>Consultez les entrées, les sorties, le type de transaction, le montant brûlé et plus encore pour la transaction avec le txid <x id="INTERPOLATION" equiv-text="this.txId"/>.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transaction/bisq-transaction.component.ts</context>
<context context-type="linenumber">51</context>
@@ -1426,6 +1438,7 @@
</trans-unit>
<trans-unit id="meta.description.bisq.transactions" datatype="html">
<source>See recent BSQ transactions: amount, txid, associated Bitcoin block, transaction type, and more.</source>
<target>Consultez les transactions BSQ récentes : montant, txid, bloc Bitcoin associé, type de transaction, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/bisq/bisq-transactions/bisq-transactions.component.ts</context>
<context context-type="linenumber">82</context>
@@ -1466,6 +1479,7 @@
</trans-unit>
<trans-unit id="9bada74bc2b36480a6db8734d56a2b89135de590" datatype="html">
<source>Become a Community Sponsor</source>
<target>Devenez un sponsor communautaire</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">39</context>
@@ -1474,6 +1488,7 @@
</trans-unit>
<trans-unit id="bef4c03ebfa29b890665fbcf6bf097b9ae29a91e" datatype="html">
<source>Become an Enterprise Sponsor</source>
<target>Devenez sponsor dentreprise</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">46</context>
@@ -1491,6 +1506,7 @@
</trans-unit>
<trans-unit id="299789f4d4817ccf915f6a5b0e48c093b646b079" datatype="html">
<source>Whale Sponsors</source>
<target>Sponsors Whale</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">202</context>
@@ -1499,6 +1515,7 @@
</trans-unit>
<trans-unit id="2dca632c813555d7153785d4b6d25cc0f04d6bcd" datatype="html">
<source>Chad Sponsors</source>
<target>Sponsors Chad</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">215</context>
@@ -1507,6 +1524,7 @@
</trans-unit>
<trans-unit id="0a441237b27eaeacbeba376cabd33921fa4bb2d6" datatype="html">
<source>OG Sponsors ❤️</source>
<target>Sponsors OG ❤️</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.html</context>
<context context-type="linenumber">228</context>
@@ -1589,6 +1607,7 @@
</trans-unit>
<trans-unit id="meta.description.about" datatype="html">
<source>Learn more about The Mempool Open Source Project®: enterprise sponsors, individual sponsors, integrations, who contributes, FOSS licensing, and more.</source>
<target>Apprenez-en davantage à propos de The Mempool Open Source Project® : sponsors d'entreprise, sponsors individuels, intégrations, qui contribue, licences FOSS, et bien plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/about/about.component.ts</context>
<context context-type="linenumber">46</context>
@@ -1819,6 +1838,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.address" datatype="html">
<source>See mempool transactions, confirmed transactions, balance, and more for <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> address <x id="INTERPOLATION" equiv-text="this.addressString"/>.</source>
<target>Consultez les transactions mempool, les transactions confirmées, le solde et bien plus encore pour l'adresse <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/> <x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> <x id="INTERPOLATION" equiv-text="this.addressString"/>.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/address/address-preview.component.ts</context>
<context context-type="linenumber">72</context>
@@ -2085,6 +2105,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>
@@ -2110,6 +2134,7 @@
</trans-unit>
<trans-unit id="meta.description.liquid.assets" datatype="html">
<source>Explore all the assets issued on the Liquid network like L-BTC, L-CAD, USDT, and more.</source>
<target>Explorez tous les actifs émis sur le réseau Liquid comme L-BTC, L-CAD, USDT, et plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/assets/assets-nav/assets-nav.component.ts</context>
<context context-type="linenumber">43</context>
@@ -2272,6 +2297,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-fee-rates" datatype="html">
<source>See Bitcoin feerates visualized over time, including minimum and maximum feerates per block along with feerates at various percentiles.</source>
<target>Consultez les tarifs Bitcoin visualisés au fil du temps, y compris les tarifs minimum et maximum par bloc ainsi que les tarifs à différents centiles.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fee-rates-graph/block-fee-rates-graph.component.ts</context>
<context context-type="linenumber">67</context>
@@ -2328,6 +2354,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-fees" datatype="html">
<source>See the average mining fees earned per Bitcoin block visualized in BTC and USD over time.</source>
<target>Consultez les frais de minage moyens gagnés par bloc Bitcoin visualisés en BTC et en USD au fil du temps.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-fees-graph/block-fees-graph.component.ts</context>
<context context-type="linenumber">68</context>
@@ -2371,6 +2398,7 @@
</trans-unit>
<trans-unit id="b1fa5b210c9670d49a6506f046d4a0c2797fd402" datatype="html">
<source>Block Health</source>
<target>Santé de bloc</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-health-graph/block-health-graph.component.html</context>
<context context-type="linenumber">6</context>
@@ -2383,6 +2411,7 @@
</trans-unit>
<trans-unit id="d7d5fcf50179ad70c938491c517efb82de2c8146" datatype="html">
<source>Block Health</source>
<target>Santé de bloc</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-health-graph/block-health-graph.component.ts</context>
<context context-type="linenumber">63</context>
@@ -2390,6 +2419,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-health" datatype="html">
<source>See Bitcoin block health visualized over time. Block health is a measure of how many expected transactions were included in an actual mined block. Expected transactions are determined using Mempool's re-implementation of Bitcoin Core's transaction selection algorithm.</source>
<target>Voir la santé des blocs Bitcoin visualisée au fil du temps. La santé d'un bloc est une mesure du nombre de transactions attendues incluses dans un bloc réellement trouvé. Les transactions attendues sont déterminées à l'aide de la ré-implémentation par Mempool de l'algorithme de sélection de transactions de Bitcoin Core.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-health-graph/block-health-graph.component.ts</context>
<context context-type="linenumber">64</context>
@@ -2421,6 +2451,7 @@
</trans-unit>
<trans-unit id="2041675390931385838" datatype="html">
<source>Health</source>
<target>Santé</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-health-graph/block-health-graph.component.ts</context>
<context context-type="linenumber">190</context>
@@ -2511,6 +2542,7 @@
</trans-unit>
<trans-unit id="a85400ca5aa86c938188f02b5fca2757d20b46ad" datatype="html">
<source>Accelerated fee rate</source>
<target>Tarif accéléré</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">33</context>
@@ -2542,6 +2574,7 @@
</trans-unit>
<trans-unit id="13f5a75f3e01e5924e45052d2f336eda8bac37e8" datatype="html">
<source>Weight</source>
<target>Poids</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">43</context>
@@ -2599,6 +2632,7 @@
</trans-unit>
<trans-unit id="42795e8b4dc68e08fbf27cf2f7e724bbc2930610" datatype="html">
<source>High sigop count</source>
<target>Nombre élevé de sigops</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">52</context>
@@ -2616,6 +2650,7 @@
</trans-unit>
<trans-unit id="c9b422e0850708663a9748e778a9d6feb4d6394e" datatype="html">
<source>Recently CPFP'd</source>
<target>Récemment CPFP</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">54</context>
@@ -2633,6 +2668,7 @@
</trans-unit>
<trans-unit id="136c04d97155209abbe3f2535bcf5cf32f91b465" datatype="html">
<source>Conflicting</source>
<target>Contradictoire</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">57</context>
@@ -2641,6 +2677,7 @@
</trans-unit>
<trans-unit id="b484583f0ce10f3341ab36750d05271d9d22c9a1" datatype="html">
<source>Accelerated</source>
<target>Accéléré</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-overview-tooltip/block-overview-tooltip.component.html</context>
<context context-type="linenumber">58</context>
@@ -2666,6 +2703,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-rewards" datatype="html">
<source>See Bitcoin block rewards in BTC and USD visualized over time. Block rewards are the total funds miners earn from the block subsidy and fees.</source>
<target>Consultez les récompenses des blocs Bitcoin en BTC et en USD visualisées au fil du temps. Les récompenses globales correspondent au total des fonds que les mineurs gagnent grâce à la récompense de bloc et aux frais.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-rewards-graph/block-rewards-graph.component.ts</context>
<context context-type="linenumber">66</context>
@@ -2690,6 +2728,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.block-sizes" datatype="html">
<source>See Bitcoin block sizes (MB) and block weights (weight units) visualized over time.</source>
<target>Consultez la taille des blocs Bitcoin (Mo) et le poids des blocs (unités de poids) visualisés au fil du temps.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-sizes-weights-graph/block-sizes-weights-graph.component.ts</context>
<context context-type="linenumber">63</context>
@@ -2805,6 +2844,7 @@
</trans-unit>
<trans-unit id="meta.description.liquid.block" datatype="html">
<source>See size, weight, fee range, included transactions, and more for Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> block <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (<x id="BLOCK_ID" equiv-text="block.id"/>).</source>
<target>Consultez la taille, le poids, la fourchette de frais, les transactions incluses et bien plus encore pour le bloc Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (<x id="BLOCK_ID" equiv-text="block.id"/>).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-view/block-view.component.ts</context>
<context context-type="linenumber">112</context>
@@ -2820,6 +2860,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.block" datatype="html">
<source>See size, weight, fee range, included transactions, audit (expected v actual), and more for Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> block <x id="BLOCK_HEIGHT" equiv-text="block.height"/> (<x id="BLOCK_ID" equiv-text="block.id"/>).</source>
<target>Consultez la taille, le poids, la fourchette de frais, les transactions incluses, l'audit (attendu et réel) et bien plus encore pour le bloc Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> <x id="BLOCK_HEIGHT" equiv-text="block.height"/> ( <x id="BLOCK_ID" equiv-text="block.id"/>).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block-view/block-view.component.ts</context>
<context context-type="linenumber">114</context>
@@ -2908,6 +2949,7 @@
</trans-unit>
<trans-unit id="e170a90ee0d3a604adf439a60c890caff9152466" datatype="html">
<source>This block does not belong to the main chain, it has been replaced by:</source>
<target>Ce bloc n'appartient pas à la chaîne principale, il a été remplacé par :</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block.component.html</context>
<context context-type="linenumber">5</context>
@@ -2943,6 +2985,7 @@
</trans-unit>
<trans-unit id="0dc973e4853621b49d9e31be902a0680334f632d" datatype="html">
<source>Stale</source>
<target>Vicié</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/block/block.component.html</context>
<context context-type="linenumber">30</context>
@@ -3408,6 +3451,7 @@
</trans-unit>
<trans-unit id="m8a7b4bd44c0ac71b2e72de0398b303257f7d2f54" datatype="html">
<source>Blocks</source>
<target>Blocs</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.ts</context>
<context context-type="linenumber">59</context>
@@ -3415,6 +3459,7 @@
</trans-unit>
<trans-unit id="meta.description.liquid.blocks" datatype="html">
<source>See the most recent Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> blocks along with basic stats such as block height, block size, and more.</source>
<target>Consultez les blocs Liquid<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> les plus récents ainsi que les statistiques de base telles que la hauteur et la taille des blocs, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.ts</context>
<context context-type="linenumber">62</context>
@@ -3422,6 +3467,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.blocks" datatype="html">
<source>See the most recent Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> blocks along with basic stats such as block height, block reward, block size, and more.</source>
<target>Consultez les blocs Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> les plus récents ainsi que les statistiques de base telles que la hauteur du bloc, la récompense du bloc, la taille du bloc, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/blocks-list/blocks-list.component.ts</context>
<context context-type="linenumber">64</context>
@@ -3429,6 +3475,7 @@
</trans-unit>
<trans-unit id="cf8caac4de0166eae6cd0fdfd010ee92b995cd96" datatype="html">
<source>Calculator</source>
<target>Calculatrice</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/calculator/calculator.component.html</context>
<context context-type="linenumber">3</context>
@@ -3466,6 +3513,7 @@
</trans-unit>
<trans-unit id="b7dde2cf8ec2fcd328295c9c7fcc944c4d3720b6" datatype="html">
<source>Memory Usage</source>
<target>Utilisation de mémoire</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/clock/clock.component.html</context>
<context context-type="linenumber">65</context>
@@ -3545,6 +3593,7 @@
</trans-unit>
<trans-unit id="1bb6965f8e1bbe40c076528ffd841da86f57f119" datatype="html">
<source><x id="INTERPOLATION" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;blocks&lt;/span&gt;&lt;/ng-template&gt; &lt;ng-"/> <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;"/>blocks<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></source>
<target><x id="INTERPOLATION" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;blocks&lt;/span&gt;&lt;/ng-template&gt; &lt;ng-"/> <x id="START_TAG_SPAN" ctype="x-span" equiv-text="&lt;span class=&quot;shared-block&quot;&gt;"/>blocs<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="&lt;/span&gt;"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/difficulty-mining/difficulty-mining.component.html</context>
<context context-type="linenumber">10,11</context>
@@ -3848,6 +3897,7 @@
</trans-unit>
<trans-unit id="93168b4de564d2c5d21d67cf2fb263f27b45e4c8" datatype="html">
<source>WU/s</source>
<target>UE/s</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/footer/footer.component.html</context>
<context context-type="linenumber">14</context>
@@ -4068,6 +4118,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.hashrate" datatype="html">
<source>See hashrate and difficulty for the Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.network)"/> network visualized over time.</source>
<target>Consultez le taux de hachage et la difficulté du réseau Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.network)"/> visualisés au fil du temps.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/hashrate-chart/hashrate-chart.component.ts</context>
<context context-type="linenumber">75</context>
@@ -4175,6 +4226,7 @@
</trans-unit>
<trans-unit id="meta.description.mempool-block" datatype="html">
<source>See stats for <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transactions in the mempool: fee range, aggregate size, and more. Mempool blocks are updated in real-time as the network receives new transactions.</source>
<target>Consultez les statistiques des transactions <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> dans la mempool: plage de frais, taille globale, etc. Les blocs mempool sont mis à jour en temps réel à mesure que le réseau reçoit de nouvelles transactions.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-block/mempool-block.component.ts</context>
<context context-type="linenumber">58</context>
@@ -4198,6 +4250,7 @@
</trans-unit>
<trans-unit id="8177873832400820695" datatype="html">
<source>Count</source>
<target>Compter</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mempool-graph/mempool-graph.component.ts</context>
<context context-type="linenumber">325</context>
@@ -4225,6 +4278,7 @@
</trans-unit>
<trans-unit id="287d3301a32a65a1b31116bda5d3a6463158c42a" datatype="html">
<source>Sign in</source>
<target>Se connecter</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/menu/menu.component.html</context>
<context context-type="linenumber">10</context>
@@ -4251,6 +4305,7 @@
</trans-unit>
<trans-unit id="93ce500c36b94b52219495ae1491efc2fca40cb6" datatype="html">
<source>Recent Blocks</source>
<target>Blocs récents</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.html</context>
<context context-type="linenumber">52</context>
@@ -4276,6 +4331,7 @@
</trans-unit>
<trans-unit id="meta.description.mining.dashboard" datatype="html">
<source>Get real-time Bitcoin mining stats like hashrate, difficulty adjustment, block rewards, pool dominance, and more.</source>
<target>Obtenez des statistiques minières Bitcoin en temps réel telles que le taux de hachage, l'ajustement de la difficulté, les récompenses de bloc, la domination du pool, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/mining-dashboard/mining-dashboard.component.ts</context>
<context context-type="linenumber">21</context>
@@ -4292,6 +4348,7 @@
</trans-unit>
<trans-unit id="4e338e7daa64c7a074cee3824fbd7425e5b7c9a5" datatype="html">
<source>Pools Luck</source>
<target>Chance dans les piscines</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">9</context>
@@ -4322,6 +4379,7 @@
</trans-unit>
<trans-unit id="ade0bf412a0fae1e4672505fc1fa79ade185db05" datatype="html">
<source>Pools Count</source>
<target>Nombre de piscines</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">17</context>
@@ -4436,6 +4494,7 @@
</trans-unit>
<trans-unit id="5d680aaa8e24bb235cf4fbeff3df0bfc8e2f564e" datatype="html">
<source>Empty Blocks</source>
<target>Blocs vides</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.html</context>
<context context-type="linenumber">98</context>
@@ -4461,6 +4520,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.pool-ranking" datatype="html">
<source>See the top Bitcoin mining pools ranked by number of blocks mined, over your desired timeframe.</source>
<target>Consultez les meilleurs pools de minage Bitcoin classés par nombre de blocs extraits, sur la période souhaitée.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool-ranking/pool-ranking.component.ts</context>
<context context-type="linenumber">59</context>
@@ -4550,6 +4610,7 @@
</trans-unit>
<trans-unit id="meta.description.mining.pool" datatype="html">
<source>See mining pool stats for <x id="PH" equiv-text="poolStats.pool.name"/>: most recent mined blocks, hashrate over time, total block reward to date, known coinbase addresses, and more.</source>
<target>Consultez les statistiques de la pool de minage <x id="PH" equiv-text="poolStats.pool.name"/> : les blocs extraits les plus récents, le taux de hachage au fil du temps, la récompense totale du bloc à ce jour, les adresses coinbase connues, et plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool-preview.component.ts</context>
<context context-type="linenumber">86</context>
@@ -4616,6 +4677,7 @@
</trans-unit>
<trans-unit id="3dc78651b2810cbb6e830fe7e57499d8cf6a8e4d" datatype="html">
<source>Blocks (24h)</source>
<target>Blocs (24h)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">146</context>
@@ -4730,6 +4792,7 @@
</trans-unit>
<trans-unit id="meta.title.push-tx" datatype="html">
<source>Broadcast Transaction</source>
<target>Transaction de diffusion</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/push-transaction/push-transaction.component.ts</context>
<context context-type="linenumber">31</context>
@@ -4737,6 +4800,7 @@
</trans-unit>
<trans-unit id="meta.description.push-tx" datatype="html">
<source>Broadcast a transaction to the <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> network using the transaction's hash.</source>
<target>Diffusez une transaction sur le réseau <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> en utilisant le hachage de la transaction.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/push-transaction/push-transaction.component.ts</context>
<context context-type="linenumber">32</context>
@@ -4744,6 +4808,7 @@
</trans-unit>
<trans-unit id="5e3d5a82750902f159122fcca487b07f1af3141f" datatype="html">
<source>RBF Replacements</source>
<target>Remplacements RBF</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">2</context>
@@ -4756,6 +4821,7 @@
</trans-unit>
<trans-unit id="8a9b3afe9486474f0d7767605fe99af99c8ea430" datatype="html">
<source>Full RBF</source>
<target>RBF complet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">24</context>
@@ -4772,6 +4838,7 @@
</trans-unit>
<trans-unit id="c88914ee712e3ab5ad5f88de8a6ed12050919ccb" datatype="html">
<source>There are no replacements in the mempool yet!</source>
<target>Il n'y a pas encore de remplaçants dans le pool de mémoire !</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">34</context>
@@ -4780,6 +4847,7 @@
</trans-unit>
<trans-unit id="meta.description.rbf-list" datatype="html">
<source>See the most recent RBF replacements on the Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> network, updated in real-time.</source>
<target>Découvrez les remplacements RBF les plus récents sur le réseau Bitcoin<x id="PH" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>, mis à jour en temps réel.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.ts</context>
<context context-type="linenumber">59</context>
@@ -4825,6 +4893,7 @@
</trans-unit>
<trans-unit id="aa28c3afcb8b1a556fc1e1842e48a57f24fd643f" datatype="html">
<source>Status</source>
<target>Statut</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-timeline/rbf-timeline-tooltip.component.html</context>
<context context-type="linenumber">33</context>
@@ -4842,6 +4911,7 @@
</trans-unit>
<trans-unit id="eb3b032a755fc367f7f6e957d0c7dc9d6db49464" datatype="html">
<source>RBF</source>
<target>FBR</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-timeline/rbf-timeline-tooltip.component.html</context>
<context context-type="linenumber">36</context>
@@ -5061,6 +5131,7 @@
</trans-unit>
<trans-unit id="d0e134a0886ae71207e912575d226525062b62f1" datatype="html">
<source>Clock (Mempool)</source>
<target>Horloge (Mempool)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">17</context>
@@ -5113,6 +5184,7 @@
</trans-unit>
<trans-unit id="68d44b7bd049ae93c2bc15973eb5266aec64693e" datatype="html">
<source>Cap outliers</source>
<target>Valeurs aberrantes du plafond</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">122</context>
@@ -5121,6 +5193,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.graphs.mempool" datatype="html">
<source>See mempool size (in MvB) and transactions per second (in vB/s) visualized over time.</source>
<target>Voir la taille de la mempool (en MvB) et les transactions par seconde (en vB/s) visualisées au fil du temps.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.ts</context>
<context context-type="linenumber">67</context>
@@ -5128,6 +5201,7 @@
</trans-unit>
<trans-unit id="meta.description.tv" datatype="html">
<source>See Bitcoin blocks and mempool congestion in real-time in a simplified format perfect for a TV.</source>
<target>Visualisez les blocs Bitcoin et la congestion de la mempool en temps réel dans un format simplifié parfait pour une TV.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/television/television.component.ts</context>
<context context-type="linenumber">40</context>
@@ -5340,6 +5414,7 @@
</trans-unit>
<trans-unit id="meta.description.bitcoin.transaction" datatype="html">
<source>Get real-time status, addresses, fees, script info, and more for <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transaction with txid {txid}.</source>
<target>Obtenez le statut en temps réel, les adresses, les frais, les informations sur le script et bien plus encore pour cette transaction <x id="PH" equiv-text="this.stateService.network==='liquid'||this.stateService.network==='liquidtestnet'?'Liquid':'Bitcoin'"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/>.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction-preview.component.ts</context>
<context context-type="linenumber">91</context>
@@ -5381,6 +5456,7 @@
</trans-unit>
<trans-unit id="913e89d2d1ae354079cccf48b3d3f4ebf2e74080" datatype="html">
<source>Accelerate</source>
<target>Accélérer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">123</context>
@@ -5418,6 +5494,7 @@
</trans-unit>
<trans-unit id="03721a62015a76e794be64ba2b7e053e801215ea" datatype="html">
<source>RBF History</source>
<target>Historique RBF</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">218</context>
@@ -5489,6 +5566,7 @@
</trans-unit>
<trans-unit id="a8a4dd861f790141e19f773153cf42b5d0b0e6b6" datatype="html">
<source>Adjusted vsize</source>
<target>Taille ajustée</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">298</context>
@@ -5507,6 +5585,7 @@
</trans-unit>
<trans-unit id="3dd65e8fa7035988a691aadcb583862c2a9e336a" datatype="html">
<source>Sigops</source>
<target>Sigops</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">320</context>
@@ -5534,6 +5613,7 @@
</trans-unit>
<trans-unit id="8b01e0411c7160bfee109e504c84ecee5079c326" datatype="html">
<source>Accelerated fee rate</source>
<target>Tarif accéléré</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction.component.html</context>
<context context-type="linenumber">516</context>
@@ -5889,6 +5969,7 @@
</trans-unit>
<trans-unit id="4fe744df6d36b5e9b0afab728b77fc635b99f040" datatype="html">
<source>Recent Replacements</source>
<target>Remplacements récents</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">79</context>
@@ -5897,6 +5978,7 @@
</trans-unit>
<trans-unit id="23c872b0336e20284724607f2887da39bd8142c3" datatype="html">
<source>Previous fee</source>
<target>Frais antérieurs</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">86</context>
@@ -5905,6 +5987,7 @@
</trans-unit>
<trans-unit id="df33bef035883b7afeb388977087f99ab5a54409" datatype="html">
<source>New fee</source>
<target>Nouveaux frais</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">87</context>
@@ -5913,6 +5996,7 @@
</trans-unit>
<trans-unit id="aa6ce7e6e6fe5cd080713965451f25bca15a2a25" datatype="html">
<source>Recent Transactions</source>
<target>Transactions récentes</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">153</context>
@@ -5950,6 +6034,7 @@
</trans-unit>
<trans-unit id="9dfdbeb922d811d7b7b3fecd48360a059e52aaba" datatype="html">
<source>Incoming Transactions</source>
<target>Transactions entrantes</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/dashboard/dashboard.component.html</context>
<context context-type="linenumber">259</context>
@@ -5958,6 +6043,7 @@
</trans-unit>
<trans-unit id="999bb1a0150c2815a6b4dd64a1850e763603e525" datatype="html">
<source><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space mer"/>mempool.space merely provides data about the Bitcoin network.<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> It cannot help you with retrieving funds, wallet issues, etc.<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/>For any such requests, you need to get in touch with the entity that helped make the transaction (wallet software, exchange company, etc).<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/></source>
<target><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/><x id="START_BOLD_TEXT" ctype="x-b" equiv-text="mempool.space mer"/>mempool.space fournit simplement des données sur le réseau Bitcoin.<x id="CLOSE_BOLD_TEXT" ctype="x-b" equiv-text="&lt;/b&gt;"/> Nous ne pouvons pas vous aider à récupérer des fonds, à résoudre des problèmes de portefeuille, etc.<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/><x id="START_PARAGRAPH" ctype="x-p" equiv-text="For any such requ"/>Pour toute demande de ce type, vous devez contacter l'entité qui a aidé à effectuer la transaction (logiciel de portefeuille, échange, etc.).<x id="CLOSE_PARAGRAPH" ctype="x-p" equiv-text="&lt;/p&gt;"/></target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/api-docs/api-docs.component.html</context>
<context context-type="linenumber">15,16</context>
@@ -6052,6 +6138,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.faq" datatype="html">
<source>FAQ</source>
<target>FAQ</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">45</context>
@@ -6059,6 +6146,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.faq" datatype="html">
<source>Get answers to common questions like: What is a mempool? Why isn't my transaction confirming? How can I run my own instance of The Mempool Open Source Project? And more.</source>
<target>Obtenez des réponses aux questions courantes telles que : Quest-ce quune mempool ? Pourquoi ma transaction n'est-elle pas confirmée ? Comment puis-je utiliser ma propre instance du projet Open Source Mempool ? Et plus.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">46</context>
@@ -6066,6 +6154,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.rest" datatype="html">
<source>REST API</source>
<target>API REST</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">49</context>
@@ -6073,6 +6162,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-liquid" datatype="html">
<source>Documentation for the liquid.network REST API service: get info on addresses, transactions, assets, blocks, and more.</source>
<target>Documentation pour le service API REST liquid.network : obtenez des informations sur les adresses, les transactions, les actifs, les blocs, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">51</context>
@@ -6080,6 +6170,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-bisq" datatype="html">
<source>Documentation for the bisq.markets REST API service: get info on recent trades, current offers, transactions, network state, and more.</source>
<target>Documentation pour le service API REST bisq.markets : obtenez des informations sur les transactions récentes, les offres en cours, les transactions, l'état du réseau, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">53</context>
@@ -6087,6 +6178,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.rest-bitcoin" datatype="html">
<source>Documentation for the mempool.space REST API service: get info on addresses, transactions, blocks, fees, mining, the Lightning network, and more.</source>
<target>Documentation pour le service API REST mempool.space : obtenez des informations sur les adresses, les transactions, les blocs, les frais, le minage, le réseau Lightning, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">55</context>
@@ -6094,6 +6186,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.websocket" datatype="html">
<source>WebSocket API</source>
<target>API WebSocket</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">59</context>
@@ -6101,6 +6194,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.websocket-liquid" datatype="html">
<source>Documentation for the liquid.network WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more.</source>
<target>Documentation pour le service API liquid.network WebSocket : obtenez des informations en temps réel sur les blocs, les pools de mémoire, les transactions, les adresses, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">61</context>
@@ -6108,6 +6202,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.websocket-bitcoin" datatype="html">
<source>Documentation for the mempool.space WebSocket API service: get real-time info on blocks, mempools, transactions, addresses, and more.</source>
<target>Documentation pour le service API WebSocket mempool.space : obtenez des informations en temps réel sur les blocs, les pools de mémoire, les transactions, les adresses, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">63</context>
@@ -6115,6 +6210,7 @@
</trans-unit>
<trans-unit id="meta.title.docs.electrum" datatype="html">
<source>Electrum RPC</source>
<target>Électrum RPC</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">67</context>
@@ -6122,6 +6218,7 @@
</trans-unit>
<trans-unit id="meta.description.docs.electrumrpc" datatype="html">
<source>Documentation for our Electrum RPC interface: get instant, convenient, and reliable access to an Esplora instance.</source>
<target>Documentation pour notre interface Electrum RPC : obtenez un accès instantané, pratique et fiable à une instance Esplora.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/docs/docs/docs.component.ts</context>
<context context-type="linenumber">68</context>
@@ -6434,6 +6531,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.channel" datatype="html">
<source>Overview for Lightning channel <x id="PH" equiv-text="params.get('short_id')"/>. See channel capacity, the Lightning nodes involved, related on-chain transactions, and more.</source>
<target>Présentation du canal Lightning <x id="PH" equiv-text="params.get('short_id')"/>. Consultez la capacité du canal, les nœuds Lightning impliqués, les transactions en chaîne associées, et bien plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/channel/channel-preview.component.ts</context>
<context context-type="linenumber">37</context>
@@ -6932,6 +7030,7 @@
</trans-unit>
<trans-unit id="ec42ed2d917189340598d7993c29b30c7fd32af4" datatype="html">
<source>Connect</source>
<target>Connecter</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/group/group.component.html</context>
<context context-type="linenumber">73</context>
@@ -6982,6 +7081,7 @@
</trans-unit>
<trans-unit id="34e302a08660d9860dda71e3f350351d34bda498" datatype="html">
<source>Penalties</source>
<target>Pénalités</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/justice-list/justice-list.component.html</context>
<context context-type="linenumber">4</context>
@@ -7059,6 +7159,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.dashboard" datatype="html">
<source>Get stats on the Lightning network (aggregate capacity, connectivity, etc) and Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).</source>
<target>Obtenez des statistiques sur le réseau Lightning (capacité globale, connectivité, etc.), les nœuds Lightning (canaux, liquidité, etc.) et les canaux Lightning (statut, frais, etc.).</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts</context>
<context context-type="linenumber">28</context>
@@ -7168,6 +7269,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node" datatype="html">
<source>Overview for the Lightning network node named <x id="PH" equiv-text="node.alias"/>. See channels, capacity, location, fee stats, and more.</source>
<target>Présentation du nœud de réseau Lightning nommé <x id="PH" equiv-text="node.alias"/>. Consultez les chaînes, la capacité, lemplacement, les statistiques de frais et bien plus encore.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node-preview.component.ts</context>
<context context-type="linenumber">52</context>
@@ -7228,6 +7330,7 @@
</trans-unit>
<trans-unit id="a737eb6814b234b0fd00e81b645b95a396711f15" datatype="html">
<source>Decoded</source>
<target>Décodé</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/node/node.component.html</context>
<context context-type="linenumber">136</context>
@@ -7366,6 +7469,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node-map" datatype="html">
<source>See the channels of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details.</source>
<target>Visualisez les canaux des nœuds du réseau non Tor Lightning visualisés sur une carte du monde. Passez la souris/appuyez sur des points sur la carte pour connaître les noms et les détails des nœuds.</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>
@@ -7390,6 +7494,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.node-channel-map" datatype="html">
<source>See the locations of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details.</source>
<target>Consultez les emplacements des nœuds du réseau non Tor Lightning visualisés sur une carte du monde. Passez la souris/appuyez sur des points sur la carte pour connaître les noms et les détails des nœuds.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-map/nodes-map.component.ts</context>
<context context-type="linenumber">51</context>
@@ -7397,6 +7502,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-network" datatype="html">
<source>See the number of Lightning network nodes visualized over time by network: clearnet only (IPv4, IPv6), darknet (Tor, I2p, cjdns), and both.</source>
<target>Consultez le nombre de nœuds de réseau Lightning visualisés au fil du temps par réseau : clearnet uniquement (IPv4, IPv6), darknet (Tor, I2p, cjdns) et les deux.</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">68</context>
@@ -7465,6 +7571,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-country-overview" datatype="html">
<source>See a geographical breakdown of the Lightning network: how many Lightning nodes are hosted in countries around the world, aggregate BTC capacity for each country, and more.</source>
<target>Consultez une répartition géographique du réseau Lightning : combien de nœuds Lightning sont hébergés dans les pays du monde, capacité BTC globale pour chaque pays, et plus encore.</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">47</context>
@@ -7535,6 +7642,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-country" datatype="html">
<source>Explore all the Lightning nodes hosted in <x id="PH" equiv-text="response.country.en"/> and see an overview of each node's capacity, number of open channels, and more.</source>
<target>Explorez tous les nœuds Lightning hébergés dans <x id="PH" equiv-text="response.country.en"/> et obtenez un aperçu de la capacité de chaque nœud, du nombre de canaux ouverts, et bien plus encore.</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">36</context>
@@ -7685,6 +7793,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.nodes-isp" datatype="html">
<source>Browse all Bitcoin Lightning nodes using the <x id="PH" equiv-text="response.isp"/> [AS<x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>] ISP and see aggregate stats like total number of nodes, total capacity, and more for the ISP.</source>
<target>Parcourez tous les nœuds Bitcoin Lightning à l'aide du FAI <x id="PH" equiv-text="response.isp"/> [AS<x id="PH_1" equiv-text="this.route.snapshot.params.isp"/>] et consultez les statistiques globales telles que le nombre total de nœuds, la capacité totale, et plus encore pour le FAI.</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">45</context>
@@ -7740,6 +7849,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.oldest" datatype="html">
<source>See the oldest nodes on the Lightning network along with their capacity, number of channels, location, etc.</source>
<target>Consultez les nœuds les plus anciens du réseau Lightning ainsi que leur capacité, leur nombre de canaux, leur emplacement, etc.</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">28</context>
@@ -7747,6 +7857,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.liquidity" datatype="html">
<source>See Lightning nodes with the most BTC liquidity deployed along with high-level stats like number of open channels, location, node age, and more.</source>
<target>Consultez les nœuds Lightning avec le plus de liquidité BTC déployé ainsi que des statistiques de haut niveau telles que le nombre de canaux ouverts, l'emplacement, l'âge du nœud, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-capacity/top-nodes-per-capacity.component.ts</context>
<context context-type="linenumber">34</context>
@@ -7754,6 +7865,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.ranking.channels" datatype="html">
<source>See Lightning nodes with the most channels open along with high-level stats like total node capacity, node age, and more.</source>
<target>Consultez les nœuds Lightning avec le plus grand nombre de canaux ouverts, ainsi que des statistiques de haut niveau telles que la capacité totale des nœuds, l'âge des nœuds, etc.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-ranking/top-nodes-per-channels/top-nodes-per-channels.component.ts</context>
<context context-type="linenumber">38</context>
@@ -7778,6 +7890,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.rankings-dashboard" datatype="html">
<source>See top the Lightning network nodes ranked by liquidity, connectivity, and age.</source>
<target>Découvrez les meilleurs nœuds du réseau Lightning classés par liquidité, connectivité et âge.</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">23</context>
@@ -7785,6 +7898,7 @@
</trans-unit>
<trans-unit id="meta.description.lightning.stats-chart" datatype="html">
<source>See the capacity of the Lightning network visualized over time in terms of the number of open channels and total bitcoin capacity.</source>
<target>Visualisez la capacité du réseau Lightning au fil du temps en termes de nombre de canaux ouverts et de capacité totale de Bitcoin.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/statistics-chart/lightning-statistics-chart.component.ts</context>
<context context-type="linenumber">67</context>
@@ -7792,6 +7906,7 @@
</trans-unit>
<trans-unit id="8e623d3cfecb7c560c114390db53c1f430ffd0de" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> confirmation</source>
<target><x id="INTERPOLATION" equiv-text="{{ i }}"/>confirmation</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">4</context>
@@ -7801,6 +7916,7 @@
</trans-unit>
<trans-unit id="bc5b0a2631f0b7bc71aaec6aa6f01af21f9a80d4" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ i }}"/> confirmations</source>
<target><x id="INTERPOLATION" equiv-text="{{ i }}"/> confirmations</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">5</context>
@@ -7810,6 +7926,7 @@
</trans-unit>
<trans-unit id="a001c3d27d5fe4a7a362a6089b5b5020ef8c1c95" datatype="html">
<source>Replaced</source>
<target>Remplacée</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">12</context>
@@ -7819,6 +7936,7 @@
</trans-unit>
<trans-unit id="58fbcd58e305ab289b99fad67d223f3e83ddb755" datatype="html">
<source>Removed</source>
<target>Supprimée</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/confirmations/confirmations.component.html</context>
<context context-type="linenumber">15</context>
@@ -7838,6 +7956,7 @@
</trans-unit>
<trans-unit id="57a6f49237ac457ecc67fabdf1361a112ccdbf93" datatype="html">
<source>sat/WU</source>
<target>sat/WU</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/fee-rate/fee-rate.component.html</context>
<context context-type="linenumber">3</context>
@@ -7847,6 +7966,7 @@
</trans-unit>
<trans-unit id="5ce2bda884ea801c34a1a6c23627d9a5e08f0a82" datatype="html">
<source>My Account</source>
<target>Mon compte</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">25</context>
@@ -7859,6 +7979,7 @@
</trans-unit>
<trans-unit id="ba4f24bf9bf3dc4db3d6bc1b8b63339295f0b806" datatype="html">
<source>Sign In</source>
<target>Se connecter</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">26</context>
@@ -7871,6 +7992,7 @@
</trans-unit>
<trans-unit id="1773b1dad3e4b72bca77621985366b9e6a92ae28" datatype="html">
<source>Explore</source>
<target>Explorer</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">41</context>
@@ -7879,6 +8001,7 @@
</trans-unit>
<trans-unit id="52dd0ddd9ab3ea7caafcb4d6ac95e9459ef635f5" datatype="html">
<source>Connect to our Nodes</source>
<target>Connectez-vous à nos nœuds</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">46</context>
@@ -7887,6 +8010,7 @@
</trans-unit>
<trans-unit id="1cd6dc07ed789f4013d299b031200224977cbb8b" datatype="html">
<source>API Documentation</source>
<target>Documentation API</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">47</context>
@@ -7895,6 +8019,7 @@
</trans-unit>
<trans-unit id="04dfb6eb5a67d7fa19fb24f0e50324ea63fd8f08" datatype="html">
<source>Learn</source>
<target>Apprendre</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">50</context>
@@ -7903,6 +8028,7 @@
</trans-unit>
<trans-unit id="14f76d294f3ae892e8033d60bb960701cafca66f" datatype="html">
<source>What is a mempool?</source>
<target>Qu'est-ce qu'une mempool ?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">51</context>
@@ -7911,6 +8037,7 @@
</trans-unit>
<trans-unit id="8ac787087e3eec254d15a4e16492f8877107087b" datatype="html">
<source>What is a block explorer?</source>
<target>Qu'est-ce qu'un explorateur de blocs ?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">52</context>
@@ -7919,6 +8046,7 @@
</trans-unit>
<trans-unit id="0ab3729578bb613995fc5c90c4d7aa45588dd2a1" datatype="html">
<source>What is a mempool explorer?</source>
<target>Quest-ce quun explorateur mempool ?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">53</context>
@@ -7927,6 +8055,7 @@
</trans-unit>
<trans-unit id="8fe988a9cb02c11f99631ca85721d34d67fc32ff" datatype="html">
<source>Why isn't my transaction confirming?</source>
<target>Pourquoi ma transaction n'est-elle pas confirmée ?</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">54</context>
@@ -7935,6 +8064,7 @@
</trans-unit>
<trans-unit id="03f766a5a2abdbfbdcc2b6135691b9fb1f2ed530" datatype="html">
<source>More FAQs »</source>
<target>Voir plus »</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">55</context>
@@ -7943,6 +8073,7 @@
</trans-unit>
<trans-unit id="7a1c82a943fc99d3080aeffeeb7d21f0726ad8cc" datatype="html">
<source>Networks</source>
<target>Réseaux</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">59</context>
@@ -7951,6 +8082,7 @@
</trans-unit>
<trans-unit id="f96488094a57809ea9bfe4a2f2bf91af66a0d0a3" datatype="html">
<source>Mainnet Explorer</source>
<target>Explorateur Mainnet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">60</context>
@@ -7959,6 +8091,7 @@
</trans-unit>
<trans-unit id="a31347c0f3ec966c373229584cfb7bd6725a0e64" datatype="html">
<source>Testnet Explorer</source>
<target>Explorateur Testnet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">61</context>
@@ -7967,6 +8100,7 @@
</trans-unit>
<trans-unit id="c9bf4b5d16994e42297cbe174e831a7edd9cfe72" datatype="html">
<source>Signet Explorer</source>
<target>Explorateur Signet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">62</context>
@@ -7975,6 +8109,7 @@
</trans-unit>
<trans-unit id="c127ef3218deed36fb86af83def0b54846f92252" datatype="html">
<source>Liquid Testnet Explorer</source>
<target>Explorateur Liquid Testnet</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">63</context>
@@ -7983,6 +8118,7 @@
</trans-unit>
<trans-unit id="3c07f1c84d76a9999153e87343fd642852bb6d34" datatype="html">
<source>Liquid Explorer</source>
<target>Explorateur Liquid</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">64</context>
@@ -7991,6 +8127,7 @@
</trans-unit>
<trans-unit id="16e770142bcac84dce7dfb9840d11961ee87ae6c" datatype="html">
<source>Bisq Explorer</source>
<target>Explorateur Bisq</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">65</context>
@@ -7999,6 +8136,7 @@
</trans-unit>
<trans-unit id="fefee13017c2b85143cd131ee253e327a14053a0" datatype="html">
<source>Tools</source>
<target>Outils</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">69</context>
@@ -8007,6 +8145,7 @@
</trans-unit>
<trans-unit id="8c23995422ac012b80a2369a878b199c39271906" datatype="html">
<source>Clock (Mined)</source>
<target>Horloge (trouvé)</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">71</context>
@@ -8015,6 +8154,7 @@
</trans-unit>
<trans-unit id="9a91783e9c0f790ed49edae730f9156070ed9dd5" datatype="html">
<source>Legal</source>
<target>Légal</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">76</context>
@@ -8043,6 +8183,7 @@
</trans-unit>
<trans-unit id="6a0a8485405b9b289101e52a46e282342c8dc9e0" datatype="html">
<source>Trademark Policy</source>
<target>Politique en matière de marques</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/global-footer/global-footer.component.html</context>
<context context-type="linenumber">79</context>
@@ -8052,6 +8193,7 @@
</trans-unit>
<trans-unit id="64dd13424d9486cf3d680d934987ec685bac0b3d" datatype="html">
<source>This is a test network. Coins have no value.</source>
<target>Il s'agit d'un réseau de test. Les tokens n'ont aucune valeur.</target>
<context-group purpose="location">
<context context-type="sourcefile">src/app/shared/components/testnet-alert/testnet-alert.component.html</context>
<context context-type="linenumber">3</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2072,6 +2072,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -1949,6 +1949,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2082,6 +2082,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2105,6 +2105,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -2085,6 +2085,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -1698,7 +1698,7 @@
</context-group>
</trans-unit>
<trans-unit id="meta.description.bitcoin.address" datatype="html">
<source>See mempool transactions, confirmed transactions, balance, and more for <x id="PH" equiv-text="this.stateService.network===&apos;liquid&apos;||this.stateService.network===&apos;liquidtestnet&apos;?&apos;Liquid&apos;:&apos;Bitcoin&apos;"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> address <x id="INTERPOLATION" equiv-text="this.addressString"/>.</source>
<source>See mempool transactions, confirmed transactions, balance, and more for <x id="PH" equiv-text="this.stateService.network===&apos;liquid&apos;||this.stateService.network===&apos;liquidtestnet&apos;?&apos;Liquid&apos;:&apos;Bitcoin&apos;"/> <x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> address <x id="INTERPOLATION" equiv-text="this.addressString"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/address/address-preview.component.ts</context>
<context context-type="linenumber">72</context>
@@ -2256,7 +2256,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts</context>
<context context-type="linenumber">215</context>
<context context-type="linenumber">216</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-map/nodes-map.component.ts</context>
@@ -3774,7 +3774,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.html</context>
<context context-type="linenumber">6</context>
<context context-type="linenumber">19</context>
</context-group>
<note priority="1" from="description">lightning.nodes-channels-world-map</note>
</trans-unit>
@@ -5024,7 +5024,7 @@
<note priority="1" from="description">transactions-list.coinbase</note>
</trans-unit>
<trans-unit id="meta.description.bitcoin.transaction" datatype="html">
<source>Get real-time status, addresses, fees, script info, and more for <x id="PH" equiv-text="this.stateService.network===&apos;liquid&apos;||this.stateService.network===&apos;liquidtestnet&apos;?&apos;Liquid&apos;:&apos;Bitcoin&apos;"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transaction with txid {txid}.</source>
<source>Get real-time status, addresses, fees, script info, and more for <x id="PH" equiv-text="this.stateService.network===&apos;liquid&apos;||this.stateService.network===&apos;liquidtestnet&apos;?&apos;Liquid&apos;:&apos;Bitcoin&apos;"/><x id="PH_1" equiv-text="seoDescriptionNetwork(this.stateService.network)"/> transaction with txid <x id="PH_2" equiv-text="this.txId"/>.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/transaction/transaction-preview.component.ts</context>
<context context-type="linenumber">91</context>
@@ -6629,7 +6629,7 @@
<note priority="1" from="description">lightning.connectivity-ranking</note>
</trans-unit>
<trans-unit id="meta.description.lightning.dashboard" datatype="html">
<source>Get stats on the Lightning network (aggregate capacity, connectivity, etc) and Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).</source>
<source>Get stats on the Lightning network (aggregate capacity, connectivity, etc), Lightning nodes (channels, liquidity, etc) and Lightning channels (status, fees, etc).</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/lightning-dashboard/lightning-dashboard.component.ts</context>
<context context-type="linenumber">28</context>
@@ -6886,7 +6886,7 @@
<source>(Tor nodes excluded)</source>
<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</context>
<context context-type="linenumber">21</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-map/nodes-map.component.html</context>
@@ -6906,21 +6906,21 @@
<source>Lightning Nodes Channels World Map</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts</context>
<context context-type="linenumber">68</context>
<context context-type="linenumber">69</context>
</context-group>
</trans-unit>
<trans-unit id="meta.description.lightning.node-map" datatype="html">
<source>See the channels of non-Tor Lightning network nodes visualized on a world map. Hover/tap on points on the map for node names and details.</source>
<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>
<context context-type="linenumber">70</context>
</context-group>
</trans-unit>
<trans-unit id="4390631969351833104" datatype="html">
<source>No geolocation data available</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-channels-map/nodes-channels-map.component.ts</context>
<context context-type="linenumber">227</context>
<context context-type="linenumber">228</context>
</context-group>
</trans-unit>
<trans-unit id="a4d393ee035f4225083c22cc3909b26a05a87528" datatype="html">
@@ -7289,7 +7289,7 @@
</context-group>
</trans-unit>
<trans-unit id="meta.description.lightning.rankings-dashboard" datatype="html">
<source>See top the Lightning network nodes ranked by liquidity, connectivity, and age.</source>
<source>See the top Lightning network nodes ranked by liquidity, connectivity, and age.</source>
<context-group purpose="location">
<context context-type="sourcefile">src/app/lightning/nodes-rankings-dashboard/nodes-rankings-dashboard.component.ts</context>
<context context-type="linenumber">23</context>

View File

@@ -59,6 +59,7 @@
</trans-unit>
<trans-unit id="ngb.progressbar.value" datatype="html">
<source><x id="INTERPOLATION"/></source>
<target><x id="INTERPOLATION"/></target>
<context-group purpose="location">
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
@@ -66,6 +67,7 @@
</trans-unit>
<trans-unit id="ngb.carousel.slide-number" datatype="html">
<source> Slide <x id="INTERPOLATION"/> of <x id="INTERPOLATION_1"/> </source>
<target> Slide <x id="INTERPOLATION"/> of <x id="INTERPOLATION_1"/> </target>
<context-group purpose="location">
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
<context context-type="linenumber">13</context>
@@ -2085,6 +2087,10 @@
<context context-type="sourcefile">src/app/components/pool/pool.component.html</context>
<context context-type="linenumber">463</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/rbf-list/rbf-list.component.html</context>
<context context-type="linenumber">9</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">src/app/components/statistics/statistics.component.html</context>
<context context-type="linenumber">60</context>

View File

@@ -606,7 +606,6 @@ html:lang(ru) .card-title {
}
.tx-wrapper-tooltip-chart-advanced {
width: 140px;
.indicator-container {
.indicator {
margin-right: 5px;

View File

@@ -105,5 +105,9 @@
"node205.tk7.mempool.space",
"node206.tk7.mempool.space"
]
},
"MEMPOOL_SERVICES": {
"API": "https://mempool.space/api/v1/services",
"ACCELERATIONS": true
}
}