feat: add support for ethrex execution client - #549
Open
ilitteri wants to merge 1 commit into
Open
Conversation
Add ethrex (https://github.com/lambdaclass/ethrex), a Rust Ethereum execution client, as a selectable execution client on mainnet, sepolia and hoodi (the networks ethrex currently supports; no gnosis/chiado templates, so it is not offered there). Follows the new-clients guideline: client registry entries, docker compose service template, per-network env templates, image pinned to ghcr.io/lambdaclass/ethrex:21.0.0, check-image-updates.sh block (ethrex GitHub tags carry a leading v but its docker tags do not, hence ltrimstr), docs (README, clients/generate command pages, network pages), CLI help strings, tests (client lists, default-image case, bootnodes assertion), and CHANGELOG entry.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
ethrex is an Ethereum execution client written in Rust, focused on simplicity and auditability. It runs on Ethereum mainnet in production, passed an external security audit by Least Authority, and runs the EF execution-spec-tests and cross-client Hive suites in CI. Adding it to Sedge gives node operators one more execution-layer option and improves client diversity, following the same integration pattern as the existing clients.
This PR was discussed with the Nethermind team beforehand, who suggested opening it.
Description
Adds ethrex as a selectable execution client on mainnet, sepolia, and hoodi (the networks ethrex currently supports — no gnosis/chiado, so no templates are added there and Sedge won't offer it on those networks).
Follows the checklist in
docs/docs/guidelines/new-clients.mdx:ethrexadded toAllClients["execution"],ClientImagesstruct,setExecutionImage, andconfigs/client_images.yamlpinned toghcr.io/lambdaclass/ethrex:21.0.0(multi-arch amd64+arm64). Note: ethrex docker tags carry no leadingv(release CI strips it), while its GitHub release tags do —scripts/check-image-updates.shtherefore usesltrimstr("v").templates/services/merge/execution/ethrex.tmpl(compose service) + env fragments for mainnet/sepolia/hoodi. Flags verified against the ethrex CLI:--http.addr/--authrpc.addrbound to 0.0.0.0 for docker, JWT via--authrpc.jwtsecret, single P2P port for both--p2p.portand--discovery.port, Prometheus metrics on the standard Sedge metrics port,--bootnodespassthrough,ElExtraFlagssupported. No CORS flag is passed (ethrex has none; its CORS is permissive by default).cli/sub_gen.goupdated (and mirrored indocs/docs/commands/generate.mdx).clients.mdxsample output,networks/{mainnet,sepolia,hoodi}.mdx.clients_test.goexecution lists, an ethrex case inTestSetImageOrDefault_Execution, and an ethrex branch incheckECBootnodesOnExecutionso the generate-matrix asserts its bootnodes flag. The compose-generation test matrix picks ethrex up automatically for the three networks.How to test
Validation already run on this branch:
make test-no-e2e— passing (the only failures are the pre-existing live-RPC Lido tests, which fail identically on cleandevelop)sedge clients— ethrex on mainnet/hoodi/sepolia; absent on gnosis/chiado/customsedge generate full-node --network sepolia -c lighthouse -e ethrex— compose + .env render correctly,docker compose configclean21.0.0(arm64) started with zero flag errors and ran with 0 restarts; HTTP-RPC on 8545, auth-RPC on the Sedge-assigned port, discv4+discv5 up;engine_exchangeCapabilitiesanswered through the generated JWT (full capability list) andeth_chainIdreturned0x88bb0(hoodi), proving the JWT mount and--networkenv plumbing end to endcd docs && npm run build— Docusaurus build passingNote from the smoke test, unrelated to this PR: Lighthouse v8 checkpoint sync failed against three public hoodi checkpointz instances ("Error fetching finalized blobs: 500 not found") before ever dialing the EL — the same failure occurs with any execution client.
Possible follow-ups (out of scope)
customnetwork support via ethrex's--network <genesis.json>(custom currently offers only nethermind).--ws.enabled); omitted to match the other non-geth EL templates.