mirror of
https://github.com/mempool/mempool.git
synced 2024-11-19 09:52:14 +01:00
Merge pull request #3919 from joostjager/pool-fees
Add average fee delta to pool ranking
This commit is contained in:
commit
7b01f54fc6
@ -106,6 +106,7 @@ class Mining {
|
|||||||
emptyBlocks: emptyBlocksCount.length > 0 ? emptyBlocksCount[0]['count'] : 0,
|
emptyBlocks: emptyBlocksCount.length > 0 ? emptyBlocksCount[0]['count'] : 0,
|
||||||
slug: poolInfo.slug,
|
slug: poolInfo.slug,
|
||||||
avgMatchRate: poolInfo.avgMatchRate !== null ? Math.round(100 * poolInfo.avgMatchRate) / 100 : null,
|
avgMatchRate: poolInfo.avgMatchRate !== null ? Math.round(100 * poolInfo.avgMatchRate) / 100 : null,
|
||||||
|
avgFeeDelta: poolInfo.avgFeeDelta,
|
||||||
};
|
};
|
||||||
poolsStats.push(poolStat);
|
poolsStats.push(poolStat);
|
||||||
});
|
});
|
||||||
|
@ -19,6 +19,7 @@ export interface PoolInfo {
|
|||||||
blockCount: number;
|
blockCount: number;
|
||||||
slug: string;
|
slug: string;
|
||||||
avgMatchRate: number | null;
|
avgMatchRate: number | null;
|
||||||
|
avgFeeDelta: number | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PoolStats extends PoolInfo {
|
export interface PoolStats extends PoolInfo {
|
||||||
|
@ -39,7 +39,8 @@ class PoolsRepository {
|
|||||||
pools.name AS name,
|
pools.name AS name,
|
||||||
pools.link AS link,
|
pools.link AS link,
|
||||||
slug,
|
slug,
|
||||||
AVG(blocks_audits.match_rate) AS avgMatchRate
|
AVG(blocks_audits.match_rate) AS avgMatchRate,
|
||||||
|
AVG((CAST(blocks.fees as SIGNED) - CAST(blocks_audits.expected_fees as SIGNED)) / NULLIF(CAST(blocks_audits.expected_fees as SIGNED), 0)) AS avgFeeDelta
|
||||||
FROM blocks
|
FROM blocks
|
||||||
JOIN pools on pools.id = pool_id
|
JOIN pools on pools.id = pool_id
|
||||||
LEFT JOIN blocks_audits ON blocks_audits.height = blocks.height
|
LEFT JOIN blocks_audits ON blocks_audits.height = blocks.height
|
||||||
|
@ -94,7 +94,8 @@
|
|||||||
<th class="" i18n="master-page.blocks">Blocks</th>
|
<th class="" i18n="master-page.blocks">Blocks</th>
|
||||||
<th *ngIf="auditAvailable" class="health text-right widget" i18n="latest-blocks.avg_health"
|
<th *ngIf="auditAvailable" class="health text-right widget" i18n="latest-blocks.avg_health"
|
||||||
i18n-ngbTooltip="latest-blocks.avg_health" ngbTooltip="Avg Health" placement="bottom" #health [disableTooltip]="!isEllipsisActive(health)">Avg Health</th>
|
i18n-ngbTooltip="latest-blocks.avg_health" ngbTooltip="Avg Health" placement="bottom" #health [disableTooltip]="!isEllipsisActive(health)">Avg Health</th>
|
||||||
<th class="d-none d-md-table-cell" i18n="mining.empty-blocks">Empty blocks</th>
|
<th *ngIf="auditAvailable" class="d-none d-sm-table-cell" i18n="mining.fees-per-block">Avg Block Fees</th>
|
||||||
|
<th class="d-none d-lg-table-cell" i18n="mining.empty-blocks">Empty blocks</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody [attr.data-cy]="'pools-table'" *ngIf="(miningStatsObservable$ | async) as miningStats">
|
<tbody [attr.data-cy]="'pools-table'" *ngIf="(miningStatsObservable$ | async) as miningStats">
|
||||||
@ -121,7 +122,15 @@
|
|||||||
<span class="health-badge badge badge-secondary" i18n="unknown">Unknown</span>
|
<span class="health-badge badge badge-secondary" i18n="unknown">Unknown</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
</td>
|
</td>
|
||||||
<td class="d-none d-md-table-cell">{{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</td>
|
<td *ngIf="auditAvailable" class="d-none d-sm-table-cell">
|
||||||
|
<span *ngIf="pool.avgFeeDelta != null; else nullFeeDelta" class="difference" [class.positive]="pool.avgFeeDelta >= 0" [class.negative]="pool.avgFeeDelta < 0">
|
||||||
|
{{ pool.avgFeeDelta > 0 ? '+' : '' }}{{ (pool.avgFeeDelta * 100) | amountShortener: 2 }}%
|
||||||
|
</span>
|
||||||
|
<ng-template #nullFeeDelta>
|
||||||
|
-
|
||||||
|
</ng-template>
|
||||||
|
</td>
|
||||||
|
<td class="d-none d-lg-table-cell">{{ pool.emptyBlocks }} ({{ pool.emptyBlockRatio }}%)</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr style="border-top: 1px solid #555">
|
<tr style="border-top: 1px solid #555">
|
||||||
<td class="d-none d-md-table-cell"></td>
|
<td class="d-none d-md-table-cell"></td>
|
||||||
|
@ -110,4 +110,15 @@
|
|||||||
.disabled {
|
.disabled {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
td {
|
||||||
|
.difference {
|
||||||
|
&.positive {
|
||||||
|
color: rgb(66, 183, 71);
|
||||||
|
}
|
||||||
|
&.negative {
|
||||||
|
color: rgb(183, 66, 66);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -91,6 +91,7 @@ export interface SinglePoolStats {
|
|||||||
logo: string;
|
logo: string;
|
||||||
slug: string;
|
slug: string;
|
||||||
avgMatchRate: number;
|
avgMatchRate: number;
|
||||||
|
avgFeeDelta: number;
|
||||||
}
|
}
|
||||||
export interface PoolsStats {
|
export interface PoolsStats {
|
||||||
blockCount: number;
|
blockCount: number;
|
||||||
|
Loading…
Reference in New Issue
Block a user