Skip to content

Mainnet changes#34

Merged
svlachakis merged 7 commits intonethermindfrom
stavros-mainnet-sync
Oct 31, 2025
Merged

Mainnet changes#34
svlachakis merged 7 commits intonethermindfrom
stavros-mainnet-sync

Conversation

@svlachakis
Copy link
Copy Markdown

@svlachakis svlachakis commented Oct 22, 2025

The point of this PR is to start Nitro from block 22million+ which is Arbitrum One first block, but without having users to load the 32GB pebble genesis state of nitro.

Refactored our custom env variables to config properties.

@hudem1
Copy link
Copy Markdown

hudem1 commented Oct 24, 2025

For my understanding, so, what this essentially does is fetch the start block data from NMC and set it to some consensus db. And this is enough for nitro to pick up from that block and continue as usual, meaning fetch the next blocks from L1 to send to NMC for execution ?

If so, then NMC has to use its internal comparison mode to make sure the block hashes its computing are consistent with l1, right ?

@svlachakis
Copy link
Copy Markdown
Author

svlachakis commented Oct 24, 2025

For my understanding, so, what this essentially does is to fetch the start block data from NMC and set it to some consensus db. And this is enough for nitro to pick up from that block and continue as usual, meaning fetch the next blocks from L1 to send to NMC for execution ?

If so, then NMC has to use its internal comparison mode to make sure the block hashes its computing are consistent with l1, right ?

Yes, your understanding is correct. After bootstrap:

  • Nitro reads batches from L1
  • Sends them to Nethermind for execution
  • Nethermind executes and it's the only execution engine - works in external mode not in compare
  • Returns results to Nitro

@hudem1
Copy link
Copy Markdown

hudem1 commented Oct 27, 2025

For my understanding, so, what this essentially does is to fetch the start block data from NMC and set it to some consensus db. And this is enough for nitro to pick up from that block and continue as usual, meaning fetch the next blocks from L1 to send to NMC for execution ?
If so, then NMC has to use its internal comparison mode to make sure the block hashes its computing are consistent with l1, right ?

Yes, your understanding is correct. After bootstrap:

  • Nitro reads batches from L1
  • Sends them to Nethermind for execution
  • Nethermind executes and it's the only execution engine - works in external mode not in compare
  • Returns results to Nitro
  • Nitro validates and stores

Oh okay nitro validates ? validates what exactly ? i mean, the block hashes validation was done by the compare client implem

@svlachakis
Copy link
Copy Markdown
Author

For my understanding, so, what this essentially does is to fetch the start block data from NMC and set it to some consensus db. And this is enough for nitro to pick up from that block and continue as usual, meaning fetch the next blocks from L1 to send to NMC for execution ?
If so, then NMC has to use its internal comparison mode to make sure the block hashes its computing are consistent with l1, right ?

Yes, your understanding is correct. After bootstrap:

  • Nitro reads batches from L1
  • Sends them to Nethermind for execution
  • Nethermind executes and it's the only execution engine - works in external mode not in compare
  • Returns results to Nitro
  • Nitro validates and stores

Oh okay nitro validates ? validates what exactly ? i mean, the block hashes validation was done by the compare client implem

Nothing - I got confused. In external mode nitro doesn't validate it works only as consensus

}

// Verify target block exists in Nethermind
targetBlock, err := createGenesisFromExecution(ctx, config.Execution.NethermindUrl,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think config at execution level should be more general - so ExternalUrl instead of NethermindUrl

@svlachakis
Copy link
Copy Markdown
Author

@damian-orzechowski as discussed on slack merging as is and we can change them later if needed

@svlachakis svlachakis merged commit 2ca55bd into nethermind Oct 31, 2025
2 checks passed
@svlachakis svlachakis deleted the stavros-mainnet-sync branch October 31, 2025 12:25
AnkushinDaniil added a commit that referenced this pull request Nov 3, 2025
Incorporates 14 commits from remote nethermind branch:
- Prometheus pushgateway support (#37)
- Comparison mode for system tests (#36)
- Mainnet configuration changes (#34)
- comparePromises execution duration metrics (#38)

Resolved conflicts in:
- Makefile: Added make targets for running follower/sequencer nodes
- cmd/genericconf/server.go: Added PrometheusPushgatewayConfig, fixed pflag usage
- cmd/nitro/nitro.go: Added execution mode detection and prometheus pushgateway initialization
- execution/gethexec/node.go: Added nethermind configuration fields
- system_tests/common_test.go: Added execution client mode selection logic
- system_tests/execution_client_only_test.go: Added executionClientMode parameter

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants