Skip to content

Commit eb7332e

Browse files
authored
common: Add merge block numbers for merged networks and fix forkhash calc (#2324)
1 parent 7fb9ad8 commit eb7332e

File tree

5 files changed

+15
-7
lines changed

5 files changed

+15
-7
lines changed

packages/common/src/chains/goerli.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
"//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://goerli.etherscan.io/block/7382818",
7676
"name": "merge",
7777
"ttd": "10790000",
78-
"block": null,
78+
"block": 7382819,
7979
"forkHash": "0xb8c6299d"
8080
},
8181
{

packages/common/src/chains/mainnet.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
"//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://etherscan.io/block/15537393",
9292
"name": "merge",
9393
"ttd": "58750000000000000000000",
94-
"block": null,
94+
"block": 15537394,
9595
"forkHash": "0xf0afd0e3"
9696
},
9797
{

packages/common/src/chains/sepolia.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
"//_comment": "The forkHash will remain same as mergeForkIdTransition is post merge, terminal block: https://sepolia.etherscan.io/block/1450408",
7878
"name": "merge",
7979
"ttd": "17000000000000000",
80-
"block": null,
80+
"block": 1450409,
8181
"forkHash": "0xfe3366e7"
8282
},
8383
{

packages/common/src/common.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -676,11 +676,17 @@ export class Common extends EventEmitter {
676676
let hfBuffer = Buffer.alloc(0)
677677
let prevBlock = 0
678678
for (const hf of this.hardforks()) {
679-
const block = hf.block
679+
const { block, ttd } = hf
680680

681681
// Skip for chainstart (0), not applied HFs (null) and
682682
// when already applied on same block number HFs
683-
if (typeof block === 'number' && block !== 0 && block !== prevBlock) {
683+
// and on the merge since forkhash doesn't change on merge hf
684+
if (
685+
typeof block === 'number' &&
686+
block !== 0 &&
687+
block !== prevBlock &&
688+
(ttd === null || ttd === undefined)
689+
) {
684690
const hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex')
685691
hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer])
686692
}

packages/common/tests/hardforks.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ tape('[Common]: Hardfork logic', function (t: tape.Test) {
4444
st.equal(c.getHardforkByBlockNumber(12965000), Hardfork.London, msg)
4545
st.equal(c.getHardforkByBlockNumber(13773000), Hardfork.ArrowGlacier, msg)
4646
st.equal(c.getHardforkByBlockNumber(15050000), Hardfork.GrayGlacier, msg)
47-
st.equal(c.getHardforkByBlockNumber(999999999999), Hardfork.GrayGlacier, msg)
47+
// merge is now specified at 15537394 in config
48+
st.equal(c.getHardforkByBlockNumber(999999999999), Hardfork.Merge, msg)
4849
msg = 'should set HF correctly'
4950

5051
st.equal(c.setHardforkByBlockNumber(0), Hardfork.Chainstart, msg)
@@ -55,7 +56,8 @@ tape('[Common]: Hardfork logic', function (t: tape.Test) {
5556
st.equal(c.setHardforkByBlockNumber(12965000), Hardfork.London, msg)
5657
st.equal(c.setHardforkByBlockNumber(13773000), Hardfork.ArrowGlacier, msg)
5758
st.equal(c.setHardforkByBlockNumber(15050000), Hardfork.GrayGlacier, msg)
58-
st.equal(c.setHardforkByBlockNumber(999999999999), Hardfork.GrayGlacier, msg)
59+
// merge is now specified at 15537394 in config
60+
st.equal(c.setHardforkByBlockNumber(999999999999), Hardfork.Merge, msg)
5961

6062
c = new Common({ chain: Chain.Ropsten })
6163
st.equal(c.setHardforkByBlockNumber(0), 'tangerineWhistle', msg)

0 commit comments

Comments
 (0)