Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions src/Nethermind/Chains/foundation.json
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,14 @@
"eip7251TransitionTimestamp": "0x681b3057",
"eip7702TransitionTimestamp": "0x681b3057",
"eip7623TransitionTimestamp": "0x681b3057",
"eip7594TransitionTimestamp": "0x6930b057",
"eip7823TransitionTimestamp": "0x6930b057",
"eip7825TransitionTimestamp": "0x6930b057",
"eip7883TransitionTimestamp": "0x6930b057",
"eip7918TransitionTimestamp": "0x6930b057",
"eip7934TransitionTimestamp": "0x6930b057",
"eip7939TransitionTimestamp": "0x6930b057",
"eip7951TransitionTimestamp": "0x6930b057",
"depositContractAddress": "0x00000000219ab540356cbb839cbe05303d7705fa",
"terminalTotalDifficulty": "C70D808A128D7380000",
"blobSchedule": [
Expand All @@ -208,6 +216,20 @@
"target": 6,
"max": 9,
"baseFeeUpdateFraction": "0x4c6964"
},
{
"name": "bpo1",
"timestamp": "0x69383057",
"target": 10,
"max": 15,
"baseFeeUpdateFraction": "0x7f5a51"
},
{
"name": "bpo2",
"timestamp": "0x695db057",
"target": 14,
"max": 21,
"baseFeeUpdateFraction": "0xb24b3f"
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1551,6 +1551,9 @@ public void Should_return_expected_capabilities_for_mainnet()

nameof(IEngineRpcModule.engine_getPayloadV4),
nameof(IEngineRpcModule.engine_newPayloadV4),

nameof(IEngineRpcModule.engine_getPayloadV5),
nameof(IEngineRpcModule.engine_getBlobsV2)
};
Assert.That(result, Is.EquivalentTo(expectedMethods));
}
Expand Down
10 changes: 8 additions & 2 deletions src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,14 @@ public class ForkInfoTests
[TestCase(15_051_000, 1_710_338_134ul, "0xdce96c2d", 1_710_338_135ul, "Future Shanghai timestamp")]
[TestCase(15_051_000, 1_710_338_135ul, "0x9f3d2254", 1_746_612_311ul, "First Cancun timestamp")]
[TestCase(15_051_000, 1_746_612_310ul, "0x9f3d2254", 1_746_612_311ul, "Future Cancun timestamp")]
[TestCase(15_051_000, 1_746_612_311ul, "0xc376cf8b", 0ul, "First Prague timestamp")]
[TestCase(15_051_000, 1_846_612_311ul, "0xc376cf8b", 0ul, "Future Prague timestamp")]
[TestCase(15_051_000, 1_746_612_311ul, "0xc376cf8b", 1_764_798_551ul, "First Prague timestamp")]
[TestCase(15_051_000, 1_764_798_550ul, "0xc376cf8b", 1_764_798_551ul, "Future Prague timestamp")]
[TestCase(15_051_000, 1_764_798_551ul, "0x5167e2a6", 1_765_290_071ul, "First Osaka timestamp")]
[TestCase(15_051_000, 1_765_290_070ul, "0x5167e2a6", 1_765_290_071ul, "Future Osaka timestamp")]
[TestCase(15_051_000, 1_765_290_071ul, "0xcba2a1c0", 1_767_747_671ul, "First BPO1 timestamp")]
[TestCase(15_051_000, 1_767_747_670ul, "0xcba2a1c0", 1_767_747_671ul, "Future BPO1 timestamp")]
[TestCase(15_051_000, 1_767_747_671ul, "0x07c9462e", 0ul, "First BPO2 timestamp")]
[TestCase(15_051_000, 1_867_747_671ul, "0x07c9462e", 0ul, "Future BPO2 timestamp")]
public void Fork_id_and_hash_as_expected(long head, ulong headTimestamp, string forkHashHex, ulong next, string description)
{
Test(head, headTimestamp, KnownHashes.MainnetGenesis, forkHashHex, next, description, MainnetSpecProvider.Instance, "foundation.json");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,13 @@ public static IEnumerable<TestCaseData> MainnetActivations
yield return new TestCaseData(MainnetSpecProvider.CancunActivation) { TestName = "Cancun" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.PragueBlockTimestamp - 1)) { TestName = "Before Prague" };
yield return new TestCaseData(MainnetSpecProvider.PragueActivation) { TestName = "Prague" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.PragueBlockTimestamp + 100000000)) { TestName = "Future" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.OsakaBlockTimestamp - 1)) { TestName = "Before Osaka" };
yield return new TestCaseData(MainnetSpecProvider.OsakaActivation) { TestName = "Osaka" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.BPO1BlockTimestamp - 1)) { TestName = "Before BPO1" };
yield return new TestCaseData(MainnetSpecProvider.BPO1Activation) { TestName = "BPO1" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.BPO2BlockTimestamp - 1)) { TestName = "Before BPO2" };
yield return new TestCaseData(MainnetSpecProvider.BPO2Activation) { TestName = "BPO2" };
yield return new TestCaseData(new ForkActivation(MainnetSpecProvider.ParisBlockNumber, MainnetSpecProvider.BPO2BlockTimestamp + 100000000)) { TestName = "Future" };
}
}

Expand Down Expand Up @@ -595,9 +601,13 @@ public void Mainnet_loads_properly(ForkActivation forkActivation)

IReleaseSpec postCancunSpec = provider.GetSpec(MainnetSpecProvider.CancunActivation);
IReleaseSpec postPragueSpec = provider.GetSpec(MainnetSpecProvider.PragueActivation);
IReleaseSpec postOsakaSpec = provider.GetSpec(MainnetSpecProvider.OsakaActivation);
IReleaseSpec postBPO1Spec = provider.GetSpec(MainnetSpecProvider.BPO1Activation);
IReleaseSpec postBPO2Spec = provider.GetSpec(MainnetSpecProvider.BPO2Activation);

VerifyCancunSpecificsForMainnetAndSepolia(postCancunSpec);
VerifyPragueSpecificsForMainnetHoodiAndSepolia(provider.ChainId, postPragueSpec);
VerifyOsakaSpecificsForMainnetHoleskyHoodiAndSepolia(provider.ChainId, postOsakaSpec, postBPO1Spec, postBPO2Spec);
}

[Flags]
Expand Down
12 changes: 10 additions & 2 deletions src/Nethermind/Nethermind.Specs/MainnetSpecProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ public class MainnetSpecProvider : ISpecProvider
public const ulong ShanghaiBlockTimestamp = 0x64373057;
public const ulong CancunBlockTimestamp = 0x65F1B057;
public const ulong PragueBlockTimestamp = 0x681b3057;
public const ulong OsakaBlockTimestamp = ulong.MaxValue - 1;
public const ulong OsakaBlockTimestamp = 0x6930b057;
public const ulong BPO1BlockTimestamp = 0x69383057;
public const ulong BPO2BlockTimestamp = 0x695db057;

IReleaseSpec ISpecProvider.GetSpecInternal(ForkActivation forkActivation) =>
forkActivation switch
Expand All @@ -49,7 +51,9 @@ IReleaseSpec ISpecProvider.GetSpecInternal(ForkActivation forkActivation) =>
{ Timestamp: < CancunBlockTimestamp } => Shanghai.Instance,
{ Timestamp: < PragueBlockTimestamp } => Cancun.Instance,
{ Timestamp: < OsakaBlockTimestamp } => Prague.Instance,
_ => Osaka.Instance
{ Timestamp: < BPO1BlockTimestamp } => Osaka.Instance,
{ Timestamp: < BPO2BlockTimestamp } => BPO1.Instance,
_ => BPO2.Instance
};

public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalDifficulty = null)
Expand All @@ -73,6 +77,8 @@ public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalD
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 static ForkActivation BPO1Activation { get; } = (ParisBlockNumber + 5, BPO1BlockTimestamp);
public static ForkActivation BPO2Activation { get; } = (ParisBlockNumber + 6, BPO2BlockTimestamp);
public ForkActivation[] TransitionActivations { get; } =
{
(ForkActivation)HomesteadBlockNumber,
Expand All @@ -91,6 +97,8 @@ public void UpdateMergeTransitionInfo(long? blockNumber, UInt256? terminalTotalD
CancunActivation,
PragueActivation,
OsakaActivation,
BPO1Activation,
BPO2Activation,
};

public static MainnetSpecProvider Instance { get; } = new();
Expand Down