Run full-featured Ethereum PoS simulator (private net) locally or in CI/CD, with PBS (MEV) emulation support.
This project exists to provide convenient and reliable testing environment with predictable performance for Ethereum API users, such as developers of PoS blockchain automation.
Execution client support:
- Geth
- Nethermind
- Besu
- Erigon
Consensus client support:
- Lighthouse
- Teku
- Prysm
- Nimbus
- Lodestar
Validator client support:
- Lighthouse
- Teku
- Prysm
- Nimbus
- Lodestar
The aim is to eventually support all Ethereum clients featured at official documentation.
The primary interface for users is the container one,
accessed via docker compose utility (docker compose v2, do not confuse with
v2 of the docker-compose spec, which is obsolete).
First, chose how you want to run the project and save your configuration in the
.env file:
- if you're using the opus devpod (internal chorus one project) run:
echo "COMPOSE_FILE=compose-devpod.yaml" > .env
echo "COMPOSE_PROJECT_NAME=${C1_DOCKER_NAMESPACE}-possim" >> .env
echo "POSSIM_DOCKER_NETWORK=${C1_DOCKER_NETWORK}" >> .env
echo "POSSIM_BINDMOUNT_PATH=$(host-path-outside-of-docker.sh .)" >> .env
echo "POSSIM_HOSTNAME=possim.devel" >> .env- otherwise for linux host networking configuration run:
echo "COMPOSE_FILE=compose-host.yaml" > .env
echo "POSSIM_HOSTNAME=127.0.0.1" >> .envOnce you've set up your env you can get the privatenet up and running using:
docker compose build possim
docker compose run --use-aliases --rm possimOnce running, you can connect using:
source .env
curl -v http://$POSSIM_HOSTNAME:15050To run with overridden config:
docker compose run --use-aliases --rm possim CONFIG=/opt/privatenet/pbs_config.yamlSee configuration.yaml for the default values.
docker compose run --rm possim testFirst, a command python3 -m eth_possim generate generates configuration for all
the components.
Then, tilt up command starts the blockchain.
And finally, make file binds generation and tilt start together.