From 0a642ff5395491610bb1541cd9f2b08b66a48dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Moraczy=C5=84ski?= Date: Mon, 6 Mar 2023 09:47:16 +0100 Subject: [PATCH] Goerli Shapella Configs (#5366) * Goerli shapella * Refactor * remove space * small fix --------- Co-authored-by: smartprogrammer --- src/Nethermind/Chains/goerli.json | 22 +++++++++++-------- .../Nethermind.Network.Test/ForkInfoTests.cs | 6 +++-- .../ChainSpecBasedSpecProviderTests.cs | 3 ++- .../ChainSpecStyle/ChainSpecLoaderTests.cs | 1 + .../Nethermind.Specs/GoerliSpecProvider.cs | 21 +++++++++++++----- 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/Nethermind/Chains/goerli.json b/src/Nethermind/Chains/goerli.json index dece4a37bab..02490845d6d 100644 --- a/src/Nethermind/Chains/goerli.json +++ b/src/Nethermind/Chains/goerli.json @@ -32,15 +32,19 @@ "eip1884Transition": "0x17D433", "eip2028Transition": "0x17D433", "eip2200Transition": "0x17D433", - "eip2565Transition": "0x441064", - "eip2929Transition": "0x441064", - "eip2930Transition": "0x441064", - "eip1559Transition": "0x4D3FCD", - "eip3198Transition": "0x4D3FCD", - "eip3529Transition": "0x4D3FCD", - "eip3541Transition": "0x4D3FCD", - "terminalTotalDifficulty": "A4A470", - "gasLimitBoundDivisor": "0x400", + "eip2565Transition": "0x441064", + "eip2929Transition": "0x441064", + "eip2930Transition": "0x441064", + "eip1559Transition": "0x4D3FCD", + "eip3198Transition": "0x4D3FCD", + "eip3529Transition": "0x4D3FCD", + "eip3541Transition": "0x4D3FCD", + "eip3651TransitionTimestamp": "0x6410F460", + "eip3855TransitionTimestamp": "0x6410F460", + "eip3860TransitionTimestamp": "0x6410F460", + "eip4895TransitionTimestamp": "0x6410F460", + "terminalTotalDifficulty": "A4A470", + "gasLimitBoundDivisor": "0x400", "maxCodeSize": "0x6000", "maxCodeSizeTransition": "0x0", "maximumExtraDataSize": "0xffff", diff --git a/src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs b/src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs index 9166cbb7896..05351c0b5ac 100644 --- a/src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs +++ b/src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs @@ -105,8 +105,10 @@ public void Fork_id_and_hash_as_expected_with_merge_fork_id(long head, ulong hea [TestCase(1_561_651L, 0ul, "0xc25efa5c", 4_460_644ul, "First Istanbul block")] [TestCase(4_460_644L, 0ul, "0x757a1c47", 5_062_605ul, "First Berlin block")] [TestCase(4_600_000L, 0ul, "0x757a1c47", 5_062_605ul, "Future Berlin block")] - [TestCase(5_062_605L, 0ul, "0xB8C6299D", 0ul, "First London block")] - [TestCase(6_000_000, 0ul, "0xB8C6299D", 0ul, "Future London block")] + [TestCase(5_062_605L, 0ul, "0xB8C6299D", 1678832736ul, "First London block")] + [TestCase(6_000_000, 0ul, "0xB8C6299D", 1678832736ul, "Future London block")] + [TestCase(6_000_001, 1678832736ul, "0xf9843abf", 0ul, "First Shanghai timestamp")] + [TestCase(6_000_001, 2678832736ul, "0xf9843abf", 0ul, "Future Shanghai timestamp")] public void Fork_id_and_hash_as_expected_on_goerli(long head, ulong headTimestamp, string forkHashHex, ulong next, string description) { Test(head, headTimestamp, KnownHashes.GoerliGenesis, forkHashHex, next, description, GoerliSpecProvider.Instance, "goerli.json"); diff --git a/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecBasedSpecProviderTests.cs b/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecBasedSpecProviderTests.cs index 735aa5c99d4..661eb620d97 100644 --- a/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecBasedSpecProviderTests.cs +++ b/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecBasedSpecProviderTests.cs @@ -243,7 +243,8 @@ public void Goerli_loads_properly() (ForkActivation)GoerliSpecProvider.BerlinBlockNumber, (ForkActivation)(GoerliSpecProvider.LondonBlockNumber - 1), (ForkActivation)GoerliSpecProvider.LondonBlockNumber, - (ForkActivation)100000000, // far in the future + new ForkActivation(GoerliSpecProvider.LondonBlockNumber + 1, GoerliSpecProvider.ShanghaiTimestamp), + new ForkActivation(GoerliSpecProvider.LondonBlockNumber + 1, GoerliSpecProvider.ShanghaiTimestamp + 100000000) // far in future }; CompareSpecProviders(goerli, provider, forkActivationsToTest); diff --git a/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecLoaderTests.cs b/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecLoaderTests.cs index bd85eb9815a..bd601d75568 100644 --- a/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecLoaderTests.cs +++ b/src/Nethermind/Nethermind.Specs.Test/ChainSpecStyle/ChainSpecLoaderTests.cs @@ -214,6 +214,7 @@ public void Can_load_goerli() chainSpec.MuirGlacierNumber.Should().Be(null); chainSpec.BerlinBlockNumber.Should().Be(GoerliSpecProvider.BerlinBlockNumber); chainSpec.LondonBlockNumber.Should().Be(GoerliSpecProvider.LondonBlockNumber); + chainSpec.ShanghaiTimestamp.Should().Be(GoerliSpecProvider.ShanghaiTimestamp); } [Test] diff --git a/src/Nethermind/Nethermind.Specs/GoerliSpecProvider.cs b/src/Nethermind/Nethermind.Specs/GoerliSpecProvider.cs index 0915f1af23e..767ba96f6c5 100644 --- a/src/Nethermind/Nethermind.Specs/GoerliSpecProvider.cs +++ b/src/Nethermind/Nethermind.Specs/GoerliSpecProvider.cs @@ -36,27 +36,36 @@ public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalD private IReleaseSpec LondonNoBomb { get; } = London.Instance; - public IReleaseSpec GetSpec(ForkActivation forkActivation) => - forkActivation.BlockNumber switch + + public IReleaseSpec GetSpec(ForkActivation forkActivation) + { + return forkActivation.BlockNumber switch { < IstanbulBlockNumber => GenesisSpec, < BerlinBlockNumber => IstanbulNoBomb, - < LondonBlockNumber => BerlinNoBomb, - _ => LondonNoBomb + < LondonBlockNumber => Berlin.Instance, + _ => forkActivation.Timestamp switch + { + null or < ShanghaiTimestamp => London.Instance, + _ => Shanghai.Instance + } }; + } public long? DaoBlockNumber => null; public const long IstanbulBlockNumber = 1_561_651; public const long BerlinBlockNumber = 4_460_644; public const long LondonBlockNumber = 5_062_605; - public ulong NetworkId => Core.BlockchainIds.Goerli; + public const ulong ShanghaiTimestamp = 1678832736; + public ulong NetworkId => BlockchainIds.Goerli; public ulong ChainId => NetworkId; public ForkActivation[] TransitionActivations { get; } = { (ForkActivation)IstanbulBlockNumber, (ForkActivation)BerlinBlockNumber, - (ForkActivation)LondonBlockNumber + (ForkActivation)LondonBlockNumber, + (LondonBlockNumber, ShanghaiTimestamp) }; } }