]> git.ardis.lu - block-hash-calculator/commitdiff
Support Pectra block headers
authorArdis Lu <ardisglu@gmail.com>
Wed, 14 May 2025 05:34:06 +0000 (22:34 -0700)
committerArdis Lu <ardisglu@gmail.com>
Wed, 14 May 2025 05:34:06 +0000 (22:34 -0700)
calculate.js
calculate.test.js

index 5983a44edb126c96603d67aac2fe5251bad2fc7a..f016198443db13a897285476d10f91728379b356 100644 (file)
@@ -83,6 +83,12 @@ function calculate(block) {
     header.push(block.parentBeaconBlockRoot);
   }
 
+  // Pectra hard fork
+  // https://eips.ethereum.org/EIPS/eip-7685#block-header
+  if (block?.requestsHash) {
+    header.push(block.requestsHash);
+  }
+
   const rlp = RLP.encode(header);
   const hash = keccak256(rlp);
 
index 220c14ed52dbab59d2467e6216b0ac0f82a0afca..f983aee6d0f02852a96857d6de9fb856289992a7 100644 (file)
@@ -138,6 +138,35 @@ suite('Ethereum', { concurrency: true }, () => {
     });
     deepStrictEqual(hash, '0x736664ff636e9c72f5c1d71ef2626146b4a4289d3c9cc9154e683f6870c3436e');
   });
+
+  test('Block number 22431084 (Pectra)', { concurrency: true }, () => {
+    const { hash } = calculate({
+      "baseFeePerGas": "0x548795d3",
+      "blobGasUsed": "0x120000",
+      "difficulty": "0x0",
+      "excessBlobGas": "0x3020000",
+      "extraData": "0xd883010f0b846765746888676f312e32342e32856c696e7578",
+      "gasLimit": "0x22550dd",
+      "gasUsed": "0x9d8f63",
+      "logsBloom": "0x1c2d14628013080620b50320a0885ae80185204a6c4841040101d009c41060fb05358520a00d00a540113a514a9e511c83350a088c22223c9281008042a800c40620120e024a19384a006b8856d324a4f0067931056c0d2c1d1072db844081406c4403ade3688228ef2e3ac201984e860e0163601130a7d2032d269401d9314008a8c14f4340130c4859105c0381a30d011902f175982858ad3c30fba23c55fa4b40003aa5c1688b4911a2e09c84e4213436420d50568100001d44080c8001d900a51c6252d429938181c431a0080b17c9342866c40c14d700853586c59a291632736c124b23800a00c6060c25d17e68a5301070438916505419a0550429469d",
+      "miner": "0xe688b84b23f322a994a53dbf8e15fa82cdb71127",
+      "mixHash": "0xef1ed97e3e0205c73f287f22c5900944da077daaadad17f57355fe7705cf3b05",
+      "nonce": "0x0000000000000000",
+      "number": "0x156456c",
+      "parentBeaconBlockRoot": "0x947d22746be643f1428031a9ab7c58776ca54e461903bb5e4ba8a73448552967",
+      "parentHash": "0x28fb2c1d988435955e569451c6ad772f7fb5e61cddd7463c7b60e933ed5ff237",
+      "receiptsRoot": "0xf2260e554d7827e222789d9851f5f8a8a9bc78b1e81ea68da7314622f049924b",
+      "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+      "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
+      "size": "0xae82",
+      "stateRoot": "0x49d29cd525c7a9f4a33c1e2debc7529f24757c81f689b7276b70018333761b53",
+      "timestamp": "0x681b3057",
+      "transactionsRoot": "0x6522a2eba58778c64f0facee1378ddcdb1b5927285f461f9a8314c1b5fe1e5b1",
+      "uncles": [],
+      "withdrawalsRoot": "0xc4f495225a2ac0cd4052c3493b36e96d0efe46eb0650ed124a9627f1badcc935"
+    });
+    deepStrictEqual(hash, '0x50c8cab760b2948349c590461b166773c45d8f4858cccf5a43025ab2960152e8');
+  });
 });
 
 suite('Polygon PoS', { concurrency: true }, () => {
This page took 0.047474 seconds and 4 git commands to generate.