Skip to content

Hoodi testnet

Hoodi is the main long-running Ethereum staking, infrastructure and protocol-developer testnet. For testing decentralized applications, smart contracts, and other EVM functionality, please use Sepolia testnet!

It provides an opportunity to verify your setup works as expected through the proof-of-stake transition and in a post-merge context as well as to safely practice node operations such as adding and removing validators, migrating between clients, and performing upgrades and backups. If you come across any issues, please report them here.

General Preparation

  1. Generate the JWT secret with openssl rand -hex 32 | tr -d "\n" > "/opt/jwtsecret". This file needs to be passed to both the execution client and the consensus client.

  2. Choose an Ethereum address to receive transaction fees. This ETH will be immediately available, not part of the staking contract.

  3. Download the latest release and install it by unpacking the archive.

  4. Choose one of Nethermind, Erigon, or Besu as an execution client. Download, install, and run it.

    cd nethermind/src/Nethermind/Nethermind.Runner
    dotnet run -c Release -- --config hoodi \
      --JsonRpc.Host=0.0.0.0 \
      --JsonRpc.JwtSecretFile=/opt/jwtsecret
    
    ./build/bin/erigon --chain=hoodi \
      --datadir hoodi-testnet \
      --authrpc.jwtsecret=/opt/jwtsecret \
      --http --http.api=engine,net,eth
    
    build/install/besu/bin/besu      \
      --network=hoodi                \
      --rpc-http-enabled=true        \
      --rpc-http-host="0.0.0.0"      \
      --rpc-http-cors-origins="*"    \
      --sync-mode="X_SNAP"           \
      --data-storage-format="BONSAI" \
      --Xmerge-support=true          \
      --rpc-ws-host="0.0.0.0"        \
      --host-allowlist="*"           \
      --engine-rpc-enabled=true      \
      --engine-host-allowlist="*"    \
      --engine-jwt-enabled=true      \
      --engine-jwt-secret=/opt/jwtsecret
    

    Sync the beacon node and execution client

  5. Start syncing the node consisting of Nimbus and chosen execution client, for example by running:

    nimbus-eth2/build/nimbus_beacon_node \
        --network=hoodi \
        --web3-url=http://127.0.0.1:8551 \
        --rest \
        --metrics \
        --jwt-secret="/opt/jwtsecret" \
        --suggested-fee-recipient=<Enter-eth-address-here>
    

    Tip

    If you want the syncing process to complete much faster, you can sync from a trusted node.

    One might consider here to set up a systemd service to ensure this runs automatically, including after restarts.

    Obtaining genesis file (optional)

    By default, Nimbus will automatically download the genesis state of Hoodi from Github through the HTTPS protocol. If something prevents you from using this method, you may be able to work-around the issue by either instructing Nimbus to use a different URL by specifying the --genesis-state-url command-line parameter (for example, you can point it to the /eth/v2/debug/beacon/states/genesis endpoint of a trusted beacon node or a checkpoint provider) or by downloading the genesis.ssz file of the network through some other means and then supplying its path through the --genesis-state command-line parameter.

    Begin validating

  6. Once this Hoodi node is completely synced, use the Hoodi launchpad to obtain Hoodi validators. It might require some time before these enter and are activated on the beacon chain. If one does this before the node which will attest and propose using those validators has synced, one might miss attestations and block proposals.

  7. Follow our validating guide from step 2 (import the validator keys) onward.

Useful resources