Ephemery Client Images

May 30, 2024 ยท View on GitHub

This repository contains a wrapper script that gets built into ethereum client docker images and provides the ephemery reset mechanism.

The wrapper script takes care of:

  • Download the latest ephemery genesis (available within the image at /ephemery_config)
  • Append ephmery specific client parameters (networkid, bootnodes, ...)
  • Reset & initialize the client database on scheduled ephemery reset time
  • Restart the client on scheduled ephemery reset time

The ephemery client images built by this repository are intended to be drop-in replacements. They should work exactly the same way as mainnet nodes, but connect to the ephemery network instead.

Clients

Execution Clients

ClientImage
Besupk910/ephemery-besu
Erigonpk910/ephemery-erigon
Gethpk910/ephemery-geth
Nethermindpk910/ephemery-nethermind
Rethpk910/ephemery-reth

Consensus Clients

ClientImage
Lighthousepk910/ephemery-lighthouse
Lodestarpk910/ephemery-lodestar
Prysmpk910/ephemery-prysm-beacon / pk910/ephemery-prysm-validator
Tekupk910/ephemery-teku
Nimbuspk910/ephemery-nimbus

Examples

The following examples demonstrate how to use the ephemery client images to spin up ephemery nodes. You always need to run a EL & CL client.

The ephemery images are designed to work exactly the same way as the official mainnet images work. If you want to switch over to mainnet, you litterally just need to change the image name to use the official client image. All ephemery specific arguments are appended automatically by the wrapper script.

Prerequisites

# generate jwt secret
echo -n 0x$(openssl rand -hex 32 | tr -d "\n") > ./jwtsecret

Execution Clients

Geth:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/el:/data -p 30303:30303 -p 8545:8545 -p 8551:8551 -it pk910/ephemery-geth --datadir=/data --http --http.addr=0.0.0.0 --http.port=8545 --authrpc.addr=0.0.0.0 --authrpc.port=8551 --authrpc.vhosts=* --authrpc.jwtsecret=/execution-auth.jwt

Erigon:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/el:/data -p 30303:30303 -p 8545:8545 -p 8551:8551 -it pk910/ephemery-erigon --datadir=/data --http --http.addr=0.0.0.0 --http.port=8545 --authrpc.addr=0.0.0.0 --authrpc.port=8551 --authrpc.vhosts=* --authrpc.jwtsecret=/execution-auth.jwt --db.size.limit=100GB

Besu:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/el:/data -p 30303:30303 -p 8545:8545 -p 8551:8551 -it pk910/ephemery-besu --data-path=/data --rpc-http-enabled --rpc-http-host=0.0.0.0 --rpc-http-port=8545 --engine-rpc-port=8551 --engine-host-allowlist=* --engine-jwt-secret=/execution-auth.jwt

Nethermind:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/el:/data -p 30303:30303 -p 8545:8545 -p 8551:8551 -it pk910/ephemery-nethermind --datadir=/data --KeyStore.KeyStoreDirectory=/data/keystore --JsonRpc.Enabled=true --JsonRpc.Host=0.0.0.0 --JsonRpc.Port=8545 --JsonRpc.EngineHost=0.0.0.0 --JsonRpc.EnginePort=8551 --JsonRpc.JwtSecretFile=/execution-auth.jwt

Reth:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/el:/data -p 30303:30303 -p 8545:8545 -p 8551:8551 -it pk910/ephemery-reth --datadir=/data --http --http.addr=0.0.0.0 --http.port=8545 --authrpc.addr=0.0.0.0 --authrpc.port=8551 --authrpc.vhosts=* --authrpc.jwtsecret=/execution-auth.jwt

Consensus Clients

Lighthouse:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/cl:/data -p 9000:9000 -p 5052:5052 -it pk910/ephemery-lighthouse lighthouse bn --datadir=/data --http --http-address=0.0.0.0 --http-port=5052 --execution-endpoint=http://172.17.0.1:8551 --execution-jwt=/execution-auth.jwt

Lodestar:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/cl:/data -p 9000:9000 -p 5052:5052 -it pk910/ephemery-lodestar beacon --dataDir=/data --rest --rest.address=0.0.0.0 --rest.namespace="*" --rest.port=5052 --execution.urls=http://172.17.0.1:8551 --jwt-secret=/execution-auth.jwt

Teku:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/cl:/data -p 9000:9000 -p 5052:5052 -it pk910/ephemery-teku --data-path=/data --rest-api-enabled --rest-api-interface=0.0.0.0 --rest-api-port=5052 --ee-endpoint=http://172.17.0.1:8551 --ee-jwt-secret-file=/execution-auth.jwt --ignore-weak-subjectivity-period-enabled

Prysm:

docker run --pull always -v $(pwd)/jwtsecret:/execution-auth.jwt:ro -v $(pwd)/cl:/data -p 9000:9000 -p 5052:5052 -it pk910/ephemery-prysm-beacon --accept-terms-of-use=true --datadir=/data --grpc-gateway-host=0.0.0.0 --grpc-gateway-port=5052 --execution-endpoint=http://172.17.0.1:8551 --jwt-secret=/execution-auth.jwt --min-sync-peers=2