Skip to content

Add EthCallChaos benchmark/compare/isolated configs + per-category scenarios - #31

Merged
cbermudez97 merged 13 commits into
mainfrom
bench/ethcallchaos-load
Jul 28, 2026
Merged

Add EthCallChaos benchmark/compare/isolated configs + per-category scenarios#31
cbermudez97 merged 13 commits into
mainfrom
bench/ethcallchaos-load

Conversation

@kamilchodola

Copy link
Copy Markdown
Contributor

Adds the json-bench configs that Nethermind's run-rpc-benchmarks.yml workflow (NethermindEth/nethermind#11961) pins:

  • EthCallChaos benchmark configs (config/benchmark/ethcallchaos-*.yaml) incl. the per-category validated set;
  • per-scenario isolated configs (config/benchmark/iso/*) for the sweep's ISOLATED view;
  • cross-client compare configs (config/compare/ethcallchaos-*-compare.yaml);
  • per-category scenario fixtures (rpc-calls/*.jsonl) + scripts/percat_export.py.

These live only on bench/ethcallchaos-load today; merging to main lets the workflow pin a stable ref instead of a feature branch.

kamilchodola and others added 13 commits July 24, 2026 15:43
@
per-category regression scenario set (33 scenarios, 11 categories)

Diversifies the eth_call corpus away from the ~93% all-multicall top-N. Selects
top-3 by fitness in each shape/family category from the corpus test_cases (single
contracts grouped by SeedRegistry family + multicall fan-out buckets small/med/
large), sidestepping the multicall-monopolised validation gate. scripts/
percat_export.py regenerates it from an EthCallChaos corpus DB (read-only);
config/benchmark/ethcallchaos-percategory.yaml runs each scenario as a named call.
@
@
per-category: behavioral/shape axes instead of protocol families

Category = kind-of-call, not which-contract: single/{worst,high-gas,low-gas,
large-calldata} + multicall/{worst,small,med,large,high-gas} + overall/worst
(multi-label — a call is the worst in every dimension it fits). 30 scenarios /
10 categories. Validated: NM vs reth deep-check 0 divergent / 0 malformed on the
full set (aggregate3 encoding executes identically on live nodes).
@
Bring the per-category generator in line with the repo convention: every
checked-in rpc-calls/*.jsonl is minted by a generator under
rpc-calls/scripts/generate-from-<source>/ and each source is documented in
rpc-calls/SOURCES.md.

- Move scripts/percat_export.py -> rpc-calls/scripts/generate-from-ethcallchaos/main.py
- Align its jsonl output name to the checked-in ethcallchaos-percategory-scenarios.jsonl
- Add a README matching the sibling generators
- Document the EthCallChaos corpus in SOURCES.md, covering the percategory
  scenarios plus the corpus/heavy/heavy2 direct exports
@cbermudez97

Copy link
Copy Markdown
Contributor

Restructured the request generator to follow the repo convention (commit b7e35f1).

Why: in this repo every checked-in rpc-calls/*.jsonl is minted by a generator living under rpc-calls/scripts/generate-from-<source>/, and each source is documented in rpc-calls/SOURCES.md. The PR's generator was sitting at the repo root with no provenance entry, breaking that convention.

Changes:

  • Moved scripts/percat_export.pyrpc-calls/scripts/generate-from-ethcallchaos/main.py (via git mv, history preserved) so it matches the sibling generate-from-* generators.
  • Aligned the generator's jsonl output name to the checked-in artifact — it now writes ethcallchaos-percategory-scenarios.jsonl (was scenarios.jsonl), so re-running actually regenerates the committed file.
  • Added rpc-calls/scripts/generate-from-ethcallchaos/README.md matching the sibling generators' layout (prereqs / quick start / usage / categories / output).
  • Added an EthCallChaos entry to rpc-calls/SOURCES.md documenting the corpus as an external, gitignored SQLite DB under rpc-calls/sources/ethcallchaos/, and recording provenance for all four files: ethcallchaos-percategory-scenarios.jsonl (selected by the generator) plus ethcallchaos-corpus/heavy/heavy2.jsonl (direct fuzzer exports, data-only, not reproduced by the in-tree generator).

No behavioural change to the benchmark/compare configs — this is purely a structural/provenance cleanup.

@cbermudez97
cbermudez97 merged commit b801ce0 into main Jul 28, 2026
4 checks passed
@cbermudez97
cbermudez97 deleted the bench/ethcallchaos-load branch July 28, 2026 18:45
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.

2 participants