Skip to content

feat(client): add era type override functionality to EraClient#23307

Merged
mattsse merged 1 commit into
paradigmxyz:mainfrom
debjit-bw:fix/era-client-explicit-file-type
Mar 31, 2026
Merged

feat(client): add era type override functionality to EraClient#23307
mattsse merged 1 commit into
paradigmxyz:mainfrom
debjit-bw:fix/era-client-explicit-file-type

Conversation

@debjit-bw
Copy link
Copy Markdown
Contributor

EraClient::new auto-detects the file type from the URL via EraFileType::from_url, which checks whether the URL string contains "era1". When the hosting URL does not contain "era1" (e.g. https://gc-era.gnosiscoredevs.io/), the client incorrectly defaults to EraFileType::Era even though the server hosts ERA1 files. This causes it to look for .era extensions instead of .era1, construct wrong download URLs, and silently save HTTP 403 error pages as ERA files — which then fail with "Reserved field in header not zero" when parsed.

This PR adds a with_era_type builder method so callers can explicitly set the file type when the URL-based heuristic is insufficient.

@github-project-automation github-project-automation Bot moved this from Backlog to In Progress in Reth Tracker Mar 31, 2026
@mattsse mattsse added this pull request to the merge queue Mar 31, 2026
Merged via the queue into paradigmxyz:main with commit 23b68fc Mar 31, 2026
36 checks passed
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Reth Tracker Mar 31, 2026
github-merge-queue Bot pushed a commit to tempoxyz/tempo that referenced this pull request Apr 1, 2026
Automated nightly update of reth dependencies from `paradigmxyz/reth`
main branch.

## Upstream reth changes


[`7f4a9a0...f8efc76`](paradigmxyz/reth@7f4a9a0...f8efc76)

🔗 Amp thread:
https://ampcode.com/threads/T-019d473e-4c63-7539-bda6-d72354aae810
**Engine**
- Share execution cache and sparse trie pipeline with payload builder
([#23242](paradigmxyz/reth#23242),
[#23246](paradigmxyz/reth#23246))
- Add backpressure, take 2
([#23280](paradigmxyz/reth#23280))
- Add method to get payload resolve future
([#23256](paradigmxyz/reth#23256))
- Return -38003 for FCUv2 payloadAttributes mismatch
([#22924](paradigmxyz/reth#22924))
- Fix double decrement in account cache size
([#23249](paradigmxyz/reth#23249))

**Trie**
- Call root before prune
([#23243](paradigmxyz/reth#23243))
- Use Entry API in `MultiProofTargets::extend_inner`
([#23247](paradigmxyz/reth#23247))
- Record trie cursor metrics
([#23252](paradigmxyz/reth#23252))
- Add `SparseStateTrie::update_account_stateless` for stateless
validation ([#23272](paradigmxyz/reth#23272))

**RPC**
- Integrate `reth-rpc-traits` and remove `IntoRpcTx`
([#23288](paradigmxyz/reth#23288))
- Relax rpc converter impls
([#23254](paradigmxyz/reth#23254))

**Net**
- Prefer peer-reported block number in session activation
([#23275](paradigmxyz/reth#23275))
- Retry block subscription on initial connection failure
([#23233](paradigmxyz/reth#23233))
- Resolve DNS for ExternalAddr in `external_addr_with`
([#23269](paradigmxyz/reth#23269))

**Payload / Refactor**
- Remove OP `ExecutionPayload` impl and op feature from
payload-primitives
([#23253](paradigmxyz/reth#23253))
- Remove OP `PayloadAttributesBuilder` impl and op feature from
engine-local ([#23255](paradigmxyz/reth#23255))
- Remove changeset count APIs from storage
([#23310](paradigmxyz/reth#23310))

**DB / Storage**
- Add `create_test_provider_factory_with_chain_spec_and_db_args`
([#23270](paradigmxyz/reth#23270))
- Add `reth-bb` binary with multi-segment big block execution support
([#23140](paradigmxyz/reth#23140))
- Add era type override functionality to `EraClient`
([#23307](paradigmxyz/reth#23307))
- Make snapshot API URL overridable
([#23303](paradigmxyz/reth#23303))

**Perf**
- Use `FastInstant` for remaining metrics timing
([#23265](paradigmxyz/reth#23265))

**Bench / Testing**
- Add hourly main regression bench
([#23219](paradigmxyz/reth#23219))
- Add regression test for parked basefee ancestor handling
([#23277](paradigmxyz/reth#23277))

**CLI**
- Add more WARN logging before download retries
([#23258](paradigmxyz/reth#23258))
- Use `HeaderTy` for stage dump headers
([#23274](paradigmxyz/reth#23274))

**Deps**
- Bump alloy 1.8.2, alloy-evm, Lighthouse v8.1.3
([#23241](paradigmxyz/reth#23241),
[#23289](paradigmxyz/reth#23289),
[#23239](paradigmxyz/reth#23239))
- Weekly `cargo update`
([#23267](paradigmxyz/reth#23267))

**Grafana**
- Add sparse trie idle metrics to overview
([#23302](paradigmxyz/reth#23302))

## Migrations

🔗 Amp thread:
https://ampcode.com/threads/T-019d473e-8aba-7283-b729-057391d70bc6
- **Reth dependency bump**: All `reth-*` crates updated from rev
`7f4a9a0` to `f8efc76`
- **alloy-evm version bump**: `0.29.2` → `0.30.0`; `revm-inspectors`
`0.36.1` → `0.36.0`
- **`TransactionEnv` → `TransactionEnvMut`**: Trait moved from
`reth_evm::TransactionEnv` to `alloy_evm::TransactionEnvMut`; `nonce()`
getter removed from the trait (now accessed via
`revm::context::Transaction::nonce()` instead)
- **`FromConsensusHeader` re-export flattened**: Import path changed
from `reth_rpc_convert::transaction::FromConsensusHeader` to
`reth_rpc_convert::FromConsensusHeader`
- **`TxResult::into_result` added**: New required method on the
`TxResult` trait to consume and return `ResultAndState`
- **`BuildArguments::new` signature expanded**: Now takes two additional
`None` parameters (likely cached/prebuilt payload fields)
- **`BuildArguments` destructure**: Uses `..` rest pattern to ignore new
fields
- **`BlockBuilder::finish` signature change**: Now takes an additional
parameter (`None` — likely an optional requests list)
- **`snapshot_api_url` field added**: New required field on download URL
config struct

[GitHub
Workflow](https://github.com/tempoxyz/tempo/actions/runs/23831300439)

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: Arsenii Kulikov <62447812+klkvr@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants