blockchain-api
Version:
API utilities for interacting with the Exatechl2 blockchain
74 lines (73 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatBlockForDisplay = formatBlockForDisplay;
const formatters_1 = require("../../utils/formatters");
/**
*
* @param {Block} block
* @returns {FormattedBlock}
*/
function formatBlockForDisplay(block) {
const numberDecimal = (0, formatters_1.parseHexToDecimal)(block.number);
const id = `B-${numberDecimal}`;
const timestamp = (0, formatters_1.parseTimestampToMillis)(block.timestamp);
const age = (0, formatters_1.calculateAgeInMillis)(block.timestamp);
const txCount = typeof block.txCount !== 'undefined' && block.txCount !== null
? Number(block.txCount)
: Array.isArray(block.transactions)
? block.transactions.length
: 0;
const sizeBytes = (0, formatters_1.parseHexToDecimal)(block.size);
const size = sizeBytes > 0 ? `${(sizeBytes / 1024).toFixed(2)} KB` : 'N/A';
let statusValue = block.status || block.batchStatus || 'N/A';
if (statusValue && typeof statusValue === 'string') {
statusValue = statusValue.charAt(0).toUpperCase() + statusValue.slice(1).toLowerCase();
}
const gasLimitDecimal = (0, formatters_1.parseHexToDecimal)(block.gasLimit);
const gasLimit = gasLimitDecimal > 0 ? gasLimitDecimal.toString() : 'N/A';
const gasUsedDecimal = (0, formatters_1.parseHexToDecimal)(block.gasUsed);
const gasUsed = gasUsedDecimal > 0 ? gasUsedDecimal.toString() : 'N/A';
const gasUsedPercentage = (0, formatters_1.calculateGasPercentage)(block.gasUsed, block.gasLimit);
const gasPriceField = block.baseFeePerGas || block.baseFee || block.minimumGasPrice || block.gasPrice;
const baseFee = gasPriceField ? (0, formatters_1.formatGasValue)(gasPriceField, 'gwei', 2).replace(' Gwei', '') : 'N/A';
let l1BlockNumber = undefined;
if (block.l1BlockNumber) {
l1BlockNumber = (0, formatters_1.parseHexToDecimal)(block.l1BlockNumber);
}
return {
id,
number: block.number,
numberDecimal,
hash: block.hash,
timestamp,
age,
txCount,
size,
sizeBytes,
status: statusValue,
gasLimit,
gasLimitDecimal,
gasUsed,
gasUsedDecimal,
gasUsedPercentage,
baseFee,
stateRoot: block.stateRoot,
receiptsRoot: block.receiptsRoot,
extraData: block.extraData,
logsBloom: block.logsBloom,
difficulty: block.difficulty,
totalDifficulty: block.totalDifficulty,
nonce: block.nonce,
mixHash: block.mixHash,
sha3Uncles: block.sha3Uncles,
sendCount: block.sendCount,
sendRoot: block.sendRoot,
l1BlockNumber,
validator: block.validator,
parentHash: block.parentHash,
rootHash: block.rootHash,
transactions: block.transactions,
batchId: block.batchId,
batchStatus: block.batchStatus
};
}