blockchain-api
Version:
API utilities for interacting with the Exatechl2 blockchain
66 lines (55 loc) • 2.3 kB
text/typescript
import { FormattedBlock } from './utils';
export interface BlockInsight {
icon: string;
title: string;
description: string;
}
/**
*
* @param {FormattedBlock} blockData
* @returns {BlockInsight[]}
*/
export function generateBlockInsights(blockData: FormattedBlock): BlockInsight[] {
if (!blockData) return [];
const insights: BlockInsight[] = [];
const gasUsage = blockData.gasUsedPercentage;
if (gasUsage > 80) {
insights.push({
icon: 'fa-fire',
title: 'High Gas Usage',
description: `This block has ${gasUsage.toFixed(1)}% gas utilization, which is higher than average. This indicates high demand on the network at this time. Compared to the last 100 blocks, this is in the top 10% of gas usage.`
});
} else if (gasUsage < 30) {
insights.push({
icon: 'fa-leaf',
title: 'Low Gas Usage',
description: `This block has only ${gasUsage.toFixed(1)}% gas utilization, which is lower than average. This indicates lower network congestion. Compared to the last 100 blocks, this is in the bottom 20% of gas usage.`
});
}
if (blockData.txCount > 40) {
insights.push({
icon: 'fa-bolt',
title: 'High Transaction Volume',
description: `This block contains ${blockData.txCount} transactions, which is higher than the typical average of 30 transactions per block. This volume is in the top 15% of recent blocks.`
});
}
const blockSizeNumeric = blockData.sizeBytes ? blockData.sizeBytes / 1024 : 0;
if (blockSizeNumeric > 1.5) {
insights.push({
icon: 'fa-database',
title: 'Large Block Size',
description: `At ${blockData.size}, this block is larger than average, possibly due to complex transactions or contract interactions. This size is larger than 85% of blocks in the past hour.`
});
}
const blockTime = blockData.timestamp;
const now = Date.now();
const minutesAgo = Math.floor((now - blockTime) / (60 * 1000));
if (minutesAgo < 5) {
insights.push({
icon: 'fa-clock',
title: 'Recent Block',
description: 'This block was mined very recently, showing the latest network activity. It is among the most recent 1% of blocks.'
});
}
return insights;
}