Step 5: Startup & Verification

Verifying service health, engine API connection, and sync status.

Step 5: Startup & Verification

Congratulations! You have configured the environment, installed the Execution Client (EL), and installed the Consensus Client (CL).

Now, we must verify that these two distinct services are communicating correctly via the Engine API. If they are not talking, your node will never sync.


1. Verify Service Status

First, ensure both background services are active and running without immediate crashes.

Bash

# Check Execution Client (Replace 'geth' with your chosen client: nethermind, besu, etc.)
sudo systemctl status geth

# Check Consensus Client (Replace 'prysm' with your chosen client: lighthouse, teku, etc.)
sudo systemctl status prysm

✅ Success Indicator: You should see Active: active (running) in green for both services.

  • If you see failed (red), run sudo journalctl -fu <service_name> to see why it crashed.


2. Verify the Handshake (Engine API)

The most critical moment is the connection between the EL and CL. Check the logs of your Consensus Client (Prysm, Lighthouse, etc.). It is the "driver" of the node.

Bash

# View Consensus Client logs
sudo journalctl -fu prysm

✅ Success Indicators: Look for messages similar to:

  • Connected to execution node

  • Execution client is valid

  • Eth1 connected

❌ Failure Indicators:

  • Execution client unavailable

  • Failed to connect to execution endpoint

  • 401 Unauthorized (This means your jwt.hex secret is missing or doesn't match between the two clients).


3. Check Sync Status

Once the connection is established, the node will begin downloading the blockchain history.

A. Consensus Layer (Beacon Chain) If you used Checkpoint Sync (recommended in Step 4), your Beacon Node should be synced almost immediately.

  • Log Message: Synced or Slot 8329... (matching the current time).

  • Verification: You should see it receiving new blocks every 12 seconds.

B. Execution Layer (The Heavy Lift) The Execution Client will now start downloading the state. This takes time (hours to days). You can check its progress via the HTTP API (if enabled).

Bash

# Query the local JSON-RPC
curl -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' http://localhost:8545

Output Explanation:

  • false: The node is fully synced! (Or it hasn't started yet).

  • { currentBlock: ..., highestBlock: ... }: The node is currently syncing. You can compare currentBlock to a block explorer like Etherscan to estimate time remaining.


4. Final Health Check

Your Ethereum node is fully operational when:

  1. EL & CL are Active: Both services are running.

  2. Peers are Connected: Both clients show peer counts > 0.

  3. Logs are Quiet: You see regular "Imported block" or "Slot processed" messages, but no red error loops.

🎉 You are now running a Node! You can now use http://localhost:8545 as your own private, trustless gateway to Ethereum.

Last updated