Skip to content

Pryzm

Introduction

The Layer 1 Yield Hub, redefining DeFi by separating future yield from assets, unlocking limitless flexibility, and pioneering innovative yield strategies.

Recommended Hardware

4 Cores, 8GB RAM, 200GB of storage (NVME)

Services & Sync

html
https://pryzm-testnet-rpc.eigennode.de
html
https://pryzm-testnet-api.eigennode.de
html
https://pryzm-testnet-grpc.eigennode.de

Snapshot

Update every 4 á 5 hours

shell
sudo systemctl stop pryzmd

cp $HOME/.pryzmd/data/priv_validator_state.json $HOME/.pryzmd/priv_validator_state.json.backup

rm -rf $HOME/.pryzmd/data $HOME/.pryzmd/wasmPath
curl https://files.eigennode.de/pryzm/snap_pryzm.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.pryzmd

mv $HOME/.pryzmd/priv_validator_state.json.backup $HOME/.pryzmd/data/priv_validator_state.json

sudo systemctl restart pryzmd && sudo journalctl -u pryzmd -f

State Sync

shell
sudo systemctl stop pryzmd

cp $HOME/.pryzmd/data/priv_validator_state.json $HOME/.pryzmd/priv_validator_state.json.backup
pryzmd tendermint unsafe-reset-all --home $HOME/.pryzmd

peers=""  
SNAP_RPC="pryzm-testnet-rpc.eigennode.de"

sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.pryzmd/config/config.toml 

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 && sleep 2

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/.pryzmd/config/config.toml

mv $HOME/.pryzmd/priv_validator_state.json.backup $HOME/.pryzmd/data/priv_validator_state.json

sudo systemctl restart pryzmd && sudo journalctl -u pryzmd -f

Installation

Environment variables & dependencies

shell
# set environment variables
echo "export WALLET="wallet"" >> $HOME/.bash_profile
echo "export MONIKER="moniker"" >> $HOME/.bash_profile
echo "export CHAIN_ID="indigo-1"" >> $HOME/.bash_profile
echo "export PROJECT="pryzm"" >> $HOME/.bash_profile
echo "export NETWORK="testnet"" >> $HOME/.bash_profile
echo "export DIRECTORY="$HOME/.pryzm"" >> $HOME/.bash_profile
source $HOME/.bash_profile

# install dependencies
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential fail2ban ufw
sudo apt -qy upgrade

# install go
cd $HOME
bash <(curl -s "https://raw.githubusercontent.com/EigenNode/utils/main/go_installer.sh") -v 1.21.3
source ~/.bash_profile

Install node

shell
# download binary
cd $HOME
wget https://storage.googleapis.com/pryzm-zone/core/0.13.0/pryzmd-0.13.0-linux-amd64.tar.gz
tar -xzvf $HOME/pryzmd-0.13.0-linux-amd64.tar.gz
mv pryzmd $HOME/go/bin

# config and init app
pryzmd config keyring-backend os
pryzmd config chain-id indigo-1
pryzmd init "test" --chain-id indigo-1

# download genesis and addrbook
wget -O $HOME/.pryzmd/config/genesis.json https://files.eigennode.de/pryzm/genesis.json
wget -O $HOME/.pryzmd/config/addrbook.json https://files.eigennode.de/pryzm/addrbook.json

# set seeds and peers
SEEDS=""
PEERS=""
sed -i -e "s/^seeds *=.*/seeds = \"$SEEDS\"/; s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.pryzmd/config/config.toml

# config pruning
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.pryzmd/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.pryzmd/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"50\"/" $HOME/.pryzmd/config/app.toml

# set minimum gas price, enable prometheus and disable indexing
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.025upryzm"|g' $HOME/.pryzmd/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.pryzmd/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.pryzmd/config/config.toml

# create and enable service file
sudo tee /etc/systemd/system/pryzmd.service > /dev/null <<EOF
[Unit]
Description=pryzm node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.pryzmd
ExecStart=$(which pryzmd) start --home $HOME/.pryzmd
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable pryzmd

# download latest chain data snapshot
if curl -s --head https://files.eigennode.de/pryzm/snap_pryzm.tar.lz4 | head -n 1 | grep "200" > /dev/null; then
    curl https://files.eigennode.de/pryzm/snap_pryzm.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.pryzmd
else
    bash <(curl -s https://raw.githubusercontent.com/EigenNode/utils/main/find_snap.sh)
fi

# start service
sudo systemctl restart pryzmd && sudo journalctl -u pryzmd -f --no-hostname -o cat

Create wallet

Check Sync status, once your node is fully synced, the output will say False

shell
pryzmd status 2>&1 | jq .SyncInfo

Create wallet

shell
pryzmd keys add $WALLET

Restore existing wallet

shell
pryzmd keys add $WALLET --recover

Check balance

shell
pryzmd q bank balances $(pryzmd keys show $WALLET -a)

Create validator

shell
pryzmd tx staking create-validator \
--amount 1000000upryzm \
--pubkey $(pryzmd tendermint show-validator) \
--chain-id indigo-1 \
--moniker "$MONIKER" \
--identity "" \
--details "❤️ Thank you, EigenNode" \
--website "https://eigennode.de/" \
--from $WALLET \
--commission-rate 0.1 \
--commission-max-rate 0.2 \
--commission-max-change-rate 0.01 \
--min-self-delegation 1 \
--gas auto --fees 0.025upryzm \
-y

Security

Firewall security Set the default to allow outgoing connections, deny all incoming, allow ssh and node p2p port

shell
sudo apt install -y ufw
sudo ufw default allow outgoing 
sudo ufw default deny incoming 
sudo ufw allow ssh/tcp 
sudo ufw allow 26656/tcp
sudo ufw enable

Delete node

DANGER

Please, note before proceeding with the next step! All data will be lost! Make sure you have backed up your keys!

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

Cheat Sheet

Service operations

Check logs

shell
sudo journalctl -u pryzmd -f

Start service

shell
sudo systemctl start pryzmd

Stop service

shell
sudo systemctl stop pryzmd

Restart service

shell
sudo systemctl restart pryzmd

Sync info

shell
pryzmd status 2>&1 | jq .SyncInfo

Check service status

shell
sudo systemctl status pryzmd

Reload services

shell
sudo systemctl daemon-reload

Enable Service

shell
sudo systemctl enable pryzmd

Disable Service

shell
sudo systemctl disable pryzmd

Node info

shell
pryzmd status 2>&1 | jq .NodeInfo

Your node peer

shell
echo $(pryzmd tendermint show-node-id)'@'$(wget -qO- eth0.me)':'$(cat $HOME/.pryzmd/config/config.toml | sed -n '/Address to listen for incoming connection/{n;p;}' | sed 's/.*://; s/".*//')

Key management

Add New Wallet

shell
pryzmd keys add $WALLET

Restore executing wallet

shell
pryzmd keys add $WALLET --recover

List All Wallets

shell
pryzmd keys list

Delete wallet

shell
pryzmd keys delete $WALLET

Check Balance

shell
pryzmd q bank balances $(pryzmd keys show $WALLET -a)

Export Key (save to wallet.backup)

shell
pryzmd keys export $WALLET

View EVM Prived Key

shell
pryzmd keys unsafe-export-eth-key $WALLET

Import Key (restore from wallet.backup)

shell
pryzmd keys import $WALLET wallet.backup

Edit existing validator

shell
pryzmd tx staking edit-validator \
--chain-id indigo-1 \
--new-moniker "$MONIKER" \
--identity "" \
--details "❤️ Thank you, EigenNode" \
--website "https://www.eigennode.de/" \
--from $WALLET \
--commission-rate 0.1 \
--gas auto --fees 0.025upryzm \
-y

EigenNode