Skip to content

Commit

Permalink
Add Paris release spec class for completeness (#6633)
Browse files Browse the repository at this point in the history
  • Loading branch information
LukaszRozmej authored Feb 2, 2024
1 parent b6f593f commit 4090798
Show file tree
Hide file tree
Showing 13 changed files with 39 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Test/Eip1153Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ namespace Nethermind.Evm.Test
/// </summary>
internal class Eip1153Tests : VirtualMachineTestsBase
{
protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.CancunBlockTimestamp;

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Test/Eip3588Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nethermind.Evm.Test
[TestFixture]
public class Eip3855Tests : VirtualMachineTestsBase
{
protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.ShanghaiBlockTimestamp;

private TestAllTracerWithOutput testBase(int repeat, bool isShanghai)
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Test/Eip3651Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace Nethermind.Evm.Test
/// </summary>
public class Eip3651Tests : VirtualMachineTestsBase
{
protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.ShanghaiBlockTimestamp;

[Test]
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Test/Eip3860Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace Nethermind.Evm.Test
{
public class Eip3860Tests : VirtualMachineTestsBase
{
protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.ShanghaiBlockTimestamp;

private readonly long _transactionCallCost = GasCostOf.Transaction + 100 + 7 * GasCostOf.VeryLow;
Expand Down
2 changes: 1 addition & 1 deletion src/Nethermind/Nethermind.Evm.Test/Eip4844Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Nethermind.Evm.Test;
[TestFixture]
public class Eip4844Tests : VirtualMachineTestsBase
{
protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.CancunBlockTimestamp;

[TestCase(0, 0, Description = "Should return 0 when no hashes")]
Expand Down
3 changes: 1 addition & 2 deletions src/Nethermind/Nethermind.Evm.Test/Eip6780Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ namespace Nethermind.Evm.Test
[TestFixture]
public class Eip6780Tests : VirtualMachineTestsBase
{

protected override long BlockNumber => MainnetSpecProvider.GrayGlacierBlockNumber;
protected override long BlockNumber => MainnetSpecProvider.ParisBlockNumber;
protected override ulong Timestamp => MainnetSpecProvider.CancunBlockTimestamp;

private byte[] _selfDestructCode;
Expand Down
4 changes: 2 additions & 2 deletions src/Nethermind/Nethermind.Evm.Test/InvalidOpcodeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@ protected override ILogManager GetLogManager()
[TestCase(MainnetSpecProvider.MuirGlacierBlockNumber)]
[TestCase(MainnetSpecProvider.BerlinBlockNumber)]
[TestCase(MainnetSpecProvider.LondonBlockNumber)]
[TestCase(MainnetSpecProvider.GrayGlacierBlockNumber + 1, MainnetSpecProvider.ShanghaiBlockTimestamp)]
[TestCase(MainnetSpecProvider.GrayGlacierBlockNumber + 2, MainnetSpecProvider.CancunBlockTimestamp)]
[TestCase(MainnetSpecProvider.ParisBlockNumber + 1, MainnetSpecProvider.ShanghaiBlockTimestamp)]
[TestCase(MainnetSpecProvider.ParisBlockNumber + 2, MainnetSpecProvider.CancunBlockTimestamp)]
[TestCase(long.MaxValue, ulong.MaxValue)]
public void Test(long blockNumber, ulong? timestamp = null)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Nethermind/Nethermind.Evm.Test/VirtualMachineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -423,7 +423,7 @@ public void Tload()
.Op(Instruction.TLOAD)
.Done;

TestAllTracerWithOutput receipt = Execute((MainnetSpecProvider.GrayGlacierBlockNumber, MainnetSpecProvider.CancunBlockTimestamp), 100000, code);
TestAllTracerWithOutput receipt = Execute((MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.CancunBlockTimestamp), 100000, code);
Assert.That(receipt.GasSpent, Is.EqualTo(GasCostOf.Transaction + GasCostOf.VeryLow * 1 + GasCostOf.TLoad), "gas");
}

Expand Down Expand Up @@ -542,7 +542,7 @@ public void Tstore()
.Op(Instruction.TSTORE)
.Done;

TestAllTracerWithOutput receipt = Execute((MainnetSpecProvider.GrayGlacierBlockNumber, MainnetSpecProvider.CancunBlockTimestamp), 100000, code);
TestAllTracerWithOutput receipt = Execute((MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.CancunBlockTimestamp), 100000, code);
Assert.That(receipt.GasSpent, Is.EqualTo(GasCostOf.Transaction + GasCostOf.VeryLow * 2 + GasCostOf.TStore), "gas");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ public void London_eips(long blockNumber, bool isEnabled)
_specProvider.GetSpec((ForkActivation)blockNumber).IsEip3541Enabled.Should().Be(isEnabled);
}

[TestCase(MainnetSpecProvider.GrayGlacierBlockNumber, MainnetSpecProvider.ShanghaiBlockTimestamp, false)]
[TestCase(MainnetSpecProvider.GrayGlacierBlockNumber, MainnetSpecProvider.CancunBlockTimestamp, true)]
[TestCase(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.ShanghaiBlockTimestamp, false)]
[TestCase(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.CancunBlockTimestamp, true)]
public void Cancun_eips(long blockNumber, ulong timestamp, bool isEnabled)
{
_specProvider.GetSpec(new ForkActivation(blockNumber, timestamp)).IsEip1153Enabled.Should().Be(isEnabled);
Expand Down
19 changes: 19 additions & 0 deletions src/Nethermind/Nethermind.Specs/Forks/15_Paris.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// SPDX-FileCopyrightText: 2024 Demerzel Solutions Limited
// SPDX-License-Identifier: LGPL-3.0-only

using System.Threading;
using Nethermind.Core.Specs;

namespace Nethermind.Specs.Forks;

public class Paris : GrayGlacier
{
private static IReleaseSpec _instance;

protected Paris()
{
Name = "Paris";
}

public new static IReleaseSpec Instance => LazyInitializer.EnsureInitialized(ref _instance, () => new Paris());
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Nethermind.Specs.Forks
{
public class Shanghai : GrayGlacier
public class Shanghai : Paris
{
private static IReleaseSpec _instance;

Expand Down
12 changes: 7 additions & 5 deletions src/Nethermind/Nethermind.Specs/MainnetSpecProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class MainnetSpecProvider : ISpecProvider
public const long LondonBlockNumber = 12_965_000;
public const long ArrowGlacierBlockNumber = 13_773_000;
public const long GrayGlacierBlockNumber = 15_050_000;
public const long ParisBlockNumber = 15_537_393;
public const ulong GenesisBlockTimestamp = 0x55ba4215;
public const ulong BeaconChainGenesisTimestamp = 0x5fc63057;
public const ulong ShanghaiBlockTimestamp = 0x64373057;
Expand All @@ -43,7 +44,8 @@ public IReleaseSpec GetSpec(ForkActivation forkActivation) =>
{ BlockNumber: < LondonBlockNumber } => Berlin.Instance,
{ BlockNumber: < ArrowGlacierBlockNumber } => London.Instance,
{ BlockNumber: < GrayGlacierBlockNumber } => ArrowGlacier.Instance,
{ Timestamp: null } or { Timestamp: < ShanghaiBlockTimestamp } => GrayGlacier.Instance,
{ BlockNumber: < ParisBlockNumber } => GrayGlacier.Instance,
{ Timestamp: null } or { Timestamp: < ShanghaiBlockTimestamp } => Paris.Instance,
{ Timestamp: < CancunBlockTimestamp } => Shanghai.Instance,
_ => Cancun.Instance
};
Expand All @@ -64,10 +66,10 @@ public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalD
public ulong TimestampFork { get; } = ShanghaiBlockTimestamp;
public UInt256? TerminalTotalDifficulty { get; private set; } = UInt256.Parse("58750000000000000000000");
public IReleaseSpec GenesisSpec => Frontier.Instance;
public static ForkActivation ShanghaiActivation { get; } = (15_050_001, ShanghaiBlockTimestamp);
public static ForkActivation CancunActivation { get; } = (15_050_002, CancunBlockTimestamp);
public static ForkActivation PragueActivation { get; } = (15_050_003, PragueBlockTimestamp);
public static ForkActivation OsakaActivation { get; } = (15_050_004, OsakaBlockTimestamp);
public static ForkActivation ShanghaiActivation { get; } = (ParisBlockNumber + 1, ShanghaiBlockTimestamp);
public static ForkActivation CancunActivation { get; } = (ParisBlockNumber + 2, CancunBlockTimestamp);
public static ForkActivation PragueActivation { get; } = (ParisBlockNumber + 3, PragueBlockTimestamp);
public static ForkActivation OsakaActivation { get; } = (ParisBlockNumber + 4, OsakaBlockTimestamp);
public ForkActivation[] TransitionActivations { get; } =
{
(ForkActivation)HomesteadBlockNumber,
Expand Down

0 comments on commit 4090798

Please sign in to comment.