UNPKG

noob-ethereum

Version:
54 lines (53 loc) 2.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyBlockHeader = exports.calculateBlockHeader = void 0; // @ts-nocheck const constants_1 = require("../../constants"); const rlp_1 = require("../../lib/rlp/rlp"); const keccak_1 = __importDefault(require("keccak")); function prepareBlockTuple(block) { const blockNumber = parseInt(block.number, 16); const tuple = [ block.parentHash, block.sha3Uncles, block.miner, block.stateRoot, block.transactionsRoot, block.receiptsRoot, block.logsBloom, block.difficulty, block.number, block.gasLimit, block.gasUsed, block.timestamp, block.extraData, block.mixHash, block.nonce, ]; // If a block after London Hardfork, add base fee to block tuple prior to encoding if (blockNumber >= constants_1.LONDON_HARDFORK_BLOCK) tuple.push(block.baseFeePerGas); return tuple; } function calculateBlockHeader(block) { const tuple = prepareBlockTuple(block); const encoded = Buffer.from((0, rlp_1.encode)(tuple)); const calculated = (0, keccak_1.default)('keccak256').update(encoded).digest('hex'); return '0x' + calculated; } exports.calculateBlockHeader = calculateBlockHeader; function verifyBlockHeader(block) { const expected = block.hash; const calculated = calculateBlockHeader(block); return expected === calculated; } exports.verifyBlockHeader = verifyBlockHeader; const _12964874_json_1 = __importDefault(require("../../seeder/blocks/legacy/12964874.json")); console.log('calculated block header:', calculateBlockHeader(_12964874_json_1.default)); console.log('is a valid block header:', verifyBlockHeader(_12964874_json_1.default)); const _15122367_json_1 = __importDefault(require("../../seeder/blocks/1559/15122367.json")); console.log('calculated block header:', calculateBlockHeader(_15122367_json_1.default)); console.log('is a valid block header:', verifyBlockHeader(_15122367_json_1.default));