Skip to content

Commit

Permalink
Add Cancun hard-fork settings for Gnosis (#6709)
Browse files Browse the repository at this point in the history
  • Loading branch information
rubo committed Feb 13, 2024
1 parent 1e539c9 commit dc320a1
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 10 deletions.
5 changes: 5 additions & 0 deletions src/Nethermind/Chains/gnosis.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@
"eip3855TransitionTimestamp": "0x64c8edbc",
"eip3860TransitionTimestamp": "0x64c8edbc",
"eip4895TransitionTimestamp": "0x64c8edbc",
"eip1153TransitionTimestamp": "0x65ef4dbc",
"eip4788TransitionTimestamp": "0x65ef4dbc",
"eip4844TransitionTimestamp": "0x65ef4dbc",
"eip5656TransitionTimestamp": "0x65ef4dbc",
"eip6780TransitionTimestamp": "0x65ef4dbc",
"eip1559BaseFeeMaxChangeDenominator": "0x8",
"eip1559ElasticityMultiplier": "0x2",
"eip1559BaseFeeInitialValue": "0x3b9aca00",
Expand Down
5 changes: 3 additions & 2 deletions src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,9 @@ public void Fork_id_and_hash_as_expected_on_sepolia(long head, ulong headTimesta
[TestCase(19039999, 0ul, "0x069a83d9", 19040000ul, "Last Berlin block")]
[TestCase(19040000, 0ul, "0x018479d3", GnosisSpecProvider.ShanghaiTimestamp, "First London block")]
[TestCase(21735000, 0ul, "0x018479d3", GnosisSpecProvider.ShanghaiTimestamp, "First GIP-31 block")]
[TestCase(31735000, GnosisSpecProvider.ShanghaiTimestamp, "0x2efe91ba", 0ul, "First Shanghai timestamp")]
[TestCase(91735000, GnosisSpecProvider.ShanghaiTimestamp, "0x2efe91ba", 0ul, "Future Shanghai timestamp")]
[TestCase(31735000, GnosisSpecProvider.ShanghaiTimestamp, "0x2efe91ba", GnosisSpecProvider.CancunTimestamp, "First Shanghai timestamp")]
[TestCase(41735000, GnosisSpecProvider.CancunTimestamp, "0x1384dfc1", 0ul, "First Cancun timestamp")]
[TestCase(91735000, GnosisSpecProvider.CancunTimestamp, "0x1384dfc1", 0ul, "Future Cancun timestamp")]
public void Fork_id_and_hash_as_expected_on_gnosis(long head, ulong headTimestamp, string forkHashHex, ulong next, string description)
{
ChainSpecLoader loader = new ChainSpecLoader(new EthereumJsonSerializer());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,11 @@ public static IEnumerable<TestCaseData> GnosisActivations
yield return new TestCaseData((ForkActivation)GnosisSpecProvider.BerlinBlockNumber) { TestName = "Berlin" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber - 1)) { TestName = "Before London" };
yield return new TestCaseData((ForkActivation)GnosisSpecProvider.LondonBlockNumber) { TestName = "London" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber, GnosisSpecProvider.ShanghaiTimestamp - 1)) { TestName = "Before Shanghai" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber, GnosisSpecProvider.ShanghaiTimestamp)) { TestName = "Shanghai" };
yield return new TestCaseData((ForkActivation)(999_999_999, 999_999_999)) { TestName = "Future" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber + 1, GnosisSpecProvider.ShanghaiTimestamp - 1)) { TestName = "Before Shanghai" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber + 1, GnosisSpecProvider.ShanghaiTimestamp)) { TestName = "Shanghai" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber + 2, GnosisSpecProvider.CancunTimestamp - 1)) { TestName = "Before Cancun" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber + 2, GnosisSpecProvider.CancunTimestamp)) { TestName = "Cancun" };
yield return new TestCaseData((ForkActivation)(GnosisSpecProvider.LondonBlockNumber + 2, GnosisSpecProvider.CancunTimestamp + 100000000)) { TestName = "Future" };
}
}

Expand All @@ -292,10 +294,8 @@ public void Gnosis_loads_properly(ForkActivation forkActivation)

VerifyGnosisPreShanghaiSpecifics(provider);

IReleaseSpec? preShanghaiSpec = provider.GetSpec((GnosisSpecProvider.LondonBlockNumber + 1,
GnosisSpecProvider.ShanghaiTimestamp - 1));
IReleaseSpec? postShanghaiSpec = provider.GetSpec((GnosisSpecProvider.LondonBlockNumber + 1,
GnosisSpecProvider.ShanghaiTimestamp));
IReleaseSpec? preShanghaiSpec = provider.GetSpec((1, GnosisSpecProvider.ShanghaiTimestamp - 1));
IReleaseSpec? postShanghaiSpec = provider.GetSpec((1, GnosisSpecProvider.ShanghaiTimestamp));

VerifyGnosisShanghaiSpecifics(preShanghaiSpec, postShanghaiSpec);
VerifyGnosisCancunSpecifics();
Expand Down
4 changes: 3 additions & 1 deletion src/Nethermind/Nethermind.Specs/GnosisSpecProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public class GnosisSpecProvider : ISpecProvider
public const long LondonBlockNumber = 19_040_000;
public const ulong BeaconChainGenesisTimestamp = 0x61b10dbc;
public const ulong ShanghaiTimestamp = 0x64c8edbc;
public const ulong CancunTimestamp = 0x65ef4dbc;

private GnosisSpecProvider() { }

Expand All @@ -32,7 +33,8 @@ public IReleaseSpec GetSpec(ForkActivation forkActivation)
_ => forkActivation.Timestamp switch
{
null or < ShanghaiTimestamp => London.Instance,
_ => Shanghai.Instance
< CancunTimestamp => Shanghai.Instance,
_ => Cancun.Instance
}
};
}
Expand Down

0 comments on commit dc320a1

Please sign in to comment.