Skip to content

Latest commit

 

History

History
66 lines (48 loc) · 2.14 KB

File metadata and controls

66 lines (48 loc) · 2.14 KB

Prysm Client Interoperability Guide

The recommended way to run Prysm against other Ethereum consensus/execution clients is ethereum-package, a Kurtosis package that spins up a full multi-client devnet (execution + consensus + validators) with genesis generated for you.

Note

The deterministic interop key flags (--interop-num-validators, --interop-start-index, --interop-eth1data-votes) have been removed. Use ethereum-package instead — it provisions validator keys and genesis automatically.

Prerequisites

Running a devnet with Prysm

Write a network_params.yaml selecting Prysm as the consensus client:

participants:
  - el_type: geth
    cl_type: prysm
  - el_type: nethermind
    cl_type: lighthouse

Then launch the enclave:

kurtosis run github.com/ethpandaops/ethereum-package --args-file ./network_params.yaml

Kurtosis prints the RPC/API endpoints for every started service. See the ethereum-package configuration reference for the full set of options (fork schedule, validator counts, extra flags, etc.).

Using a local Prysm build

By default cl_type: prysm pulls the published Prysm image. To test local changes, build and load a Docker image into your local daemon with:

bazel run //cmd/beacon-chain:oci_image_tarball
bazel run //cmd/validator:oci_image_tarball

Then point the participant at the built images via cl_image and vc_image in network_params.yaml.

Generating a genesis state manually

If you only need a genesis.ssz (e.g. for a custom harness), prysmctl still generates one from a chain config:

curl https://raw.githubusercontent.com/ethereum/consensus-specs/refs/heads/dev/configs/minimal.yaml -o /tmp/minimal.yaml

bazel run //cmd/prysmctl --config=minimal -- \
  testnet generate-genesis \
  --genesis-time-delay=120 \
  --num-validators=256 \
  --output-ssz=/tmp/genesis.ssz \
  --chain-config-file=/tmp/minimal.yaml