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-chainB. Set Permissions Ensure the ethereum user owns the binary.
Bash
sudo chown -R ethereum:ethereum /usr/local/lib/prysm2. 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.
We added the
--checkpoint-sync-urlflag below using a public endpoint. You can find more endpoints at eth-clients.github.io/checkpoint-sync-endpoints.
Create the service file:
Bash
sudo nano /etc/systemd/system/prysm.servicePaste 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 prysm4. Verify Status
Check the logs to ensure Prysm is talking to your Execution Client.
Bash
sudo journalctl -fu prysmExpected Output:
Connection:
Connected to execution node(Success! It found Geth/Nethermind).Syncing: If Checkpoint Sync worked, you should see
Synced to headorProcessing block...very quickly.Peers:
Peer count: 50...indicates P2P networking is working.
❌ Common Error: If you see
Execution client is unavailableor401 Unauthorized:
Check that your Execution Client service is running (
systemctl status geth).Verify that the
jwt.hexpath is identical in both service files.
Last updated