⚙️Installation

🛠️ Hardware Requirements

Node Type
CPU
RAM
Storage

Full (Recommended)

4 CPU

8GB

200 GB

🛠️ Network details

Chain ID
Version tag
Binary Name
Binary Home

ignite_186-1

v1.1.5

pellcored

$HOME/.pellcored

The installation time depends on many factors, such as your skills, resources and characteristics of your server, the most important: disk speed, internet connection, server load CPU, RAM, so this value may differ from the one indicated by us.

⚡ Automatic installation

bash <(curl -s https://raw.githubusercontent.com/UnityNodes/scripts/refs/heads/main/story/install-pell-testnet.sh)

With the help of a one-line script, all the necessary commands will be executed automatically, you only need to check the operation of your node at the end

📝 Manual installation

📌Step 1: Installation packeges and dependencies

# Install dependencies for building from source
sudo apt update
sudo apt install -y lz4 jq make git gcc build-essential curl chrony unzip gzip snapd tmux bc

# Bash Profile Environment Setup
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin

# Install Go
cd $HOME
VER="1.22.0"
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"
[ ! -f ~/.bash_profile ] && touch ~/.bash_profile
echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile
source $HOME/.bash_profile

📌Step 2: Set moniker and install node

Give your validator a name by which you can find yourself in explorer, put it in ""

MONIKER=""

After that, insert the following node installation command

# Clone project repository
cd $HOME
wget -O pellcored https://github.com/0xPellNetwork/network-config/releases/download/v1.1.5/pellcored-v1.1.5-linux-amd64
chmod +x pellcored
mv pellcored ~/go/bin/
WASMVM_VERSION=v2.1.2
export LD_LIBRARY_PATH=~/.pellcored/lib
mkdir -p $LD_LIBRARY_PATH
wget "https://github.com/CosmWasm/wasmvm/releases/download/$WASMVM_VERSION/libwasmvm.$(uname -m).so" -O "$LD_LIBRARY_PATH/libwasmvm.$(uname -m).so"
echo "export LD_LIBRARY_PATH=$HOME/.pellcored/lib:$LD_LIBRARY_PATH" >> $HOME/.bash_profile
source ~/.bash_profile

# Initialize the node
pellcored config keyring-backend os
pellcored config chain-id ignite_186-1
pellcored init "$MONIKER" --chain-id ignite_186-1 

# Download genesis and addrbook files
curl -Ls https://snapshots.unitynodes.com/pell-testnet/genesis.json > $HOME/.pellcored/config/genesis.json
curl -Ls https://snapshots.unitynodes.com/pell-testnet/addrbook.json > $HOME/.pellcored/config/addrbook.json

# Peers
PEERS="1a7b6f07673a96f3a0391705da32ee184730fb7d@91.205.105.37:26656,2b2932bd000204b75d2675d84e0e6e690fcc9b41@31.165.179.107:26656,d003cb808ae91bad032bb94d19c922fe094d8556@pell-testnet-peer.itrocket.net:58656,f2474b5e49e1399ee933cb28776dd9893941457d@135.181.210.46:57656,a2460ce7888ac53f13aa50ba0b8df9a553bd3332@65.109.84.153:57656,2af565efc9036b85167e3c3c01a2b5ad6db0b8e3@43.157.105.179:26656,d52c32a6a8510bdf0d33909008041b96d95c8408@34.87.39.12:26656,81caef1e38e18974813624aea310722ad68a33dd@65.109.27.148:26656,f1049cc2be2902053bcf5ea1a553414d8a978ef6@[2a01:4f8:110:4265::11]:26656,c9a5d341547e06441e30e07db289fc337ec36f79@152.53.87.97:26656,78d89ac4ef91fd92bd97769891711ca58bd7f512@65.108.226.44:47956"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.pellcored/config/config.toml

# Disable indexer
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.pellcored/config.toml

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

# Download latest chain data snapshot(Story+Geth)
curl https://snapshots.unitynodes.com/pell-testnet/pell-testnet_latest.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.pellcored

# Create a service 
sudo tee /etc/systemd/system/pellcored.service > /dev/null <<EOF
[Unit]
Description=Pell node
After=network-online.target
[Service]
User=$USER
WorkingDirectory=$HOME/.pellcored
ExecStart=$(which pellcored) start --home $HOME/.pellcored
Environment=LD_LIBRARY_PATH=$HOME/.pellcored/lib/
Restart=on-failure
RestartSec=5
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF

# Start the service and check the logs
sudo systemctl daemon-reload
sudo systemctl enable pellcored
sudo systemctl restart pellcored

📌Step 3: Node Health Check

Follow the commands to check if your node is working properly

while true; do
  rpc_endpoint=$(grep -m 1 -oP '^laddr = "\K[^"]+' "$HOME/.pellcored/config/config.toml" | cut -d ':' -f 3) 
  local_height=$(curl -s localhost:$rpc_endpoint/status | jq -r '.result.sync_info.latest_block_height')
  network_height=$(curl -s https://rpc.unitynodes.com/pell-testnet/status | jq -r '.result.sync_info.latest_block_height')
  blocks_left=$((network_height - local_height))

  echo -e "\033[1;33m[Sync Status]\033[0m \033[1;32mNode Height:\033[0m \033[1;37m$local_height\033[0m | \033[1;32mNetwork Height:\033[0m \033[1;37m$network_height\033[0m | \033[1;32mBlocks Left:\033[0m \033[1;31m$blocks_left\033[0m"

  sleep 5
done

📝 Create wallet

📌Step 1: Create wallet

wardend keys add wallet

Save all information after entering the command, without this you will not be able to restore data to the wallet. SAVE SEED PHRASE (12 words).

📌Step 2: Request test tokens to your wallet address

To receive test tokens, you will need to request tokens from the project team.

📌Step 3: Create validator

cd $HOME
# Create validator.json file
echo "{\"pubkey\":{\"@type\":\"/cosmos.crypto.ed25519.PubKey\",\"key\":\"$(pellcored comet show-validator | grep -Po '\"key\":\s*\"\K[^"]*')\"},
    \"amount\": \"1000000apell\",
    \"moniker\": \"$MONIKER\",
    \"identity\": \"\",
    \"website\": \"\",
    \"security\": \"\",
    \"details\": \"\",
    \"commission-rate\": \"0.1\",
    \"commission-max-rate\": \"0.2\",
    \"commission-max-change-rate\": \"0.01\",
    \"min-self-delegation\": \"1\"
}" > validator.json

# Create a validator using the JSON configuration
pellcored tx staking create-validator validator.json \
    --from $WALLET \
    --chain-id ignite_186-1 \
	--gas auto --gas-adjustment 1.5

After entering the command, you will receive hash transactions, check the status in the explorer if the status is successful - you have created a validator. You can find your validator here: explorer In the Active / Inactive lists.

📌Step 4: Backup

If you have successfully created a validator, be sure to save your validator.

Show priv_validator_key.json

cat $HOME/.pellcored/config/priv_validator_key.json

SAVE YOUR PRIVATE KEY AFTER ENTERING THE COMMAND The priv_validator_key.json is the key with which you can always restore the operation of your validator, so keep it and in case of reinstallation/transfer of the validator to another server - transfer it too.

Also remember, if you are a validator with a sufficient number of delegated tokens and you are in an active set, signing blocks, always save priv_validator_state.json - this file contains information about the signed blocks of your validators, and in case of restoring the validator after reinstallation or on another server , this file won't give you the old blocks again, otherwise you'll end up in jail with no way out 💡 Hint:

  • priv_validator_key static

  • priv_validator_state is updated every signed block, so it is necessary to save and transfer it after stopping

  • View private key: cat $HOME/.pellcored/config/priv_validator_key.json

  • View private state: cat $HOME/.pellcored/config/priv_validator_key.json

All the useful commands to manage your node in the section - Useful commands

Last updated