noob-ethereum
Version:
A simple Ethereum library
39 lines (38 loc) • 1.66 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.standardizeBlock = void 0;
const utils_1 = require("../utils");
/**
* Return gas utilisation ratio for the block
* @param {number} used - gas used (cummulative gas used by txs included in block)
* @param {number} limit - gas limit (according to block received)
* @returns {number} - percentage-readable value by default (e.g. 97% therefore 0.97)
*/
function gasUsedRatio(used, limit = '0x0') {
const num = (0, utils_1.decimal)(used);
const den = (0, utils_1.decimal)(limit);
const ratio = Math.floor((num / den) * 100);
return +(ratio * 0.01).toFixed(2);
}
function getERC20Value(input, decimals) {
const address = '0x' + input.slice(2).slice(8).slice(24, -64);
const value = input.slice(2).slice(8).slice(24).slice(40);
const amount = parseInt(value, 16) * Math.pow(10, -1 * decimals);
return [address, JSON.stringify(amount)];
}
function standardizeBlock(block, verbose = false) {
const standardized = {
gasLimit: (0, utils_1.decimal)(block.gasLimit),
gasUsed: (0, utils_1.decimal)(block.gasUsed),
nonce: (0, utils_1.decimal)(block.nonce),
number: (0, utils_1.decimal)(block.number),
size: (0, utils_1.decimal)(block.size),
timestamp: (0, utils_1.toISO)((0, utils_1.decimal)(block.timestamp)),
uncles: block.uncles,
gasUtilizationRatio: gasUsedRatio(block.gasUsed, block.gasLimit),
txCount: block.transactions.length,
basefee: (0, utils_1.toGwei)(block.baseFeePerGas, 'wei'),
};
return standardized;
}
exports.standardizeBlock = standardizeBlock;
;