Geth
Overview
🛑Strongly discouraged 🛑: GETH can be hazardous to your all YOUR STAKE.
Select a minority client.
Recommendation: Besu or Nethermind.
Official Links
Documentation
Website
1. Create service account and data directory
Create a service user for the execution service, create data directory and assign ownership.
sudo adduser --system --no-create-home --group execution
sudo mkdir -p /var/lib/geth
sudo chown -R execution:execution /var/lib/geth2. Install binaries
Downloading binaries is often faster and more convenient.
Building from source code can offer better compatibility and is more aligned with the spirit of FOSS (free open source software).
3. Setup and configure systemd
Create a systemd unit file to define your execution.service configuration.
sudo nano /etc/systemd/system/execution.servicePaste the following configuration into the file.
[Unit]
Description=Geth Execution Layer Client service for Mainnet
Wants=network-online.target
After=network-online.target
Documentation=https://www.coincashew.com
[Service]
Type=simple
User=execution
Group=execution
Restart=on-failure
RestartSec=3
KillSignal=SIGINT
TimeoutStopSec=900
ExecStart=/usr/local/bin/geth \
--mainnet \
--port 30303 \
--http.port 8545 \
--authrpc.port 8551 \
--maxpeers 50 \
--metrics \
--http \
--datadir=/var/lib/geth \
--pprof \
--state.scheme=path \
--authrpc.jwtsecret=/secrets/jwtsecret
[Install]
WantedBy=multi-user.targetTo exit and save, press Ctrl + X, then Y, then Enter.
Run the following to enable auto-start at boot time.
sudo systemctl daemon-reload
sudo systemctl enable executionFinally, start your execution layer client and check it's status.
sudo systemctl start execution
sudo systemctl status executionPress Ctrl + C to exit the status.
4. Helpful execution client commands
sudo journalctl -fu execution | cczeA properly functioning Geth execution client will indicate "Imported new potential chain segment". For example,
geth[4531]: INFO [02-04|01:20:48.280] Chain head was updated number=16000 hash=2317ae..c41107
geth[4531]: INFO [02-04|01:20:49.648] Imported new potential chain segment number=16000 hash=ab173f..33a21bsudo systemctl stop executionsudo systemctl start executionsudo systemctl status executionCommon reasons to reset the database can include:
Recovering from a corrupted database due to power outage or hardware failure
Re-syncing to reduce disk space usage
Upgrading to a new storage format
sudo systemctl stop execution
sudo rm -rf /var/lib/geth/*
sudo systemctl restart executionTime to re-sync the execution client can take a few hours up to a day.
Now that your execution client is configured and started, proceed to the next step on setting up your consensus client.
If you're checking the logs and see any warnings or errors, please be patient as these will normally resolve once both your execution and consensus clients are fully synced to the Ethereum network.