- CoinBasics Daily
- Posts
- How to run the PRYZM Node? A full guide
How to run the PRYZM Node? A full guide
Introduction To PRYZM
PRYZM is a layer-1 blockchain designed specifically to focus on the management, harvesting, and utilization of yield within decentralized finance (DeFi) and proof-of-stake (PoS) environments. It operates utilizing the Cosmos Software Development Kit (SDK) and Tendermint consensus mechanism. Key aspects of PRYZM include:
Separation of yield from yield-bearing assets through built-in features at the chain level.
Support for innovative decentralized applications (dApps) that leverage cash flows derived from these assets.
A hub and spokes model in version 2, which controls outposts across different chains.
Asset refraction, converting liquid staking derivatives (LSDs) of yield-bearing assets (YBAs) like ETH, ATOM, DOT, MATIC, OSMO, or LUNA into principal tokens (PT) and yield tokens (YT), enabling users to earn staking rewards without long-term asset lock-ups and avoiding volatile interest rates when raising capital.
An automated market maker (AMM)-based pricing mechanism for YTs and PTs.
Alignment with evolving market trends to potentially transform DeFi towards more complex financial instruments similar to those found in traditional finance (TradFi).
PRYZM also offers user-friendly tools and services aimed at simplifying the process of earning, managing, and protecting yield, including swapping variable staking yield for fixed yield, taking leveraged exposure to asset yields without liquidation or funding concerns, and instantly converting future yield into stablecoins to mitigate price volatility.
How to run the PRYZM Node?
First thing first, Node Requirements:
Order & Configure your VPS
Establishing your node can be efficiently done through two primary methods: setting it up on a personal computer or opting for a Virtual Private Server (VPS).
A VPS is particularly suitable for tasks like managing websites, applications, or running nodes, thanks to its dedicated resources and internet connectivity.
For those looking into a VPS solution, Contabo comes highly recommended. This provider is known for offering reliable VPS rentals at competitive prices. To accommodate the needs of a node, especially for long-term operation, it's wise to select a plan with a minimum of 100 GB of storage.
We recommend considering the Cloud VPS M or a higher-tier plan from Contabo for your setup. This option ensures you have ample storage for your node's data and the robust performance needed for efficient operation. Explore more about what Contabo offers by visiting their website: https://contabo.com/en/
Choose Cloud VPS M or Higher
Select Payment Term
Region — Germany
Storage Type -400 GB SSDx
Image — Go to Apps & Panels > Docker
Apps & Panels > Docker
Log in & Set a Password for your Server
Set a password
Object Storage — Default
Networking — Default
Add-Ons — Default
After finalizing your payment, you’ll get an email verifying your purchase. Hold tight for a follow-up email, which will provide details about your VPS, encompassing your access credentials.
You’ll need to download and use Putty, a tool that enables you to securely connect to your VPS and utilize its functionalities. Download it here https://www.putty.org/
Enter IP ADDRESS
Enter the VPS IP Address then Click OPEN
Login : root
Password: (Enter your chosen password)
Log in using the password you set earlier.
Preparations
Install essential Components
sudo apt -q update
sudo apt -qy install curl git jq lz4 build-essential fail2ban ufw
sudo apt -qy upgrade
Install Docker
sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL <https://download.docker.com/linux/ubuntu/gpg> | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] <https://download.docker.com/linux/ubuntu> $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && sudo apt update && sudo apt-cache policy docker-ce && sudo apt install -y docker-ce
Install Docker Compose
mkdir -p ~/.docker/cli-plugins/ && curl -SL <https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64> -o ~/.docker/cli-plugins/docker-compose && chmod +x ~/.docker/cli-plugins/docker-compose
Install GO
sudo rm -rf /usr/local/go
curl -L <https://go.dev/dl/go1.21.6.linux-amd64.tar.gz> | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
source .bash_profile
Configure Moniker
MONIKER="<your-moniker-name>"
sample:
MONIKER="EkkoNodes"
Download Binaries
cd $HOME
wget <https://storage.googleapis.com/pryzm-zone/core/0.11.1/pryzmd-0.11.1-linux-amd64>
sudo mv pryzmd-0.11.1-linux-amd64 pryzmd
sudo chmod +x pryzmd
Prepare Binaries for Cosmovisor
mkdir -p $HOME/.pryzm/cosmovisor/genesis/bin
mv pryzmd $HOME/.pryzm/cosmovisor/genesis/bin/
Create symlinks
sudo ln -s $HOME/.pryzm/cosmovisor/genesis $HOME/.pryzm/cosmovisor/current -f
sudo ln -s $HOME/.pryzm/cosmovisor/current/bin/pryzmd /usr/local/bin/pryzmd -f
Set up Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/[email protected]
Create a service
sudo tee /etc/systemd/system/pryzm.service > /dev/null << EOF
[Unit]
Description=pryzm node service
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.pryzm"
Environment="DAEMON_NAME=pryzmd"
Environment="UNSAFE_SKIP_BACKUP=true"
[Install]
WantedBy=multi-user.target
EOF
Enable Service
sudo systemctl daemon-reload
sudo systemctl enable pryzm
Initialize the Node
Setting Node config
pryzmd config chain-id indigo-1
pryzmd config keyring-backend test
pryzmd config node tcp://localhost:23257
Initialize Node
pryzmd init $MONIKER --chain-id indigo-1
Download Genesis & Addrbook
curl -Ls <https://snap.nodex.one/pryzm-testnet/genesis.json> > $HOME/.pryzm/config/genesis.json
curl -Ls <https://snap.nodex.one/pryzm-testnet/addrbook.json> > $HOME/.pryzm/config/addrbook.json
Configure Seeds
sed -i -e "s|^seeds *=.*|seeds = \\"[email protected]:23210\\"|" $HOME/.pryzm/config/config.toml
Configure Gas Prices
sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \\"0.015upryzm,0.01factory/pryzm15k9s9p0ar0cx27nayrgk6vmhyec3lj7vkry7rx/uusdsim\\"|" $HOME/.pryzm/config/app.toml
Prunning Setting
sed -i \\
-e 's|^pruning *=.*|pruning = "custom"|' \\
-e 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|' \\
-e 's|^pruning-keep-every *=.*|pruning-keep-every = "0"|' \\
-e 's|^pruning-interval *=.*|pruning-interval = "19"|' \\
$HOME/.pryzm/config/app.toml
Custom Port
sed -i -e "s%^proxy_app = \\"tcp://127.0.0.1:26658\\"%proxy_app = \\"tcp://127.0.0.1:23258\\"%; s%^laddr = \\"tcp://127.0.0.1:26657\\"%laddr = \\"tcp://127.0.0.1:23257\\"%; s%^pprof_laddr = \\"localhost:6060\\"%pprof_laddr = \\"localhost:23260\\"%; s%^laddr = \\"tcp://0.0.0.0:26656\\"%laddr = \\"tcp://0.0.0.0:23256\\"%; s%^prometheus_listen_addr = \\":26660\\"%prometheus_listen_addr = \\":23266\\"%" $HOME/.pryzm/config/config.toml
sed -i -e "s%^address = \\"tcp://0.0.0.0:1317\\"%address = \\"tcp://0.0.0.0:23217\\"%; s%^address = \\":8080\\"%address = \\":23280\\"%; s%^address = \\"0.0.0.0:9090\\"%address = \\"0.0.0.0:23290\\"%; s%^address = \\"0.0.0.0:9091\\"%address = \\"0.0.0.0:23291\\"%; s%:8545%:23245%; s%:8546%:23246%; s%:6065%:23265%" $HOME/.pryzm/config/app.toml
Download Snapshots
curl -L <https://snap.nodex.one/pryzm-testnet/pryzm-latest.tar.lz4> | tar -Ilz4 -xf - -C $HOME/.pryzm
[[ -f $HOME/.pryzm/data/upgrade-info.json ]] && cp $HOME/.pryzm/data/upgrade-info.json $HOME/.pryzm/cosmovisor/genesis/upgrade-info.json
Start Service
sudo systemctl start pryzm
Check Node Status
Check logs
sudo journalctl -u pryzm -f -o cat
Ctrl + C or q to go back
Node Sync Status
pryzmd status | jq .SyncInfo
Install Pryzm Feeder
1.a Create Pryzm Wallet
pryzmd keys add feeder
1.b Recover Wallet (if you already have an existing wallet)
pryzmd keys add feeder --recover
Configure Przym Feeder
Download files
cd $HOME && mkdir -p $HOME/pryzmfeeder && cd $HOME/pryzmfeeder && wget <https://storage.googleapis.com/pryzm-zone/feeder/config.yaml> <https://storage.googleapis.com/pryzm-zone/feeder/init.sql> <https://storage.googleapis.com/pryzm-zone/feeder/docker-compose.yml>
Pull Przym feeder image
docker pull europe-docker.pkg.dev/pryzm-zone/core/pryzm-feeder:0.3.4
Install Postgres
sudo apt install postgresql
Press Y to continue
Move init.sql file to tmp directory
mv init.sql /tmp
Enable PostgreSQL access
sudo -u postgres -i psql -c "alter user postgres with password 'postgres';" -c "\\q" && sudo -u postgres -i psql -c "\\i /tmp/init.sql"
Create feeder folder
cd
mkdir ~/feeder
Go to feeder folder
cd feeder
Move config yaml file to feeder folder
mv -v ~/pryzmfeeder/config.yaml ~/feeder
Config yaml file
Before we proceed, we need the following details:
feeder: "your_pryzm_feeder_wallet_address"
feederMnemonic: "your_pryzm_feeder_mnemonic"
validator: "your_valoper_address"
rpcURL: "<http://localhost:23657>"
- as is (do not change into your vpsIP)gasPrice: "0.015upryzm"
To get your Validator Address, enter this command
pryzmd keys show feeder --bech val -a
Copy your pryzmvaloper address and save it for later.
Now let’s configure the Yaml file.
Config yaml file
nano config.yaml
example:
Ctrl X + Y + ENTER to save & exit
Node Sync Status
Let’s check the Sync Status of our Node:
pryzmd status | jq .SyncInfo
Since catching up — is still “true”, we will wait for this to become false before we create our validator. ( Check recent blocks here: )
OPTION: To speed up the process, we will download a snapshot Skynode
Download Snapshot
cd
#Stop the service and reset the data
sudo systemctl stop pryzm
cp $HOME/.pryzm/data/priv_validator_state.json $HOME/.pryzm/priv_validator_state.json.backup
rm -rf $HOME/.pryzm/data
#Download latest snapshot
curl -L <https://snap.skynodejs.net/pryzm/pryzm.tar.lz4|> tar -Ilz4 -xf - -C $HOME/.pryzm
mv $HOME/.pryzm/priv_validator_state.json.backup $HOME/.pryzm/data/priv_validator_state.json
#Restart the service and check the log
sudo systemctl restart pryzm && sudo journalctl -u pryzm -f -o cat
After Downloading you’ll see this logs. (Don’t mind the errors, those are normal)
Ctrl+C or Press Q to go back
then check node status again
pryzmd status | jq .SyncInfo
Now we can see that the latest block height increased to ‘1006839’. We will wait for this the ‘catching up’ status to become false to proceed on creating our validator. This usually takes 30mins-1hr depending on your machine.
While waiting, request some testnet funds here. https://testnet.pryzm.zone/faucet
Sync is complete, we can now proceed on creating our Validator.
Create Validator
pryzmd tx staking create-validator \\
--pubkey $(pryzmd tendermint show-validator) \\
--amount 1000000upryzm \\
--moniker "meow" \\
--identity "" \\
--details "put some details here" \\
--website "testnet.pryzm.zone" \\
--security-contact "your contact info" \\
--chain-id indigo-1 \\
--from <accountname> \\
--commission-rate "0.05"\\
--commission-max-rate "0.20" \\
--commission-max-change-rate "0.01" \\
--min-self-delegation "1" \\
--gas-adjustment 1.4 \\
--gas auto \\
--gas-prices 0.015upryzm
Edit the ff:
moniker
details
website
contact info
from<accountname>
→ feeder
sample:
pryzmd tx staking create-validator \\
--pubkey $(pryzmd tendermint show-validator) \\
--amount 1000000upryzm \\
--moniker "EkkoNodes" \\
--identity "" \\
--details "Making Node Setup Effortless" \\
--website "<https://medium.com/@ekko.nodes>" \\
--security-contact "<https://twitter.com/EkkoNodes>" \\
--chain-id indigo-1 \\
--from feeder \\
--commission-rate "0.05"\\
--commission-max-rate "0.20" \\
--commission-max-change-rate "0.01" \\
--min-self-delegation "1" \\
--gas-adjustment 1.4 \\
--gas auto \\
--gas-prices 0.015upryzm
Press Y then ENTER
Link Validator to Feeder
pryzmd tx oracle delegate-feed-consent [your_pryzm_feeder_wallet_address] --fees 2000factory/pryzm15k9s9p0ar0cx27nayrgk6vmhyec3lj7vkry7rx/uusdsim,3000upryzm --from feeder
sample:
edit [your_pryzm_feeder_wallet_address]
pryzmd tx oracle delegate-feed-consent pryzm150689cgesdkj60x2wp88qt94gdfrpchu9w9dm6 --fees 2000factory/pryzm15k9s9p0ar0cx27nayrgk6vmhyec3lj7vkry7rx/uusdsim,3000upryzm --from feeder
Press Y then ENTER
Congrats. You now have your Validator. Check it here: https://testnet.chainsco.pe/pryzm/validators
Bonus!
Participate in their public Testnet for a potential reward. 👀