💾Node Installation

Prysm Testnet guide

  • Minimum hardware requirements:

Node Type
CPU
RAM
Storage

Testnet

4

8GB

150GB

1) Auto_install script

source <(curl -s https://raw.githubusercontent.com/111STAVR111/props/refs/heads/main/Prysm/prysmt)

2) Manual installation

Preparing the server

sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y

GO 1.21.6

ver="1.21.6"
wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version

Build 14.10.24

cd $HOME && mkdir -p go/bin/
git clone https://github.com/kleomedes/prysm && cd prysm
git checkout v0.1.0-devnet
make install

prysmd version --long | grep -e version -e commit

  • version: 0.1.0-devnet

  • commit: f48a40b9541508c19b037e1a659c7ab048a1946d

Initiation

prysmd init STAVR_guide --chain-id prysm-devnet-1

Create/recover wallet

prysmd keys add <walletname>
           OR
prysmd keys add <walletname> --recover

Download Addrbook and Genesis

wget -O $HOME/.prysm/config/addrbook.json "https://server-1.stavr.tech/Testnet/Prysm/addrbook.json"
wget -O $HOME/.prysm/config/genesis.json "https://server-1.stavr.tech/Testnet/Prysm/genesis.json"

sha256sum $HOME/.prysm/config/genesis.json

  • afe3fae047851409fa4e8bbb321a723fb4b2dc783bb5079c716bdf7df336e0c4

Set up the minimum gas price and Peers/Seeds/Filter peers/MaxPeers

sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.001uprysm\"/;" ~/.prysm/config/app.toml
external_address=$(wget -qO- eth0.me) 
sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.prysm/config/config.toml
peers=""
sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.prysm/config/config.toml
seeds=""
sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.prysm/config/config.toml
sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.prysm/config/config.toml
sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 50/g' $HOME/.prysm/config/config.toml

Pruning (optional)

pruning="custom"
pruning_keep_recent="1000"
pruning_keep_every="0"
pruning_interval="10"
sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.prysm/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.prysm/config/app.toml
sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.prysm/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.prysm/config/app.toml

Indexer (optional)

indexer="null" &&
sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.prysm/config/config.toml

Create a service file

sudo tee /etc/systemd/system/prysmd.service > /dev/null <<EOF
[Unit]
Description=prysmd
After=network-online.target

[Service]
User=$USER
ExecStart=$(which prysmd) start
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

StateSync Prysm Testnet

systemctl stop prysmd
SNAP_RPC=https://prysm.rpc.t.stavr.tech:443
LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \
BLOCK_HEIGHT=$((LATEST_HEIGHT - 1000)); \
TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.hash)

echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH

sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \
s|^(rpc_servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \
s|^(trust_height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \
s|^(trust_hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"| ; \
s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $HOME/.prysm/config/config.toml
prysmd tendermint unsafe-reset-all --home /root/.prysm
wget -O $HOME/.prysm/config/addrbook.json "https://server-1.stavr.tech/Testnet/Prysm/addrbook.json"
curl -o - -L https://prysm-t.wasm.stavr.tech/wasm-prysm.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.prysm/
sudo systemctl restart prysmd && journalctl -fu prysmd -o cat

SnapShot Testnet updated every 5 hours

You can check the size and time of snapshot creation with this command

curl -sI https://server-1.stavr.tech/Testnet/Prysm/prysm-snap-1.tar.lz4 | grep "last" && curl -sI https://server-1.stavr.tech/Testnet/Prysm/prysm-snap-1.tar.lz4 | grep content-length | awk '{printf "%.2f GB\n", $2/1024/1024/1024}'

cd $HOME
apt install lz4
sudo systemctl stop prysmd
cp $HOME/.prysm/data/priv_validator_state.json $HOME/.prysm/priv_validator_state.json.backup
rm -rf $HOME/.prysm/data
LATEST_SNAPSHOT=$(curl -s https://server-1.stavr.tech/Testnet/Prysm/ | grep -oE 'prysm-snap-[0-9]+\.tar\.lz4' | while read SNAPSHOT; do HEIGHT=$(curl -s "https://server-1.stavr.tech/Testnet/Prysm/${SNAPSHOT%.tar.lz4}-info.txt" | awk '/Block height:/ {print $3}'); echo "$SNAPSHOT $HEIGHT"; done | sort -k2 -nr | head -n 1 | awk '{print $1}')
curl -o - -L https://server-1.stavr.tech/Testnet/Prysm/$LATEST_SNAPSHOT | lz4 -c -d - | tar -x -C $HOME/.prysm
curl -o - -L https://prysm-t.wasm.stavr.tech/wasm-prysm.tar.lz4 | lz4 -c -d - | tar -x -C $HOME/.prysm/
mv $HOME/.prysm/priv_validator_state.json.backup $HOME/.prysm/data/priv_validator_state.json
wget -O $HOME/.prysm/config/addrbook.json "https://server-1.stavr.tech/Testnet/Prysm/addrbook.json"
sudo systemctl restart prysmd && journalctl -fu prysmd -o cat

Start

sudo systemctl daemon-reload
sudo systemctl enable prysmd
sudo systemctl restart prysmd && journalctl -fu prysmd -o cat

Create validator

#pubkey
prysmd tendermint show-validator --home /root/.prysm
nano $HOME/.prysm/validator.json
{
  "pubkey": {"#pubkey"},
  "amount": "1000000uprysm",
  "moniker": "STAVR_guide",
  "identity": "",
  "website": "",
  "security": "",
  "details": "",
  "commission-rate": "0.05",
  "commission-max-rate": "0.2",
  "commission-max-change-rate": "0.2",
  "min-self-delegation": "1"
}
prysmd tx staking create-validator $HOME/.prysm/validator.json --from=WalletName --chain-id=prysm-devnet-1 --fees 500uprysm -y

Monitoring

You can set up your node status alarm here - Monitoring

Security

You can create secure management of your wallet and your node by following this links.

TMKMS Wallet Security

Delete node

sudo systemctl stop prysmd
sudo systemctl disable prysmd
rm /etc/systemd/system/prysmd.service
sudo systemctl daemon-reload
cd $HOME
rm -rf prysm
rm -rf .prysm
rm -rf $(which prysmd)

Last updated