Goal
Ship an opt-in Docker Compose overlay that adds the Optimum Gateway to an Obol Charon Distributed Validator Node (CDVN), so the DV's beacon node receives blocks earlier via the Optimum mump2p mesh. Off by default; zero change to a CDVN that doesn't enable it.
How it connects
- Optimum Gateway = libp2p host + mump2p node. Peers with the CL beacon node as a direct/trusted peer. Needs an Optimum API key +
gateway_cluster_id. Does not touch validator keys, the VC, or charon.
- CDVN flow:
beacon node -> charon (http://${CL}:5052) -> VC. The gateway sits upstream of the beacon node's block source, so it is transparent to charon and the VC and only improves block-arrival timing.
- Overlay target:
integration/obol/ in this repo. Enabled by appending compose-optimum.yml to CDVN COMPOSE_FILE.
Design decision (main technical risk)
Docker Compose replaces command: on merge (no append). CDVN CL commands are fixed, so we cannot cleanly append a peer flag via overlay without re-declaring each CL command.
- Approach A (preferred, simplest): overlay adds one
optimum-gateway service; set gateway direct_cl_peers to /dns4/cl-<client>/tcp/9000/p2p/<cl_peer_id>. No CL command edits. CL peer id comes from GET /eth/v1/node/identity, written by a small init step.
- Approach B (fallback): per-CL override re-declaring the CL command with
${GATEWAY_PEER} appended (--trusted-peers/--direct-peer), plus gateway peer discovery.
Prototype A first; fall back to B per-CL only if gossip block-acceptance needs the CL to treat the gateway as an explicit trusted peer. Decide during Hoodi validation.
Sub-tasks
Non-goals
- No changes to charon, VC, DKG, or Lido exit mechanisms.
- No fork of CDVN; overlay is additive and opt-in.
- Not enabled by default.
Acceptance
compose-optimum.yml overlay + gateway config sample + init helper + docs, all opt-in.
- Validated on Hoodi against a real DV cluster: measurable earlier block arrival, charon/VC behaviour unchanged, off-by-default confirmed.
- Upstream direction agreed with Obol before any PR.
Goal
Ship an opt-in Docker Compose overlay that adds the Optimum Gateway to an Obol Charon Distributed Validator Node (CDVN), so the DV's beacon node receives blocks earlier via the Optimum mump2p mesh. Off by default; zero change to a CDVN that doesn't enable it.
How it connects
gateway_cluster_id. Does not touch validator keys, the VC, or charon.beacon node -> charon (http://${CL}:5052) -> VC. The gateway sits upstream of the beacon node's block source, so it is transparent to charon and the VC and only improves block-arrival timing.integration/obol/in this repo. Enabled by appendingcompose-optimum.ymlto CDVNCOMPOSE_FILE.Design decision (main technical risk)
Docker Compose replaces
command:on merge (no append). CDVN CL commands are fixed, so we cannot cleanly append a peer flag via overlay without re-declaring each CL command.optimum-gatewayservice; set gatewaydirect_cl_peersto/dns4/cl-<client>/tcp/9000/p2p/<cl_peer_id>. No CL command edits. CL peer id comes fromGET /eth/v1/node/identity, written by a small init step.${GATEWAY_PEER}appended (--trusted-peers/--direct-peer), plus gateway peer discovery.Prototype A first; fall back to B per-CL only if gossip block-acceptance needs the CL to treat the gateway as an explicit trusted peer. Decide during Hoodi validation.
Sub-tasks
compose-optimum.ymloverlayNon-goals
Acceptance
compose-optimum.ymloverlay + gateway config sample + init helper + docs, all opt-in.