Devnets

As a way to test this very complex change to the protocol, devnets are frequently run to assess the code quality and ensure that every client implementation agrees on the spec. This has helped identify many corner cases of the specification as well as find many issues in client implementations.

This typically includes:

  • A faucet so that developers can obtain tokens to deploy their contracts on the devnet.
  • A block explorer, which displays witness content.
  • A witness explorer, which is a tool that we can use to look at the produced witnesses as well as figure out the specific gas costs related to Stateless Ethereum.
  • The specification sheets that list the peculiarities of this devnet.
  • Various RPC endpoints to interact with the devnet.
  • A forkmon instance to check that all the nodes on the devnet agree on what the head block is.
  • Information about the genesis block and other network configuration items that any node that wants to join the devnet will need.

There’s currently an active devnet-7 which can be used for core developers and users to make progress in the implementations of proposed protocol changes. The latest devnet is always available at the address kaustinen-testnet.ethpandaops.io.

Joining the devnet

For execution layer developers implementing stateless EIPs or anybody interested in just following the devnet to use their node as a private RPC endpoint, we recommend using the tool called lodestar-quickstart.

Make sure that docker is installed on your system. Sync the repository for the first time:

$ git clone https://github.com/ChainSafe/lodestar-quickstart # sync repository
$ cd lodestar-quickstart

Then, prepare the devnet configuration directory and launch the sync (repeat these steps each time):

$ rm -rf k7data # don't forget to use these commands between runs
$ ./setup.sh --network kaustinen7 --dataDir k7data

Some of these commands might require sudo or super-user privileges.

This will start a container for the consensus layer clients and a container for the execution layer client. If you want to test your execution layer client, just ask lodestar-quickstart to only start the CL:

$ rm -rf k7data # don't forget to use these commands between runs
$ ./setup.sh --network kaustinen7 --dataDir k7data --justCL

Then, start the EL manually on the side. For example, with geth:

$ go run ./cmd/geth --cache.preimages init \
    path/to/lodestar-quickstart/k7data/network-configs/gen-devnet-7/metadata/genesis.json
$ go run ./cmd/geth --syncmode=full --bootnodes \
    "enode://548ff025abb1522c5257f50765abd21754b7ea7159a176a9b96c738ee6456fc378a11c09a62d55d92684634cd32a9cad498f5649256caf693dab77f961a169f6@167.235.68.89:30303" \
    --authrpc.secret=path/to/lodestar-quickstart/k7data/jwtsecret