diff --git a/README.md b/README.md index 2905350..2eaf2ef 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,8 @@ Random documents for the ETHStaker community. - [Guide on how to do alerting for an Ethereum validator](alerting.md) - [Guide on how to setup a Holeksy testnet node](holesky-node.md) - [Guide on how to prepare a staking machine for the Merge](prepare-for-the-merge.md) -- [Guide on how to join the Goerli/Prater merge testnet (Geth/Lighthouse)](merge-goerli-prater.md) -- [Guide on how to join the Goerli/Prater merge testnet (Besu/Teku)](merge-goerli-prater-alt.md) - [Guide on how to perform a voluntary exit for your validator](voluntary-exit.md) +- [Guide on How to Migrate to a Larger Disk for an Ethereum Validator](migrating-to-a-larger-disk.md) ## MEV diff --git a/merge-goerli-prater-alt.md b/merge-goerli-prater-alt.md deleted file mode 100644 index 4a922c7..0000000 --- a/merge-goerli-prater-alt.md +++ /dev/null @@ -1,316 +0,0 @@ -# Guide on how to join the Goerli/Prater merge testnet (Besu/Teku) - -[*#TestingTheMerge*](https://twitter.com/search?q=%23TestingTheMerge) is an Ethereum community initiative to test [the merge upgrade](https://ethereum.org/en/eth2/merge/) with various testnets. It is being spear headed by [Marius van der Wijden](https://twitter.com/vdWijden) and [Parithosh Jayanthi](https://twitter.com/parithosh_j). It is meant to test the recent experimental features added to various Ethereum clients supporting this protocol upgrade. - -This guide is meant for people with little or some experience in running Ethereum clients and using the command-line interface (CLI). It will show you step by step how to setup your machine to join the *Goerli/Prater* merge testnet by giving you the instructions to install and configure all the tools needed. It will assume you are using a modern linux distribution with systemd and APT (like Ubuntu 20.04 or Ubuntu 22.04, but it should work on most recent debian derivatives) on a modern x86 CPU (Intel, AMD). A clean install of your operating system on a dedicated machine or a virtual machine before proceeding is preferable. - -## Overview - -We will use the latest version for Besu and the latest version for Teku. We will configure them to connect to the *Goerli/Prater* merge testnet. This is an alternative guide to [the main one who uses the Geth/Lighthouse combo](merge-goerli-prater.md) for its clients. - -## Executing the commands - -Almost all of these commands will be performed in a terminal. Start your *Terminal* application. Any line that starts with the dollar sign (`$`) is a command that need to be executed in your terminal. Do not input the dollar sign (`$`) in your terminal, only the text that comes after that. - -Executing a command with `sudo` will occasionally ask you for your password. Make sure to enter your account password correctly. You can execute the command again if you fail to enter the correct password after a few attempts. - -## Installing Prerequisites - -Make sure we have fully updated packages first. - -```console -$ sudo apt -y update -$ sudo apt -y upgrade -``` - -Install prerequisites commonly available. - -```console -$ sudo apt -y install software-properties-common wget curl ccze apt-transport-https libjemalloc-dev -``` - -Install Adoptium JDK (Java). - -```console -$ sudo mkdir -p /etc/apt/keyrings -$ wget -O - https://packages.adoptium.net/artifactory/api/gpg/key/public | sudo tee /etc/apt/keyrings/adoptium.asc -$ echo "deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | sudo tee /etc/apt/sources.list.d/adoptium.list -$ sudo apt -y update -$ sudo apt -y install temurin-17-jdk -``` - -## Installing Besu - -Download [the latest release version for Besu](https://github.com/hyperledger/besu/releases) and extract it. If the latest version is more recent than what is used here, use that version and adjust for the new URL and archive name. Make sure to use the download link that ends with `tar.gz`. - -```console -$ cd ~ -$ wget https://hyperledger.jfrog.io/hyperledger/besu-binaries/besu/23.4.1/besu-23.4.1.tar.gz -$ tar xvf besu-23.4.1.tar.gz -$ rm besu-23.4.1.tar.gz -``` - -Install this Besu version globally. - -```console -$ sudo cp -a ./besu-23.4.1 /usr/local/bin/besu -$ rm -rf ./besu-23.4.1 -``` - -## Installing Teku - -Download [the latest release version for Teku](https://github.com/ConsenSys/teku/releases) and extract it. If the latest version is more recent than what is used here, use that version and adjust for the new URL and archive name. Make sure to use the download link from the *Downloads* section of the release description. It should be a file that ends with `tar.gz` and it should **not** be the one called 'Source code'. - -```console -$ cd ~ -$ wget https://artifacts.consensys.net/public/teku/raw/names/teku.tar.gz/versions/23.5.0/teku-23.5.0.tar.gz -$ tar xvf teku-23.5.0.tar.gz -$ rm teku-23.5.0.tar.gz -``` - -Install this Teku version globally. - -```console -$ sudo cp -a ./teku-23.5.0 /usr/local/bin/teku -$ rm -rf ./teku-23.5.0 -``` - -## Creating the JWT token file - -Create a JWT token file in a neutral location and make it readable to everyone. We will use the `/var/lib/ethereum/jwttoken` location to store the JWT token file. - -``` -$ sudo mkdir -p /var/lib/ethereum -$ openssl rand -hex 32 | tr -d "\n" | sudo tee /var/lib/ethereum/jwttoken -$ sudo chmod +r /var/lib/ethereum/jwttoken -``` - -## Configuring your Besu node - -Create a dedicated user for running Besu, create a directory for holding the data and assign the proper permissions. - -```console -$ sudo useradd --no-create-home --shell /bin/false besu -$ sudo mkdir -p /var/lib/besu -$ sudo chown -R besu:besu /var/lib/besu -``` - -Create a systemd service config file to configure the Besu node service. - -```console -$ sudo nano /etc/systemd/system/besu.service -``` - -Paste the following service configuration into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). - -```ini -[Unit] -Description=Besu Ethereum Client (Goerli) -After=network.target -Wants=network.target - -[Service] -User=besu -Group=besu -Type=simple -Restart=always -RestartSec=5 -TimeoutStopSec=180 -LimitNOFILE=8388608 -ExecStart=/usr/local/bin/besu/bin/besu \ - --network=goerli \ - --sync-mode=X_CHECKPOINT \ - --rpc-http-enabled=true \ - --engine-rpc-port=8551 \ - --engine-host-allowlist=localhost,127.0.0.1 \ - --data-path=/var/lib/besu \ - --data-storage-format=BONSAI \ - --metrics-enabled=true \ - --engine-jwt-secret=/var/lib/ethereum/jwttoken - -[Install] -WantedBy=default.target -``` - -Reload systemd to reflect the changes and start the service. Check status to make sure it’s running correctly. - -```console -$ sudo systemctl daemon-reload -$ sudo systemctl start besu.service -$ sudo systemctl status besu.service -``` - -It should say active (running) in green text. If not then go back and repeat the steps to fix the problem. Press Q to quit (will not affect the besu service). - -Enable the besu service to automatically start on reboot. - -```console -$ sudo systemctl enable besu.service -``` - -You can watch the live messages from your Besu node logs using this command. Make sure nothing suspicious shows up in your logs. - -```console -$ sudo journalctl -f -u besu.service -o cat | ccze -A -``` - -Press `Ctrl` + `C` to stop showing those messages. - -## Trying the Goerli/Prater merge testnet - -### Requesting testnet funds - -Requesting or obtaining enough Goerli ETH to perform your validator deposit can be challenging at this point. We suggest you use the EthStaker #cheap-goerli-validator free process. Join the [EthStaker Discord server](https://dsc.gg/ethstaker) and use the `/cheap-goerli-deposit` slash command (start typing the command and it will show up above your input box). From there, follow the instructions from the bot. As a harder alternative, you can try obtaining 32 Goerli ETH from various faucets or bridges on https://faucetlink.to/goerli . - -## Adding a validator - -### Creating your validator keys and performing the deposit - -There are 2 great tools to create your validator keys: - -* GUI based: [Wagyu Key Gen](https://github.com/stake-house/wagyu-key-gen) -* CLI based: [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) - -If you choose the *Wagyu Key Gen* application, make sure to select the *Goerli* network and follow the instructions provided. If you are using the #cheap-goerli-validator process, you will need to use `0x4D496CcC28058B1D74B7a19541663E21154f9c84` as your withdrawal address. This is only required for that process. When on Mainnet, you should use a withdrawal address you control if you want to use one. - -If you choose the *staking-deposit-cli* application, here is how to create your validator keys: - -```console -$ cd ~ -$ wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.5.0/staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ tar xvf staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ rm staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ cd staking_deposit-cli-d7b5304-linux-amd64/ -$ ./deposit new-mnemonic --num_validators 1 --chain goerli --execution_address 0x4D496CcC28058B1D74B7a19541663E21154f9c84 -$ ls -d $PWD/validator_keys/* -``` - -Make sure to store your keystore password and your mnemonic somewhere safe. You should end up with a deposit file (starts with `deposit_data-` and ends with `.json`) and one or more keystore files (starts with `keystore-` and ends with `.json`), 1 per validator. Copy them around if needed. Make sure your deposit file and your keystore files are in a known and accessible location on your machine. - -Next we will need to perform your deposit. If you used the #cheap-goerli-validator process, you can perform your deposit on https://goerli.launchpad.ethstaker.cc/ . If you managed to obtained 32 Goerli ETH, you can use the official Goerli launchpad on https://goerli.launchpad.ethereum.org/ . - -## Configuring your Teku node - -Create a dedicated user for running the Teku node, create a directory for holding the data, copy testnet files and assign the proper permissions. - -```console -$ sudo useradd --no-create-home --shell /bin/false teku -$ sudo mkdir -p /var/lib/teku -$ sudo chown -R teku:teku /var/lib/teku -``` - -Create a directory for validator keys and copy your keystore file(s). Make sure to replace `/path/to/keystore` with the actual path to your keystore created [in the previous step](#creating-your-validator-keys-and-performing-the-deposit) (only copy the keystore files, the ones that starts with `keystore-` and ends with `.json`). Perform the cp command for each keystore you have. You will typically only have 1 for the Goerli/Prater merge testnet. - -```console -$ sudo mkdir -p /var/lib/teku/validator_keys -$ sudo cp /path/to/keystore /var/lib/teku/validator_keys -$ ls /var/lib/teku/validator_keys -``` - -The output of that last listing (`ls` command) should look like this: - -```console -keystore-m_12381_3600_0_0_0-1659033295.json -``` - -Create your password file(s). For each `keystore_m*.json` file, create an equivalently named password file. The name of that password file should be the same one as your keystore file except the extension should be `.txt` and the content should be your keystore password. Before you execute the next command replace `` with the name of the json file. - -```console -$ sudo nano /var/lib/teku/validator_keys/.txt -``` - -If my keystore file was named `keystore-m_12381_3600_0_0_0-1659033295.json`, my command above would have been `$ sudo nano /var/lib/teku/validator_keys/keystore-m_12381_3600_0_0_0-1659033295.txt`. - -Type your keystore password into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). - -Assign the proper permissions to the validator keys directory. - -```console -$ sudo chown -R teku:teku /var/lib/teku/validator_keys -$ sudo chmod -R 700 /var/lib/teku/validator_keys -``` - -List the files in the validator keys directory and make sure you have a corresponding `.txt` file with your keystore password in it for each keystore file you have. - -```console -$ sudo ls /var/lib/teku/validator_keys -``` - -Download a checkpoint state for quick sync. - -```console -$ sudo curl -o /var/lib/teku/finalized-state.ssz -H 'Accept: application/octet-stream' https://goerli.beaconstate.ethstaker.cc/eth/v2/debug/beacon/states/finalized -$ sudo chown teku:teku /var/lib/teku/finalized-state.ssz -``` - -Create a systemd service config file to configure the Teku node service. - -```console -$ sudo nano /etc/systemd/system/teku.service -``` - -Paste the following service configuration into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). Make sure to replace the `0x0000000000000000000000000000000000000000` address with your own Ethereum address that you control where you want to receive the transaction tips. - -```ini -[Unit] -Description=Teku Ethereum Client (Goerli) -Wants=network-online.target -After=network-online.target - -[Service] -Type=simple -User=teku -Group=teku -Restart=always -RestartSec=5 -ExecStart=/usr/local/bin/teku/bin/teku \ - --network goerli \ - --data-path /var/lib/teku \ - --validator-keys /var/lib/teku/validator_keys:/var/lib/teku/validator_keys \ - --rest-api-enabled true \ - --ee-endpoint http://127.0.0.1:8551 \ - --metrics-enabled true \ - --validators-graffiti EthStaker \ - --validators-proposer-default-fee-recipient 0x0000000000000000000000000000000000000000 \ - --initial-state /var/lib/teku/finalized-state.ssz \ - --ee-jwt-secret-file /var/lib/ethereum/jwttoken - -[Install] -WantedBy=multi-user.target -``` - -Reload systemd to reflect the changes and start the service. Check status to make sure it’s running correctly. - -```console -$ sudo systemctl daemon-reload -$ sudo systemctl start teku.service -$ sudo systemctl status teku.service -``` - -It should say active (running) in green text. If not then go back and repeat the steps to fix the problem. Press Q to quit (will not affect the Teku node service). - -Enable the Teku node service to automatically start on reboot. - -```console -$ sudo systemctl enable teku.service -``` - -You can watch the live messages from your Teku node logs using this command. Make sure nothing suspicious shows up in your logs. - -```console -$ sudo journalctl -f -u teku.service -o cat | ccze -A -``` - -Press `Ctrl` + `C` to stop showing those messages. - -## Support - -If you have any question or if you need additional support, make sure to get in touch with the EthStaker community on: - -* Discord: [dsc.gg/ethstaker](https://dsc.gg/ethstaker) -* Reddit: [reddit.com/r/ethstaker](https://www.reddit.com/r/ethstaker/) - -## Credits - -Based on [Somer Esat's guide](https://github.com/SomerEsat/ethereum-staking-guide). -Based on [Ethereum community's guide](https://notes.ethereum.org/qrDBhhydTsyKFmGaBl2COQ). diff --git a/merge-goerli-prater.md b/merge-goerli-prater.md deleted file mode 100644 index 39490dd..0000000 --- a/merge-goerli-prater.md +++ /dev/null @@ -1,324 +0,0 @@ -# Guide on how to join the Goerli/Prater merge testnet (Geth/Lighthouse) - -[*#TestingTheMerge*](https://twitter.com/search?q=%23TestingTheMerge) is an Ethereum community initiative to test [the merge upgrade](https://ethereum.org/en/eth2/merge/) with various testnets. It is being spear headed by [Marius van der Wijden](https://twitter.com/vdWijden) and [Parithosh Jayanthi](https://twitter.com/parithosh_j). It is meant to test the recent experimental features added to various Ethereum clients supporting this protocol upgrade. - -This guide is meant for people with little or some experience in running Ethereum clients and using the command-line interface (CLI). It will show you step by step how to setup your machine to join the *Goerli/Prater* merge testnet by giving you the instructions to install and configure all the tools needed. It will assume you are using a modern linux distribution with systemd and APT (like Ubuntu 20.04 or Ubuntu 22.04, but it should work on most recent debian derivatives) on a modern x86 CPU (Intel, AMD). A clean install of your operating system on a dedicated machine or a virtual machine before proceeding is preferable. - -## Overview - -We will use the latest version for Geth and the latest version for Lighthouse. We will configure them to connect to the *Goerli/Prater* merge testnet. There is an alternative guide to this one [who uses the Besu/Teku combo](merge-goerli-prater-alt.md) for its clients. - -## Executing the commands - -Almost all of these commands will be performed in a terminal. Start your *Terminal* application. Any line that starts with the dollar sign (`$`) is a command that need to be executed in your terminal. Do not input the dollar sign (`$`) in your terminal, only the text that comes after that. - -Executing a command with `sudo` will occasionally ask you for your password. Make sure to enter your account password correctly. You can execute the command again if you fail to enter the correct password after a few attempts. - -## Installing Prerequisites - -Make sure we have fully updated packages first. - -```console -$ sudo apt -y update -$ sudo apt -y upgrade -``` - -Install prerequisites commonly available. - -```console -$ sudo apt -y install software-properties-common wget curl ccze -``` - -## Installing Geth - -Add the Ethereum PPA and install the Geth package. - -```console -$ sudo add-apt-repository -y ppa:ethereum/ethereum -$ sudo apt -y install geth -``` - -## Installing Lighthouse - -Download [the latest release version for Lighthouse](https://github.com/sigp/lighthouse/releases) and extract it. If the latest version is more recent than what is used here, use that version and adjust for the new URL and archive name. Make sure to use the linux x86_64 version. - -```console -$ cd ~ -$ wget https://github.com/sigp/lighthouse/releases/download/v4.2.0/lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz -$ tar xvf lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz -$ rm lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz -``` - -Install this Lighthouse version globally. - -```console -$ sudo cp ~/lighthouse /usr/local/bin -$ rm ~/lighthouse -``` - -## Creating the JWT token file - -Create a JWT token file in a neutral location and make it readable to everyone. We will use the `/var/lib/ethereum/jwttoken` location to store the JWT token file. - -``` -$ sudo mkdir -p /var/lib/ethereum -$ openssl rand -hex 32 | tr -d "\n" | sudo tee /var/lib/ethereum/jwttoken -$ sudo chmod +r /var/lib/ethereum/jwttoken -``` - -## Configuring your Geth node - -Create a dedicated user for running Geth, create a directory for holding the data and assign the proper permissions. - -```console -$ sudo useradd --no-create-home --shell /bin/false goeth -$ sudo mkdir -p /var/lib/goethereum -$ sudo chown -R goeth:goeth /var/lib/goethereum -``` - -Create a systemd service config file to configure the Geth node service. - -```console -$ sudo nano /etc/systemd/system/geth.service -``` - -Paste the following service configuration into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). - -```ini -[Unit] -Description=Go Ethereum Client - Geth (Goerli) -After=network.target -Wants=network.target - -[Service] -User=goeth -Group=goeth -Type=simple -Restart=always -RestartSec=5 -TimeoutStopSec=180 -ExecStart=geth \ - --goerli \ - --http \ - --datadir /var/lib/goethereum \ - --metrics \ - --metrics.expensive \ - --pprof \ - --authrpc.jwtsecret=/var/lib/ethereum/jwttoken - -[Install] -WantedBy=default.target -``` - -Reload systemd to reflect the changes and start the service. Check status to make sure it’s running correctly. - -```console -$ sudo systemctl daemon-reload -$ sudo systemctl start geth.service -$ sudo systemctl status geth.service -``` - -It should say active (running) in green text. If not then go back and repeat the steps to fix the problem. Press Q to quit (will not affect the geth service). - -Enable the geth service to automatically start on reboot. - -```console -$ sudo systemctl enable geth.service -``` - -You can watch the live messages from your Geth node logs using this command. Make sure nothing suspicious shows up in your logs. - -```console -$ sudo journalctl -f -u geth.service -o cat | ccze -A -``` - -Press `Ctrl` + `C` to stop showing those messages. - -## Configuring your Lighthouse beacon node - -Create a dedicated user for running the Lighthouse beacon node, create a directory for holding the data, copy testnet files and assign the proper permissions. - -```console -$ sudo useradd --no-create-home --shell /bin/false lighthousebeacon -$ sudo mkdir -p /var/lib/lighthouse -$ sudo chown -R lighthousebeacon:lighthousebeacon /var/lib/lighthouse -``` - -Create a systemd service config file to configure the Lighthouse beacon node service. - -```console -$ sudo nano /etc/systemd/system/lighthousebeacon.service -``` - -Paste the following service configuration into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). - -```ini -[Unit] -Description=Lighthouse Ethereum Client Beacon Node (Goerli) -Wants=network-online.target -After=network-online.target - -[Service] -Type=simple -User=lighthousebeacon -Group=lighthousebeacon -Restart=always -RestartSec=5 -ExecStart=/usr/local/bin/lighthouse bn \ - --network goerli \ - --datadir /var/lib/lighthouse \ - --http \ - --execution-endpoint http://127.0.0.1:8551 \ - --metrics \ - --validator-monitor-auto \ - --checkpoint-sync-url https://goerli.beaconstate.ethstaker.cc \ - --execution-jwt /var/lib/ethereum/jwttoken - -[Install] -WantedBy=multi-user.target -``` - -Reload systemd to reflect the changes and start the service. Check status to make sure it’s running correctly. - -```console -$ sudo systemctl daemon-reload -$ sudo systemctl start lighthousebeacon.service -$ sudo systemctl status lighthousebeacon.service -``` - -It should say active (running) in green text. If not then go back and repeat the steps to fix the problem. Press Q to quit (will not affect the Lighthouse beacon node service). - -Enable the Lighthouse beacon node service to automatically start on reboot. - -```console -$ sudo systemctl enable lighthousebeacon.service -``` - -You can watch the live messages from your Lighthouse beacon node logs using this command. Make sure nothing suspicious shows up in your logs. - -```console -$ sudo journalctl -f -u lighthousebeacon.service -o cat | ccze -A -``` - -Press `Ctrl` + `C` to stop showing those messages. - -## Trying the Goerli/Prater merge testnet - -### Requesting testnet funds - -Requesting or obtaining enough Goerli ETH to perform your validator deposit can be challenging at this point. We suggest you use the EthStaker #cheap-goerli-validator free process. Join the [EthStaker Discord server](https://dsc.gg/ethstaker) and use the `/cheap-goerli-deposit` slash command (start typing the command and it will show up above your input box). From there, follow the instructions from the bot. As a harder alternative, you can try obtaining 32 Goerli ETH from various faucets or bridges on https://faucetlink.to/goerli . - -## Adding a validator - -### Creating your validator keys and performing the deposit - -There are 2 great tools to create your validator keys: - -* GUI based: [Wagyu Key Gen](https://github.com/stake-house/wagyu-key-gen) -* CLI based: [staking-deposit-cli](https://github.com/ethereum/staking-deposit-cli) - -If you choose the *Wagyu Key Gen* application, make sure to select the *Goerli* network and follow the instructions provided. If you are using the #cheap-goerli-validator process, you will need to use `0x4D496CcC28058B1D74B7a19541663E21154f9c84` as your withdrawal address. This is only required for that process. When on Mainnet, you should use a withdrawal address you control if you want to use one. - -If you choose the *staking-deposit-cli* application, here is how to create your validator keys: - -```console -$ cd ~ -$ wget https://github.com/ethereum/staking-deposit-cli/releases/download/v2.5.0/staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ tar xvf staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ rm staking_deposit-cli-d7b5304-linux-amd64.tar.gz -$ cd staking_deposit-cli-d7b5304-linux-amd64/ -$ ./deposit new-mnemonic --num_validators 1 --chain goerli --execution_address 0x4D496CcC28058B1D74B7a19541663E21154f9c84 -$ ls -d $PWD/validator_keys/* -``` - -Make sure to store your keystore password and your mnemonic somewhere safe. You should end up with a deposit file (starts with `deposit_data-` and ends with `.json`) and one or more keystore files (starts with `keystore-` and ends with `.json`), 1 per validator. Copy them around if needed. Make sure your deposit file and your keystore files are in a known and accessible location on your machine. - -Next we will need to perform your deposit. If you used the #cheap-goerli-validator process, you can perform your deposit on https://goerli.launchpad.ethstaker.cc/ . If you managed to obtained 32 Goerli ETH, you can use the official Goerli launchpad on https://goerli.launchpad.ethereum.org/ . - -### Configuring your Lighthouse validator client - -Create a dedicated user for running the Lighthouse validator client, create a directory for holding the data and assign the proper permissions. - -```console -$ sudo useradd --no-create-home --shell /bin/false lighthousevalidator -$ sudo mkdir -p /var/lib/lighthouse/validators -$ sudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators -$ sudo chmod 700 /var/lib/lighthouse/validators -``` - -Import your keystore that includes your validator key for the Lighthouse validator client. Running the first command will prompt you for that keystore password. Make sure to enter it correctly and avoid leaving it blank. Make sure to replace `/path/to/keystores` with the actual path to your keystores created [in the previous step](#creating-your-validator-keys-and-performing-the-deposit). - -```console -$ sudo /usr/local/bin/lighthouse account validator import \ - --directory /path/to/keystores \ - --datadir /var/lib/lighthouse \ - --network goerli -$ sudo chown -R lighthousevalidator:lighthousevalidator /var/lib/lighthouse/validators -``` - -Create a systemd service config file to configure the Lighthouse validator client service. - -```console -$ sudo nano /etc/systemd/system/lighthousevalidator.service -``` - -Paste the following service configuration into the file. Exit and save once done (`Ctrl` + `X`, `Y`, `Enter`). Make sure to replace the `0x0000000000000000000000000000000000000000` address with your own Ethereum address that you control where you want to receive the transaction tips. - -```ini -[Unit] -Description=Lighthouse Ethereum Client Validator Client (Goerli) -Wants=network-online.target -After=network-online.target - -[Service] -User=lighthousevalidator -Group=lighthousevalidator -Type=simple -Restart=always -RestartSec=5 -ExecStart=/usr/local/bin/lighthouse vc \ - --network goerli \ - --datadir /var/lib/lighthouse \ - --graffiti EthStaker \ - --metrics \ - --suggested-fee-recipient 0x0000000000000000000000000000000000000000 - -[Install] -WantedBy=multi-user.target -``` - -Reload systemd to reflect the changes and start the service. Check status to make sure it’s running correctly. - -```console -$ sudo systemctl daemon-reload -$ sudo systemctl start lighthousevalidator.service -$ sudo systemctl status lighthousevalidator.service -``` - -It should say active (running) in green text. If not then go back and repeat the steps to fix the problem. Press Q to quit (will not affect the Lighthouse validator client service). - -Enable the Lighthouse validator client service to automatically start on reboot. - -```console -$ sudo systemctl enable lighthousevalidator.service -``` - -You can watch the live messages from your Lighthouse validator client logs using this command. - -```console -$ sudo journalctl -f -u lighthousevalidator.service -o cat | ccze -A -``` - -Press `Ctrl` + `C` to stop showing those messages. - -## Support - -If you have any question or if you need additional support, make sure to get in touch with the EthStaker community on: - -* Discord: [dsc.gg/ethstaker](https://dsc.gg/ethstaker) -* Reddit: [reddit.com/r/ethstaker](https://www.reddit.com/r/ethstaker/) - -## Credits - -Based on [Somer Esat's guide](https://github.com/SomerEsat/ethereum-staking-guide). -Based on [Ethereum community's guide](https://notes.ethereum.org/qrDBhhydTsyKFmGaBl2COQ).