Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automate Superchain Registry chain support #8105

Open
wants to merge 35 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
1596721
Initial scripts
emlautarom1 Jan 22, 2025
9b40dfa
Remove `codeHashes` indirection
emlautarom1 Jan 23, 2025
372c69c
Use `BytesIO` instead of `StringIO` for binary data
emlautarom1 Jan 23, 2025
38efd5c
Merge into single script
emlautarom1 Jan 23, 2025
47c0c1e
Rename `folder` to `directory`
emlautarom1 Jan 23, 2025
80d6f33
Store downloads in temp folder
emlautarom1 Jan 23, 2025
577336f
Use tempdir for intermediate `.json` files
emlautarom1 Jan 23, 2025
b3eaa22
Import ordering
emlautarom1 Jan 23, 2025
91b38d9
Generate Nethermind runner configs
emlautarom1 Jan 23, 2025
706f51e
Use `listdir` instead of `walk`
emlautarom1 Jan 24, 2025
6f97b13
Initial Zstd-aware loader
emlautarom1 Jan 24, 2025
86642ec
Use `Limbo` logger
emlautarom1 Jan 24, 2025
d7fb8e3
Use file format aware loader everywhere
emlautarom1 Jan 24, 2025
d718e5e
Remove hardcoded `GenesisHash`
emlautarom1 Jan 24, 2025
215db37
Added copy generated files script
emlautarom1 Jan 24, 2025
4b70457
Generated files
emlautarom1 Jan 24, 2025
b83e942
Update bootnodes
emlautarom1 Jan 27, 2025
e3ff58a
Map `alloc` to `accounts`
emlautarom1 Jan 27, 2025
63abda3
Update autogen ChainSpec files
emlautarom1 Jan 27, 2025
af5520a
Remove `enr` entries
emlautarom1 Jan 27, 2025
785c1c6
Update autogen files
emlautarom1 Jan 27, 2025
3e63d56
Use provided serializer
emlautarom1 Jan 27, 2025
d47804f
Include `GenesisHash`
emlautarom1 Jan 28, 2025
f704108
Update autogen files
emlautarom1 Jan 28, 2025
700d891
Update autogen files
emlautarom1 Jan 28, 2025
486c486
Fix `genesis` fields
emlautarom1 Jan 28, 2025
cdf5d29
Use `4` spaces for Python files
emlautarom1 Jan 28, 2025
0328aec
Merge branch 'master' into feat/superchain-registry
emlautarom1 Jan 28, 2025
2124634
Cleanup script
emlautarom1 Jan 28, 2025
6b58743
Update autogen files
emlautarom1 Jan 28, 2025
238ae6d
Replace `zstd` with `zst`
emlautarom1 Jan 28, 2025
b855822
Formatting
emlautarom1 Jan 28, 2025
40baa40
Fix E2E tests
emlautarom1 Jan 28, 2025
1e8abec
Delete old `zstd` files
emlautarom1 Jan 28, 2025
ff0d242
Merge branch 'master' into feat/superchain-registry
emlautarom1 Jan 31, 2025
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
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ file_header_template = SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited\n

[*.cs]
indent_size = 4
[*.py]
indent_size = 4

#### Naming styles ####

Expand Down
6 changes: 6 additions & 0 deletions scripts/copy-superchain.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add the missing file header:

Suggested change
#!/usr/bin/env bash
#!/bin/bash
# SPDX-FileCopyrightText: 2025 Demerzel Solutions Limited
# SPDX-License-Identifier: LGPL-3.0-only


set -euo pipefail

cp output/chainspec/* ../src/Nethermind/Chains
cp output/runner/* ../src/Nethermind/Nethermind.Runner/configs
338 changes: 338 additions & 0 deletions scripts/superchain.py

Large diffs are not rendered by default.

Binary file added src/Nethermind/Chains/arena-z-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/automata-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/base-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/base-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/bob-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/cyber-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/cyber-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/dictionary
Binary file not shown.
Binary file added src/Nethermind/Chains/ethernity-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/ethernity-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/funki-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/funki-sepolia.json.zst
Binary file not shown.
Binary file not shown.
Binary file added src/Nethermind/Chains/ink-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/ink-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/lisk-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/lisk-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/lyra-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/metal-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/metal-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/mint-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/mode-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/mode-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/op-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/op-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/orderly-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/pivotal-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/polynomial-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/race-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/race-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/redstone-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/shape-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/shape-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/soneium-mainnet.json.zst
Binary file not shown.
Binary file not shown.
Binary file added src/Nethermind/Chains/sseed-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/swan-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/swell-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/tbn-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/tbn-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/unichain-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/worldchain-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/worldchain-sepolia.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/xterio-eth-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/zora-mainnet.json.zst
Binary file not shown.
Binary file added src/Nethermind/Chains/zora-sepolia.json.zst
Binary file not shown.
3 changes: 2 additions & 1 deletion src/Nethermind/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,6 @@
<PackageVersion Include="TestableIO.System.IO.Abstractions.TestingHelpers" Version="21.2.1" />
<PackageVersion Include="TestableIO.System.IO.Abstractions.Wrappers" Version="21.2.1" />
<PackageVersion Include="Websocket.Client" Version="5.1.2" />
<PackageVersion Include="ZstdSharp.Port" Version="0.8.4" />
</ItemGroup>
</Project>
</Project>
6 changes: 4 additions & 2 deletions src/Nethermind/Nethermind.AuRa.Test/ChainSpecLoaderTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
using Nethermind.Consensus.AuRa.Config;
using Nethermind.Core;
using Nethermind.Core.Extensions;
using Nethermind.Core.Test;
using Nethermind.Logging;
using Nethermind.Serialization.Json;
using Nethermind.Specs;
using Nethermind.Specs.ChainSpecStyle;
Expand All @@ -18,8 +20,8 @@ public class ChainSpecLoaderTest
{
private static ChainSpec LoadChainSpec(string path)
{
ChainSpecLoader chainSpecLoader = new(new EthereumJsonSerializer());
ChainSpec chainSpec = chainSpecLoader.LoadFromFile(path);
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);
return chainSpec;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@ private Block GetGenesisBlock(string chainspecPath)

private static ChainSpec LoadChainSpec(string path)
{
ChainSpecLoader chainSpecLoader = new(new EthereumJsonSerializer());
ChainSpec chainSpec = chainSpecLoader.LoadFromFile(path);
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);
return chainSpec;
}
}
5 changes: 3 additions & 2 deletions src/Nethermind/Nethermind.Ethash.Test/ChainSpecLoaderTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Nethermind.Core.Crypto;
using Nethermind.Core.Extensions;
using Nethermind.Int256;
using Nethermind.Logging;
using Nethermind.Serialization.Json;
using Nethermind.Specs.ChainSpecStyle;
using NUnit.Framework;
Expand All @@ -17,8 +18,8 @@ public class ChainSpecLoaderTests
{
private static ChainSpec LoadChainSpec(string path)
{
ChainSpecLoader chainSpecLoader = new(new EthereumJsonSerializer());
ChainSpec chainSpec = chainSpecLoader.LoadFromFile(path);
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);
return chainSpec;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.IO;
using Nethermind.Core.Specs;
using Nethermind.Int256;
using Nethermind.Logging;
using Nethermind.Serialization.Json;
using Nethermind.Specs.ChainSpecStyle;
using Nethermind.Specs.Test.ChainSpecStyle;
Expand Down Expand Up @@ -34,9 +35,9 @@ public void Correctly_read_merge_block_number()
[Test]
public void Correctly_read_merge_parameters_from_file()
{
ChainSpecLoader loader = new(new EthereumJsonSerializer());
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
string path = Path.Combine(TestContext.CurrentContext.WorkDirectory, "Specs/test_spec.json");
ChainSpec chainSpec = loader.LoadFromFile(path);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);

ChainSpecBasedSpecProvider provider = new(chainSpec);
Assert.That(provider.MergeBlockNumber?.BlockNumber, Is.EqualTo(101));
Expand Down Expand Up @@ -67,9 +68,10 @@ public void Changing_spec_provider_in_dynamic_merge_transition()
{
long expectedTerminalPoWBlock = 100;
long newMergeBlock = 50;
ChainSpecLoader loader = new(new EthereumJsonSerializer());

var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
string path = Path.Combine(TestContext.CurrentContext.WorkDirectory, "Specs/test_spec.json");
ChainSpec chainSpec = loader.LoadFromFile(path);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);

ChainSpecBasedSpecProvider provider = new(chainSpec);
Assert.That(provider.MergeBlockNumber?.BlockNumber, Is.EqualTo(expectedTerminalPoWBlock + 1));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1543,9 +1543,9 @@ public async Task Should_return_capabilities()
[Test]
public void Should_return_expected_capabilities_for_mainnet()
{
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
string path = Path.Combine(TestContext.CurrentContext.WorkDirectory, "../../../../", "Chains/foundation.json");
ChainSpecLoader chainSpecLoader = new(new EthereumJsonSerializer());
ChainSpec chainSpec = chainSpecLoader.LoadFromFile(path);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);
ChainSpecBasedSpecProvider specProvider = new(chainSpec);
EngineRpcCapabilitiesProvider engineRpcCapabilitiesProvider = new(specProvider);
ExchangeCapabilitiesHandler exchangeCapabilitiesHandler = new(engineRpcCapabilitiesProvider, LimboLogs.Instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,10 @@ public void Read_TTD_from_chainspec_if_not_specified_in_merge_config()
{
UInt256 expectedTtd = 10;
IBlockTree blockTree = Substitute.For<IBlockTree>();
ChainSpecLoader loader = new(new EthereumJsonSerializer());

var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
string path = Path.Combine(TestContext.CurrentContext.WorkDirectory, "Specs/test_spec.json");
ChainSpec chainSpec = loader.LoadFromFile(path);
var chainSpec = loader.LoadEmbeddedOrFromFile(path);

ChainSpecBasedSpecProvider specProvider = new(chainSpec);
PoSSwitcher poSSwitcher = new(new MergeConfig(), new SyncConfig(), new MemDb(), blockTree, specProvider, new ChainSpec(), LimboLogs.Instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ public class E2EDiscoveryTests(DiscoveryVersion discoveryVersion)
private IContainer CreateNode(PrivateKey nodeKey, IEnode? bootEnode = null)
{
IConfigProvider configProvider = new ConfigProvider();
ChainSpec spec = new ChainSpecLoader(new EthereumJsonSerializer()).LoadEmbeddedOrFromFile("chainspec/foundation.json", default);
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile("chainspec/foundation.json");
spec.Bootnodes = [];
if (bootEnode is not null)
{
Expand Down
21 changes: 11 additions & 10 deletions src/Nethermind/Nethermind.Network.Test/ForkInfoTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using Nethermind.Core.Extensions;
using Nethermind.Core.Specs;
using Nethermind.Core.Test.Builders;
using Nethermind.Logging;
using Nethermind.Serialization.Json;
using Nethermind.Specs;
using Nethermind.Specs.ChainSpecStyle;
Expand Down Expand Up @@ -95,8 +96,8 @@ public void Fork_id_and_hash_as_expected_with_timestamps(long head, ulong headTi
[TestCase(21_811_000, 0ul, "0x3f5fd195", 1681338455UL, "Future Merge Fork Id test")]
public void Fork_id_and_hash_as_expected_with_merge_fork_id(long head, ulong headTimestamp, string forkHashHex, ulong next, string description)
{
ChainSpecLoader loader = new ChainSpecLoader(new EthereumJsonSerializer());
ChainSpec spec = loader.LoadFromFile("../../../../Chains/foundation.json");
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile("../../../../Chains/foundation.json");
spec.Parameters.MergeForkIdTransition = 21_000_000L;
spec.MergeForkIdBlockNumber = 21_000_000L;
ChainSpecBasedSpecProvider provider = new ChainSpecBasedSpecProvider(spec);
Expand Down Expand Up @@ -145,8 +146,8 @@ public void Fork_id_and_hash_as_expected_on_sepolia(long head, ulong headTimesta
[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());
ChainSpec spec = loader.LoadFromFile("../../../../Chains/gnosis.json");
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile("../../../../Chains/gnosis.json");
ChainSpecBasedSpecProvider provider = new ChainSpecBasedSpecProvider(spec);
Test(head, headTimestamp, KnownHashes.GnosisGenesis, forkHashHex, next, description, provider);
}
Expand All @@ -157,8 +158,8 @@ public void Fork_id_and_hash_as_expected_on_gnosis(long head, ulong headTimestam
[TestCase(5_000_000, 9984930320ul, "0x5fbc16bc", 0ul, "Future Cancun timestamp")]
public void Fork_id_and_hash_as_expected_on_chiado(long head, ulong headTimestamp, string forkHashHex, ulong next, string description)
{
ChainSpecLoader loader = new ChainSpecLoader(new EthereumJsonSerializer());
ChainSpec spec = loader.LoadFromFile("../../../../Chains/chiado.json");
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile("../../../../Chains/chiado.json");
ChainSpecBasedSpecProvider provider = new ChainSpecBasedSpecProvider(spec);
Test(head, headTimestamp, KnownHashes.ChiadoGenesis, forkHashHex, next, description, provider);
}
Expand Down Expand Up @@ -304,8 +305,8 @@ public void Test_fork_id_validation_mainnet(long headNumber, ulong headTimestamp
ISpecProvider specProvider = MainnetSpecProvider.Instance;
if (UseTimestampSpec)
{
ChainSpecLoader loader = new ChainSpecLoader(new EthereumJsonSerializer());
ChainSpec spec = loader.LoadFromFile($"../../../../{Assembly.GetExecutingAssembly().GetName().Name}/TimestampForkIdTest.json");
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile($"../../../../{Assembly.GetExecutingAssembly().GetName().Name}/TimestampForkIdTest.json");
specProvider = new ChainSpecBasedSpecProvider(spec);
}

Expand Down Expand Up @@ -342,8 +343,8 @@ private static void Test(long head, ulong headTimestamp, Hash256 genesisHash, st

private static void Test(long head, ulong headTimestamp, Hash256 genesisHash, string forkHashHex, ulong next, string description, string chainSpec, string path = "../../../../Chains")
{
ChainSpecLoader loader = new ChainSpecLoader(new EthereumJsonSerializer());
ChainSpec spec = loader.LoadFromFile(Path.Combine(path, chainSpec));
var loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
ChainSpec spec = loader.LoadEmbeddedOrFromFile(Path.Combine(path, chainSpec));
ChainSpecBasedSpecProvider provider = new ChainSpecBasedSpecProvider(spec);
Test(head, headTimestamp, genesisHash, forkHashHex, next, description, provider);
}
Expand Down
23 changes: 13 additions & 10 deletions src/Nethermind/Nethermind.Runner.Test/ChainSpecFilesTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,26 @@ namespace Nethermind.Runner.Test
[TestFixture]
public class ChainSpecFilesTests
{
private readonly ChainSpecFileLoader _loader;

private readonly IJsonSerializer _jsonSerializer = new EthereumJsonSerializer();
private readonly IChainSpecLoader _loader;
private readonly ILogger _logger;
public ChainSpecFilesTests()
{
_loader = new ChainSpecLoader(_jsonSerializer);
_logger = default;
_loader = new ChainSpecFileLoader(new EthereumJsonSerializer(), LimboTraceLogger.Instance);
}

[TestCase("foundation", 1UL)]
[TestCase("chainspec/foundation", 1UL)]
[TestCase("chainspec/foundation.json", 1UL)]
public void different_formats_to_chainSpecPath(string chainSpecPath, ulong chainId)
{
_loader.LoadEmbeddedOrFromFile(chainSpecPath, _logger).Should()
_loader.LoadEmbeddedOrFromFile(chainSpecPath).Should()
.Match<ChainSpec>(cs => cs.ChainId == chainId);
}

[TestCase("testspec.json", 0x55UL)]
public void ChainSpec_from_file(string chainSpecPath, ulong chainId)
{
_loader.LoadEmbeddedOrFromFile(chainSpecPath, _logger).Should()
_loader.LoadEmbeddedOrFromFile(chainSpecPath).Should()
.Match<ChainSpec>(cs => cs.ChainId == chainId);
}

Expand All @@ -45,16 +42,22 @@ public void ChainSpec_from_file(string chainSpecPath, ulong chainId)
[TestCase("holesky.json", 0x4268UL)]
public void ignoring_custom_chainSpec_when_embedded_exists(string chainSpecPath, ulong chainId)
{
_loader.LoadEmbeddedOrFromFile(chainSpecPath, _logger).Should()
_loader.LoadEmbeddedOrFromFile(chainSpecPath).Should()
.Match<ChainSpec>(cs => cs.ChainId == chainId);
}

[TestCase("chainspec/custom_chainspec_that_does_not_exist.json")]
public void ChainSpecNotFound(string chainSpecPath)
{
_loader.Invoking(l => l.LoadEmbeddedOrFromFile(chainSpecPath, _logger))
.Should().Throw<FileNotFoundException>();
var tryLoad = () => _loader.LoadEmbeddedOrFromFile(chainSpecPath);
tryLoad.Should().Throw<FileNotFoundException>();
}

[TestCase("chainspec/arena-z-mainnet.json.zst", 7897UL)]
public void Zstandard_Compressed_ChainSpec(string chainSpecPath, ulong chainId)
{
_loader.LoadEmbeddedOrFromFile(chainSpecPath).Should()
.Match<ChainSpec>(cs => cs.ChainId == chainId);
}
}
}
4 changes: 2 additions & 2 deletions src/Nethermind/Nethermind.Runner/Ethereum/Api/ApiBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ private ChainSpec LoadChainSpec(IJsonSerializer ethereumJsonSerializer)

ThisNodeInfo.AddInfo("Chainspec :", _initConfig.ChainSpecPath);

IChainSpecLoader loader = new ChainSpecLoader(ethereumJsonSerializer);
ChainSpec chainSpec = loader.LoadEmbeddedOrFromFile(_initConfig.ChainSpecPath, _logger);
var loader = new ChainSpecFileLoader(ethereumJsonSerializer, _logger);
ChainSpec chainSpec = loader.LoadEmbeddedOrFromFile(_initConfig.ChainSpecPath);
return chainSpec;
}

Expand Down
37 changes: 37 additions & 0 deletions src/Nethermind/Nethermind.Runner/configs/arena-z-mainnet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json",
"Init": {
"ChainSpecPath": "chainspec/arena-z-mainnet.json.zst",
"GenesisHash": "0xbe7112a730b1fae8d94115271adc600559ebe87c75df1d2df9414bd7298eb7fb",
"BaseDbPath": "nethermind_db/arena-z-mainnet",
"LogFileName": "arena-z-mainnet.logs.txt"
},
"TxPool": {
"BlobsSupport": "Disabled"
},
"Sync": {
"FastSync": true,
"SnapSync": true,
"FastSyncCatchUpHeightDelta": "10000000000"
},
"Discovery": {
"DiscoveryVersion": "V5"
},
"JsonRpc": {
"Enabled": true,
"Port": 8545,
"EnginePort": 8551
},
"Pruning": {
"PruningBoundary": 192
},
"Blocks": {
"SecondsPerSlot": 2
},
"Merge": {
"Enabled": true
},
"Optimism": {
"SequencerUrl": "https://rpc.arena-z.gg"
}
}
37 changes: 37 additions & 0 deletions src/Nethermind/Nethermind.Runner/configs/automata-mainnet.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json",
"Init": {
"ChainSpecPath": "chainspec/automata-mainnet.json.zst",
"GenesisHash": "0x11bb44203634fd85571a9971e6f09d633cbf22826681f809283081ff4e1b5192",
"BaseDbPath": "nethermind_db/automata-mainnet",
"LogFileName": "automata-mainnet.logs.txt"
},
"TxPool": {
"BlobsSupport": "Disabled"
},
"Sync": {
"FastSync": true,
"SnapSync": true,
"FastSyncCatchUpHeightDelta": "10000000000"
},
"Discovery": {
"DiscoveryVersion": "V5"
},
"JsonRpc": {
"Enabled": true,
"Port": 8545,
"EnginePort": 8551
},
"Pruning": {
"PruningBoundary": 192
},
"Blocks": {
"SecondsPerSlot": 2
},
"Merge": {
"Enabled": true
},
"Optimism": {
"SequencerUrl": "https://automata-mainnet.alt.technology/"
}
}
13 changes: 4 additions & 9 deletions src/Nethermind/Nethermind.Runner/configs/base-mainnet.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
{
"$schema": "https://raw.githubusercontent.com/NethermindEth/core-scripts/refs/heads/main/schemas/config.json",
"Init": {
"ChainSpecPath": "chainspec/base-mainnet.json",
"ChainSpecPath": "chainspec/base-mainnet.json.zst",
"GenesisHash": "0xf712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd",
"BaseDbPath": "nethermind_db/base-mainnet",
"LogFileName": "base-mainnet.logs.txt",
"DisableGcOnNewPayload": false
"LogFileName": "base-mainnet.logs.txt"
},
"TxPool": {
"BlobsSupport": "Disabled"
},
"Sync": {
"FastSync": true,
"SnapSync": true,
"FastSyncCatchUpHeightDelta": "10000000000",
"PivotNumber": 25520000,
"PivotHash": "0xbe90ab674f44ca45547bcc724aadc7ad99bc31f30b372875282f4d904c4ecd76",
"PivotTotalDifficulty": "0"
"FastSyncCatchUpHeightDelta": "10000000000"
},
"Discovery": {
"DiscoveryVersion": "V5"
Expand All @@ -30,8 +26,7 @@
"PruningBoundary": 192
},
"Blocks": {
"SecondsPerSlot": 2,
"TargetBlockGasLimit": 97500000
"SecondsPerSlot": 2
},
"Merge": {
"Enabled": true
Expand Down
Loading