UNPKG

1.14 kBJavaScriptView Raw
1'use strict'
2const BlockHeader = require('./header')
3const ethUtil = require('ethereumjs-util')
4
5module.exports = blockHeaderFromRpc
6
7/**
8 * Creates a new block header object from Ethereum JSON RPC.
9 * @param {Object} blockParams - Ethereum JSON RPC of block (eth_getBlockByNumber)
10 */
11function blockHeaderFromRpc (blockParams) {
12 const blockHeader = new BlockHeader({
13 parentHash: blockParams.parentHash,
14 uncleHash: blockParams.sha3Uncles,
15 coinbase: blockParams.miner,
16 stateRoot: blockParams.stateRoot,
17 transactionsTrie: blockParams.transactionsRoot,
18 receiptTrie: blockParams.receiptRoot || blockParams.receiptsRoot || ethUtil.SHA3_NULL,
19 bloom: blockParams.logsBloom,
20 difficulty: blockParams.difficulty,
21 number: blockParams.number,
22 gasLimit: blockParams.gasLimit,
23 gasUsed: blockParams.gasUsed,
24 timestamp: blockParams.timestamp,
25 extraData: blockParams.extraData,
26 mixHash: blockParams.mixHash,
27 nonce: blockParams.nonce
28 })
29
30 // override hash incase something was missing
31 blockHeader.hash = function () {
32 return ethUtil.toBuffer(blockParams.hash)
33 }
34
35 return blockHeader
36}