Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Running a relay

audience: operators

Relay is the PBS-style fanout organism. It ships atelier::Candidates to the chain’s proposer or sequencer and records the proposer’s acknowledgement in AcceptedHeaders.

Role in the lattice

Relay members subscribe to atelier::Candidates, each forwards the header + bid pair to the proposers they are configured to talk to, and commits an AcceptedHeaders entry when a majority agrees the proposer acknowledged.

Committee sizing

  • 3 members minimum; 5 members for production.

Relay is any-trust on liveness: one honest member suffices to ship a header. Integrity of AcceptedHeaders is majority-honest; a majority-malicious relay can forge a proposer-ack record, but tally’s on-chain inclusion watcher is the ground truth.

Hardware

  • Well-connected cloud. Relay members are the organism with the most external connectivity — one socket per proposer in the proposer set, kept warm.
  • Modest CPU / RAM. 2 vCPU / 4 GiB is enough.
  • Chain-type-appropriate TLS setup. L1 MEV-Boost requires specific TLS ciphers; L2 sequencer endpoints vary.

Policy selection

Relay’s Config carries a Policy enum:

PolicyTarget
L1MevBoostEthereum mainnet MEV-Boost relay endpoints
L2SequencerA single L2 sequencer endpoint (centralized)
L2LeaderRotationThe L2’s elected leader set per slot

The policy folds into the relay fingerprint. Switching policy is a lattice retirement; you do not switch in place.

systemd unit example

# /etc/builder/relay-member.env
LATTICE_INSTANCE=acme.ethereum.mainnet
LATTICE_CHAIN_ID=1
LATTICE_CONFIG_HEX=7f3a9b1c...

RELAY_COMMITTEE_SECRET_FILE=/etc/builder/secrets/acme.ethereum.mainnet.relay.secret
RELAY_SECRET_FILE=/etc/builder/secrets/acme.ethereum.mainnet.relay.member-01.peer

# Proposer-side endpoints. Comma-separated; each relay member
# can target a different subset.
RELAY_PROPOSER_ENDPOINTS=https://mev-boost.relay-a.example,https://mev-boost.relay-b.example

What this organism does not do

  • It does not choose which candidate wins. Atelier commits one candidate per slot; relay ships that one.
  • It does not sign the block. Atelier’s BLS aggregate signature is what the proposer verifies.
  • It does not pay out MEV. Tally does.

Observing

  • relay_headers_sent_total{member=...,proposer=...}.
  • relay_proposer_ack_latency_seconds — round-trip to the proposer endpoint.
  • relay_committee_agreement_rate — fraction of slots where committee members agreed on the ack. Investigate dips.
  • relay_on_chain_mismatches_total — incremented when tally reports an AcceptedHeaders[S] that does not match on-chain. Any non-zero value is an incident; see Incident response.