Skip to content

feat(mev): add custom mev_type with component-based relay/sidecar/builder resolution#1384

Open
JasonVranek wants to merge 13 commits into
ethpandaops:mainfrom
JasonVranek:generalize-mev-params
Open

feat(mev): add custom mev_type with component-based relay/sidecar/builder resolution#1384
JasonVranek wants to merge 13 commits into
ethpandaops:mainfrom
JasonVranek:generalize-mev-params

Conversation

@JasonVranek
Copy link
Copy Markdown
Contributor

Summary

This adds mev_type: custom, which lets users mix and match relay, sidecar, and builder components arbitrarily without patching Starlark code. Previously, each combination (helix relay + commit-boost, etc.) required a new hardcoded mev_type.

Motivation

My use case requires testing custom Commit-Boost and Helix images against each other (each with custom configs). #1355 allows you to pass a custom CB config but there still are limitations:

  1. there's no way to pass a custom config for Helix
  2. the mev_type: helix type hardcoded mevboost as the sidecar
  3. the mev_type: commit-boost type hardcoded flashbots as the relay

Rather than trying to launch another MEV-Boost that hardcoded my desired combo, I opted to try to generalize to mev_type: custom so that a user can specify their own MEV permutations. Given that Gloas is coming, I also opted to support a mev_type: epbs, which is syntactic sugar over for mev_relay: none, mev_sidecar: none, and mev_builder: buildoor (hopefully useful but this also serves to demo the flexibility of the refactor).

What changed

New: component-based MEV resolution (src/package_io/mev_resolver.star)

mev_type now decomposes into three independent pieces:

  • mev_relay — which relay(s) to launch (flashbots, helix, mev-rs, mock, none)
  • mev_sidecar — which per-validator PBS service (mev-boost, commit-boost, mev-rs, none)
  • mev_builder — which block builder (flashbots, mev-rs, buildoor, mock, none)

Presets (flashbots, helix, commit-boost, etc.) are expanded into components internally and still work exactly as before.

mev_type: custom lets users specify all three explicitly like:

mev_type: custom
mev_params:
    mev_relay: helix
    mev_sidecar: commit-boost
    mev_builder: flashbots

Each component can also override its respective preset default:

mev_type: flashbots
mev_params:
    mev_relay: helix
    mev_sidecar: commit-boost # override just the sidecar
    mev_builder: flashbots

Inline config overrides

Users can now supply full helix_relay_config inline in their Kurtosis YAML. This mimics #1355 but for Helix configs. See .github/tests/mev-custom-helix-cb.yaml as a reference.

Helix launcher cleanup

  • Removed the website block from the default helix template and launcher (unused in devnet/CI)
  • Added wait="60s" readiness checks on the endpoint (4040) and admin (4050) ports

New: mev_type: epbs preset

Syntactic sugar for ePBS-native block building with no relay infrastructure:

mev_type: epbs

Equivalent to mev_type: custom with mev_relay: none, mev_sidecar: none, mev_builder: buildoor.

Backward compatibility

Existing path Status
mev_type: flashbots Unchanged
mev_type: helix ✅ (website removed from template, no functional change to relay)
mev_type: commit-boost Unchanged
mev_type: mev-rs Unchanged
mev_type: mock Unchanged
mev_type: buildoor Unchanged

JasonVranek and others added 13 commits May 4, 2026 17:31
relay/sidecar/builder resolution

Decomposes mev_type into three independent components (relay, sidecar,
builder) via a new mev_resolver module. Adds a `custom` mev_type that
accepts arbitrary component combinations (e.g., helix relay +
commit-boost sidecar). Supports inline helix_relay_config and
commit_boost_config overrides so users can supply full relay/PBS configs
without template changes. Removes the hardcoded website block from the
helix default template and launcher since it's unused in devnet/CI.
Signed-off-by: JasonVranek <jasonvranek@gmail.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.

2 participants