Prysm

Installing and configuring the Prysm Beacon Node.

Prysm

Prysm is the leading implementation of the Ethereum Consensus protocol, developed by Prysmatic Labs (Offchain Labs). It is written in Go and is known for its user-friendly tooling and extensive documentation.

🛡️ Role: This service runs the Beacon Node. It connects to the Execution Client (Geth/Nethermind) to verify blocks and keeps your node synchronized with the Proof-of-Stake chain.


1. Download & Install

We will download the latest stable binary directly from the official repository.

A. Create the Application Directory

Bash

# Create a folder for the binary
sudo mkdir -p /usr/local/lib/prysm

# Download the latest Linux release (Check https://github.com/prysmaticlabs/prysm/releases)
# Example for v5.0.3:
sudo curl -L https://github.com/prysmaticlabs/prysm/releases/download/v5.0.3/beacon-chain-v5.0.3-linux-amd64 -o /usr/local/lib/prysm/beacon-chain

# Make it executable
sudo chmod +x /usr/local/lib/prysm/beacon-chain

B. Set Permissions Ensure the ethereum user owns the binary.

Bash

sudo chown -R ethereum:ethereum /usr/local/lib/prysm

2. Configure Systemd Service

We will configure Prysm to run as a background service.

⚡ Pro Tip: Checkpoint Sync Syncing the Beacon Chain from Genesis can take days. We highly recommend using Checkpoint Sync to sync in minutes.

Create the service file:

Bash

sudo nano /etc/systemd/system/prysm.service

Paste the following configuration:

Ini, TOML

[Unit]
Description=Prysm Consensus Client
After=network.target

[Service]
User=ethereum
Group=ethereum
Type=simple
Restart=always
RestartSec=5

# Execution Command
ExecStart=/usr/local/lib/prysm/beacon-chain \
  --mainnet \
  --datadir=/home/ethereum/consensus \
  --accept-terms-of-use \
  --execution-endpoint=http://localhost:8551 \
  --jwt-secret=/home/ethereum/jwt/jwt.hex \
  --checkpoint-sync-url=https://beaconstate.info \
  --genesis-beacon-api-url=https://beaconstate.info \
  --rpc-host=0.0.0.0 \
  --rpc-port=4000 \
  --grpc-gateway-host=0.0.0.0 \
  --grpc-gateway-port=3500

# Resource Limits
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

🔍 Flag Explanation:

  • --execution-endpoint: The URL of your local Geth/Nethermind Engine API.

  • --jwt-secret: The shared token we generated in Step 2.

  • --checkpoint-sync-url: Tells Prysm to download a recent snapshot state instead of syncing from 2020.

  • --rpc-host: Enables the API for your local validator client (if you add one later).


3. Start the Service

Reload the systemd daemon and start the beacon node.

Bash

# Reload systemd configuration
sudo systemctl daemon-reload

# Enable Prysm to start on boot
sudo systemctl enable prysm

# Start the service
sudo systemctl start prysm

4. Verify Status

Check the logs to ensure Prysm is talking to your Execution Client.

Bash

sudo journalctl -fu prysm

Expected Output:

  1. Connection: Connected to execution node (Success! It found Geth/Nethermind).

  2. Syncing: If Checkpoint Sync worked, you should see Synced to head or Processing block... very quickly.

  3. Peers: Peer count: 50... indicates P2P networking is working.

❌ Common Error: If you see Execution client is unavailable or 401 Unauthorized:

  • Check that your Execution Client service is running (systemctl status geth).

  • Verify that the jwt.hex path is identical in both service files.


Last updated