UNPKG

blockchain-api

Version:

API utilities for interacting with the Exatechl2 blockchain

74 lines (73 loc) 2.96 kB
"use strict"; 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 }; }