mirror of
https://github.com/mempool/mempool.git
synced 2025-09-27 19:57:10 +02:00
support sub 1 sat rates in stats chart
This commit is contained in:
@@ -7,7 +7,7 @@ import cpfpRepository from '../repositories/CpfpRepository';
|
||||
import { RowDataPacket } from 'mysql2';
|
||||
|
||||
class DatabaseMigration {
|
||||
private static currentVersion = 98;
|
||||
private static currentVersion = 99;
|
||||
private queryTimeout = 3600_000;
|
||||
private statisticsAddedIndexed = false;
|
||||
private uniqueLogs: string[] = [];
|
||||
@@ -1154,6 +1154,12 @@ class DatabaseMigration {
|
||||
await this.$executeQuery('UPDATE blocks_summaries SET version = 0 WHERE height >= 896070;');
|
||||
await this.updateToSchemaVersion(98);
|
||||
}
|
||||
|
||||
// Add vsize_0 to statistics table
|
||||
if (databaseSchemaVersion < 99) {
|
||||
await this.$executeQuery('ALTER TABLE statistics ADD COLUMN vsize_0 int(11) NOT NULL DEFAULT 0');
|
||||
await this.updateToSchemaVersion(99);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -16,6 +16,7 @@ class StatisticsApi {
|
||||
fee_data,
|
||||
total_fee,
|
||||
min_fee,
|
||||
vsize_0,
|
||||
vsize_1,
|
||||
vsize_2,
|
||||
vsize_3,
|
||||
@@ -55,7 +56,7 @@ class StatisticsApi {
|
||||
vsize_1800,
|
||||
vsize_2000
|
||||
)
|
||||
VALUES (NOW(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
VALUES (NOW(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)`;
|
||||
const [result]: any = await DB.query(query);
|
||||
return result.insertId;
|
||||
@@ -75,6 +76,7 @@ class StatisticsApi {
|
||||
fee_data,
|
||||
total_fee,
|
||||
min_fee,
|
||||
vsize_0,
|
||||
vsize_1,
|
||||
vsize_2,
|
||||
vsize_3,
|
||||
@@ -115,7 +117,7 @@ class StatisticsApi {
|
||||
vsize_2000
|
||||
)
|
||||
VALUES (${convertToDatetime ? `FROM_UNIXTIME(${statistics.added})` : statistics.added}, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
||||
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
||||
?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
|
||||
|
||||
const params: (string | number)[] = [
|
||||
statistics.unconfirmed_transactions,
|
||||
@@ -125,6 +127,7 @@ class StatisticsApi {
|
||||
statistics.fee_data,
|
||||
statistics.total_fee,
|
||||
statistics.min_fee,
|
||||
statistics.vsize_0,
|
||||
statistics.vsize_1,
|
||||
statistics.vsize_2,
|
||||
statistics.vsize_3,
|
||||
@@ -177,6 +180,7 @@ class StatisticsApi {
|
||||
CAST(avg(unconfirmed_transactions) as DOUBLE) as unconfirmed_transactions,
|
||||
CAST(avg(vbytes_per_second) as DOUBLE) as vbytes_per_second,
|
||||
CAST(avg(min_fee) as DOUBLE) as min_fee,
|
||||
CAST(avg(vsize_0) as DOUBLE) as vsize_0,
|
||||
CAST(avg(vsize_1) as DOUBLE) as vsize_1,
|
||||
CAST(avg(vsize_2) as DOUBLE) as vsize_2,
|
||||
CAST(avg(vsize_3) as DOUBLE) as vsize_3,
|
||||
@@ -227,6 +231,7 @@ class StatisticsApi {
|
||||
CAST(avg(unconfirmed_transactions) as DOUBLE) as unconfirmed_transactions,
|
||||
CAST(avg(vbytes_per_second) as DOUBLE) as vbytes_per_second,
|
||||
CAST(avg(min_fee) as DOUBLE) as min_fee,
|
||||
vsize_0,
|
||||
vsize_1,
|
||||
vsize_2,
|
||||
vsize_3,
|
||||
@@ -414,6 +419,7 @@ class StatisticsApi {
|
||||
total_fee: s.total_fee,
|
||||
min_fee: s.min_fee,
|
||||
vsizes: [
|
||||
s.vsize_0,
|
||||
s.vsize_1,
|
||||
s.vsize_2,
|
||||
s.vsize_3,
|
||||
@@ -468,44 +474,45 @@ class StatisticsApi {
|
||||
total_fee: s.total_fee || 0,
|
||||
min_fee: s.min_fee,
|
||||
fee_data: '',
|
||||
vsize_1: s.vsizes[0],
|
||||
vsize_2: s.vsizes[1],
|
||||
vsize_3: s.vsizes[2],
|
||||
vsize_4: s.vsizes[3],
|
||||
vsize_5: s.vsizes[4],
|
||||
vsize_6: s.vsizes[5],
|
||||
vsize_8: s.vsizes[6],
|
||||
vsize_10: s.vsizes[7],
|
||||
vsize_12: s.vsizes[8],
|
||||
vsize_15: s.vsizes[9],
|
||||
vsize_20: s.vsizes[10],
|
||||
vsize_30: s.vsizes[11],
|
||||
vsize_40: s.vsizes[12],
|
||||
vsize_50: s.vsizes[13],
|
||||
vsize_60: s.vsizes[14],
|
||||
vsize_70: s.vsizes[15],
|
||||
vsize_80: s.vsizes[16],
|
||||
vsize_90: s.vsizes[17],
|
||||
vsize_100: s.vsizes[18],
|
||||
vsize_125: s.vsizes[19],
|
||||
vsize_150: s.vsizes[20],
|
||||
vsize_175: s.vsizes[21],
|
||||
vsize_200: s.vsizes[22],
|
||||
vsize_250: s.vsizes[23],
|
||||
vsize_300: s.vsizes[24],
|
||||
vsize_350: s.vsizes[25],
|
||||
vsize_400: s.vsizes[26],
|
||||
vsize_500: s.vsizes[27],
|
||||
vsize_600: s.vsizes[28],
|
||||
vsize_700: s.vsizes[29],
|
||||
vsize_800: s.vsizes[30],
|
||||
vsize_900: s.vsizes[31],
|
||||
vsize_1000: s.vsizes[32],
|
||||
vsize_1200: s.vsizes[33],
|
||||
vsize_1400: s.vsizes[34],
|
||||
vsize_1600: s.vsizes[35],
|
||||
vsize_1800: s.vsizes[36],
|
||||
vsize_2000: s.vsizes[37],
|
||||
vsize_0: s.vsizes[0],
|
||||
vsize_1: s.vsizes[1],
|
||||
vsize_2: s.vsizes[2],
|
||||
vsize_3: s.vsizes[3],
|
||||
vsize_4: s.vsizes[4],
|
||||
vsize_5: s.vsizes[5],
|
||||
vsize_6: s.vsizes[6],
|
||||
vsize_8: s.vsizes[7],
|
||||
vsize_10: s.vsizes[8],
|
||||
vsize_12: s.vsizes[9],
|
||||
vsize_15: s.vsizes[10],
|
||||
vsize_20: s.vsizes[11],
|
||||
vsize_30: s.vsizes[12],
|
||||
vsize_40: s.vsizes[13],
|
||||
vsize_50: s.vsizes[14],
|
||||
vsize_60: s.vsizes[15],
|
||||
vsize_70: s.vsizes[16],
|
||||
vsize_80: s.vsizes[17],
|
||||
vsize_90: s.vsizes[18],
|
||||
vsize_100: s.vsizes[19],
|
||||
vsize_125: s.vsizes[20],
|
||||
vsize_150: s.vsizes[21],
|
||||
vsize_175: s.vsizes[22],
|
||||
vsize_200: s.vsizes[23],
|
||||
vsize_250: s.vsizes[24],
|
||||
vsize_300: s.vsizes[25],
|
||||
vsize_350: s.vsizes[26],
|
||||
vsize_400: s.vsizes[27],
|
||||
vsize_500: s.vsizes[28],
|
||||
vsize_600: s.vsizes[29],
|
||||
vsize_700: s.vsizes[30],
|
||||
vsize_800: s.vsizes[31],
|
||||
vsize_900: s.vsizes[32],
|
||||
vsize_1000: s.vsizes[33],
|
||||
vsize_1200: s.vsizes[34],
|
||||
vsize_1400: s.vsizes[35],
|
||||
vsize_1600: s.vsizes[36],
|
||||
vsize_1800: s.vsizes[37],
|
||||
vsize_2000: s.vsizes[38],
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@@ -73,7 +73,7 @@ class Statistics {
|
||||
const totalWeight = memPoolArray.map((tx) => tx.vsize).reduce((acc, curr) => acc + curr) * 4;
|
||||
const totalFee = memPoolArray.map((tx) => tx.fee).reduce((acc, curr) => acc + curr);
|
||||
|
||||
const logFees = [1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 125, 150, 175, 200,
|
||||
const logFees = [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 125, 150, 175, 200,
|
||||
250, 300, 350, 400, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000];
|
||||
|
||||
const weightVsizeFees: { [feePerWU: number]: number } = {};
|
||||
@@ -109,6 +109,7 @@ class Statistics {
|
||||
total_fee: totalFee,
|
||||
fee_data: '',
|
||||
min_fee: minFee,
|
||||
vsize_0: weightVsizeFees['0'] || 0,
|
||||
vsize_1: weightVsizeFees['1'] || 0,
|
||||
vsize_2: weightVsizeFees['2'] || 0,
|
||||
vsize_3: weightVsizeFees['3'] || 0,
|
||||
|
@@ -406,6 +406,7 @@ export interface Statistic {
|
||||
fee_data: string;
|
||||
min_fee: number;
|
||||
|
||||
vsize_0: number;
|
||||
vsize_1: number;
|
||||
vsize_2: number;
|
||||
vsize_3: number;
|
||||
|
@@ -83,7 +83,7 @@ export const contrastMempoolFeeColors = [
|
||||
];
|
||||
|
||||
export const chartColors = [
|
||||
"#D81B60",
|
||||
"#A81524",
|
||||
"#D81B60",
|
||||
"#8E24AA",
|
||||
"#5E35B1",
|
||||
|
@@ -117,7 +117,7 @@ export class MempoolGraphComponent implements OnInit, OnChanges {
|
||||
let feesArray: number[][] = [];
|
||||
|
||||
let maxTier = 0;
|
||||
for (let index = 37; index > -1; index--) {
|
||||
for (let index = 38; index > -1; index--) {
|
||||
feesArray = [];
|
||||
mempoolStats.forEach((stats) => {
|
||||
if (stats.vsizes[index] >= this.filterSize) {
|
||||
|
@@ -30,7 +30,7 @@ export class StatisticsComponent implements OnInit {
|
||||
feeLevels = feeLevels;
|
||||
chartColors = chartColors;
|
||||
filterSize = 100000;
|
||||
filterFeeIndex = 1;
|
||||
filterFeeIndex = 0;
|
||||
showCount = false;
|
||||
maxFeeIndex: number;
|
||||
dropDownOpen = false;
|
||||
@@ -146,7 +146,7 @@ export class StatisticsComponent implements OnInit {
|
||||
const labels = mempoolStats.map(stats => stats.added);
|
||||
|
||||
let maxTier = 0;
|
||||
for (let index = 37; index > -1; index--) {
|
||||
for (let index = 38; index > -1; index--) {
|
||||
mempoolStats.forEach((stats) => {
|
||||
if (stats.vsizes[index] >= this.filterSize) {
|
||||
maxTier = Math.max(maxTier, index);
|
||||
|
Reference in New Issue
Block a user