diff --git a/packages/common/src/chains.ts b/packages/common/src/chains.ts index 8aa54fc14a..8a630a9c3d 100644 --- a/packages/common/src/chains.ts +++ b/packages/common/src/chains.ts @@ -3,7 +3,7 @@ import type { ChainConfig } from './types.js' export const Mainnet: ChainConfig = { name: 'mainnet', chainId: 1, - defaultHardfork: 'cancun', + defaultHardfork: 'prague', consensus: { type: 'pow', algorithm: 'ethash', @@ -116,6 +116,8 @@ export const Mainnet: ChainConfig = { { name: 'prague', block: null, + timestamp: '9999999999', // TEMP: placeholder until mainnet timestamp is set + // forkHash: '0xFFFFFFFF' // TODO: set correct forkHash once mainnet timestamp is set }, { name: 'osaka', diff --git a/packages/common/src/common.ts b/packages/common/src/common.ts index 7603f65eb8..9c896750f1 100644 --- a/packages/common/src/common.ts +++ b/packages/common/src/common.ts @@ -62,7 +62,7 @@ export class Common { this.events = new EventEmitter() this._chainParams = JSON.parse(JSON.stringify(opts.chain)) // copy - this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Cancun + this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Prague // Assign hardfork changes in the sequence of the applied hardforks this.HARDFORK_CHANGES = this.hardforks().map((hf) => [ hf.name, diff --git a/packages/common/test/chains.spec.ts b/packages/common/test/chains.spec.ts index 61e27ab55c..50d62168df 100644 --- a/packages/common/test/chains.spec.ts +++ b/packages/common/test/chains.spec.ts @@ -18,7 +18,7 @@ describe('[Common/Chains]: Initialization / Chain params', () => { const c = new Common({ chain: Mainnet }) assert.equal(c.chainName(), 'mainnet', 'should initialize with chain name') assert.equal(c.chainId(), BigInt(1), 'should return correct chain Id') - assert.equal(c.hardfork(), Hardfork.Cancun, 'should set hardfork to current default hardfork') + assert.equal(c.hardfork(), Hardfork.Prague, 'should set hardfork to current default hardfork') assert.equal( c.hardfork(), c.DEFAULT_HARDFORK, diff --git a/packages/common/test/customChains.spec.ts b/packages/common/test/customChains.spec.ts index 34af5b4393..22bf344504 100644 --- a/packages/common/test/customChains.spec.ts +++ b/packages/common/test/customChains.spec.ts @@ -4,6 +4,8 @@ import { Common, Hardfork, Mainnet, createCustomCommon } from '../src/index.js' import { testnetData } from './data/testnet.js' +import type { ChainConfig } from '../src/index.js' + describe('[Common]: Custom chains', () => { it('chain -> object: should provide correct access to private network chain parameters', () => { const c = new Common({ chain: testnetData, hardfork: Hardfork.Byzantium }) @@ -87,9 +89,9 @@ describe('[Common]: Custom chains', () => { }, Mainnet, ) - // Note: default HF of Common is currently Cancun + // Note: default HF of Common is currently Prague // Did not pass any "hardfork" param - assert.equal(c.hardfork(), Hardfork.Cancun) + assert.equal(c.hardfork(), Hardfork.Prague) c.setHardforkBy({ blockNumber: 0, }) @@ -108,6 +110,34 @@ describe('[Common]: Custom chains', () => { assert.ok(c.isActivatedEIP(2935)) }) + it('customChain: correctly set default hardfork on custom chain config', () => { + const chainConfig: ChainConfig = { + name: 'custom', + chainId: 123, + genesis: { + gasLimit: 0, + difficulty: 1, + nonce: '0x42', + extraData: '0x', + }, + hardforks: [ + { + name: 'chainstart', + block: 0, + }, + ], + bootstrapNodes: [], + consensus: { + type: 'pos', + algorithm: 'casper', + casper: {}, + }, + } + const c = createCustomCommon({ chainId: 123 }, chainConfig) + assert.equal(c.hardfork(), c.DEFAULT_HARDFORK) + assert.equal(c.hardfork(), Hardfork.Prague) + }) + it('customHardforks: override params', () => { const c = createCustomCommon( { diff --git a/packages/common/test/hardforks.spec.ts b/packages/common/test/hardforks.spec.ts index 7d3618f4a4..9b078c3e1b 100644 --- a/packages/common/test/hardforks.spec.ts +++ b/packages/common/test/hardforks.spec.ts @@ -133,8 +133,8 @@ describe('[Common]: Hardfork logic', () => { msg = 'should return correct next HF (mainnet: byzantium -> constantinople)' assert.equal(c.nextHardforkBlockOrTimestamp(Hardfork.Byzantium)!, BigInt(7280000), msg) - msg = 'should return null if next HF is not available (mainnet: cancun -> prague)' - assert.equal(c.nextHardforkBlockOrTimestamp(Hardfork.Cancun), null, msg) + msg = 'should return null if next HF is not available (mainnet: prague -> osaka)' + assert.equal(c.nextHardforkBlockOrTimestamp(Hardfork.Prague), null, msg) const c2 = new Common({ chain: Goerli, hardfork: Hardfork.Chainstart }) @@ -179,11 +179,11 @@ describe('[Common]: Hardfork logic', () => { assert.equal(c.hardforkBlock(Hardfork.Berlin)!, BigInt(12244000), msg) msg = 'should return null for unscheduled hardfork' - // developer note: when Shanghai is set, + // developer note: when Osaka is set, // update this test to next unscheduled hardfork. assert.equal(c.hardforkBlock(Hardfork.Cancun), null, msg) assert.equal(c.hardforkBlock(Hardfork.Cancun), null, msg) - assert.equal(c.nextHardforkBlockOrTimestamp(Hardfork.Cancun), null, msg) + assert.equal(c.nextHardforkBlockOrTimestamp(Hardfork.Prague), null, msg) }) it('hardforkGteHardfork()', () => {