UNPKG

blockchain-api

Version:

API utilities for interacting with the Exatechl2 blockchain

88 lines (75 loc) • 2.9 kB
import { getLatestTransactionsFromExplorer, formatNumber, formatAddress, parseHexToDecimal, formatTableTime } from '../src'; /** * Display transactions in a formatted table */ async function displayTransactions() { try { console.log('\nšŸ” Fetching latest transactions from Exatechl2 blockchain...'); // Pagination parameters const page = 1; const perPage = 10; // Get paginated transactions from the blockchain explorer const { transactions, totalCount, totalPages } = await getLatestTransactionsFromExplorer(page, perPage); // Format and display transaction data in a table console.log(`\nšŸ“Š Latest Transactions (Page ${page}/${totalPages}, Total: ${formatNumber(totalCount)})`); console.log('─'.repeat(150)); console.log( 'Hash'.padEnd(20) + 'Method'.padEnd(15) + 'Block'.padEnd(10) + 'Age'.padEnd(35) + 'From'.padEnd(20) + 'To'.padEnd(20) + 'Value'.padEnd(15) + 'Txn Fee'.padEnd(15) + 'Status'.padEnd(10) ); console.log('─'.repeat(150)); transactions.forEach((tx: any) => { // Handle block number display (convert hex to decimal if needed) let blockDisplay = tx.blockNumber || 'Pending'; if (typeof blockDisplay === 'string' && blockDisplay.startsWith('0x')) { blockDisplay = parseHexToDecimal(blockDisplay); } // Directly use value and txFee strings if they're already formatted let valueDisplay = tx.value || '0'; let feeDisplay = tx.txFee || '0'; // Use the proper table-optimized time formatter (a shorter version of formatRelativeTime) let ageDisplay = 'Unknown'; if (tx.timestamp) { ageDisplay = formatTableTime(tx.timestamp); } console.log( formatAddress(tx.hash).padEnd(20) + (tx.methodDisplayName || (tx.method && tx.method.split('(')[0]) || 'Transfer').padEnd(15) + String(blockDisplay).padEnd(10) + ageDisplay.padEnd(35) + formatAddress(tx.from).padEnd(20) + formatAddress(tx.to || 'Contract Creation').padEnd(20) + valueDisplay.padEnd(15) + feeDisplay.padEnd(15) + (tx.status === 'success' ? 'āœ… Success' : (tx.status === 'failed' ? 'āŒ Failed' : 'ā³ Pending')).padEnd(10) ); }); console.log('─'.repeat(150)); console.log(`Showing ${transactions.length} of ${formatNumber(totalCount)} transactions\n`); } catch (error) { console.error('āŒ Error fetching transactions:', error instanceof Error ? error.message : error); } } // Main function to run example async function main() { console.log('='.repeat(150)); console.log('šŸ“š BLOCKCHAIN-API EXAMPLE: LIST TRANSACTIONS'); console.log('='.repeat(150)); await displayTransactions(); console.log('\nāœ… Example complete'); } // Run the example main().catch(console.error);