Skip to content

Paxi Mainnet Validator

A fast, simple, and truly decentralized blockchain network built with Cosmos SDK and CosmWasm.

Chaind IDLast Version Tag
paxi-mainnetv1.0.6
ServiceURL
RPChttps://paxi-rpc.linknode.org
APIhttps://paxi-api.linknode.org
gRPChttps://paxi-grpc.linknode.org
Resourcehttps://vault2.astrostake.xyz/testnet/paxi
Dashboardhttps://www.astrostake.xyz/networks/paxi

Binary Upgrade

Upgrade to v1.0.6

Target block: 816000

Download & Extract Binary

bash
cd $HOME
mkdir -p paxi
cd paxi
wget https://github.com/paxi-web3/paxi/archive/refs/tags/v1.0.6.tar.gz
tar -xzvf v1.0.6.tar.gz
cd paxi-1.0.6
make install

Check new binary version

bash
$HOME/paxid/paxid version

Start a new tmux session

bash
tmux new -s paxi-upgrade

Run the auto-upgrade script.

⚠️ NOTE: Make sure you adjust the following according to your setup:

bash
UPGRADE_SCRIPT="https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/upgrade_binary.sh"

curl -sL $UPGRADE_SCRIPT | bash -s -- \
-b "paxid" \
-t "816000" \
-n "$HOME/paxid/paxid" \
-p "$HOME/.paxi" \
-r "http://localhost:11657" \
-i "1" \
-a "http://localhost:11317" \
-d "https://discord.com/api/webhooks/xxx/yyy" \ # optional
--progress-interval 0
Flag explanation:
FlagNameDescription
-bbinary-nameName of the running daemon (e.g. paxid)
-ttarget-blockBlock height at which the upgrade should happen
-nnew-binary-pathFull path to the new binary
-pinstall-pathPath where the current binary is installed (default: $HOME/go/bin)
-rrpc-urlRPC endpoint used to monitor current block height
-iproposal-id(Optional) Proposal ID to validate governance status
-aapi-url(Optional) API endpoint used to fetch proposal status

Installation

  1. Install Dependencies
bash
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget htop tmux build-essential jq make lz4 gcc unzip -y
  1. Install Go
bash
cd $HOME
VER="1.22.3"
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
[ ! -d ~/go/bin ] && mkdir -p ~/go/bin
  1. Set Vars

Configuration:

Generated Code:

Loading...
  1. Download Binary
bash
cd $HOME
mkdir $HOME/.paxi
rm -rf paxi
git clone https://github.com/paxi-web3/paxi.git
cd paxi
git checkout v1.0.6
make install
cp $HOME/paxid/paxid $HOME/.paxi
rm -rf $HOME/paxi && cd
echo 'export PATH="$HOME/.paxi:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
paxid version
  1. Initialized
bash
paxid init $MONIKER --chain-id $PAXI_CHAIN_ID
sed -i \
  -e 's|^chain-id *=.*|chain-id = "paxi-mainnet"|' \
  -e 's|^keyring-backend *=.*|keyring-backend = "os"|' \
  -e "s|^node *=.*|node = \"tcp://localhost:${PAXI_PORT}657\"|" \
  $HOME/.paxi/paxi/config/client.toml
  1. Download addrbook & genesis
bash
wget -O $HOME/.paxi/paxi/config/genesis.json https://vault2.astrostake.xyz/mainnet/paxi/genesis.json
wget -O $HOME/.paxi/paxi/config/addrbook.json https://vault2.astrostake.xyz/mainnet/paxi/addrbook.json
  1. Configure Node

Configure peers

bash
PEERS="$(curl -sS https://paxi-rpc.linknode.org/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | sed -z 's|\n|,|g;s|.$||')"
sed -i -e 's|^persistent_peers *=.*|persistent_peers = "'"$PEERS"'"|' "$HOME/.paxi/paxi/config/config.toml"

Update app.toml ports

bash
sed -i.bak -e "s%:1317%:${paxi_PORT}317%g;
s%:8080%:${PAXI_PORT}080%g;
s%:9090%:${PAXI_PORT}090%g;
s%:9091%:${PAXI_PORT}091%g;
s%:8545%:${PAXI_PORT}545%g;
s%:8546%:${PAXI_PORT}546%g;
s%:6065%:${PAXI_PORT}065%g" $HOME/.paxi/paxi/config/app.toml

Update config.toml ports

bash
sed -i.bak -e "s%:26658%:${PAXI_PORT}658%g;
s%:26657%:${PAXI_PORT}657%g;
s%:6060%:${PAXI_PORT}060%g;
s%:26656%:${PAXI_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${PAXI_PORT}656\"%;
s%:26660%:${PAXI_PORT}660%g" $HOME/.paxi/paxi/config/config.toml

Configure pruning

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

Set Minimum Gas Fee & Other Parameters

bash
sed -i 's|minimum-gas-prices =.*|minimum-gas-prices = "0.001upaxi"|g' $HOME/.paxi/paxi/config/app.toml
sed -i -e "s/prometheus = false/prometheus = true/" $HOME/.paxi/paxi/config/config.toml
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $HOME/.paxi/paxi/config/config.toml
  1. Create Services
bash
sudo tee /etc/systemd/system/paxid.service > /dev/null <<EOF
[Unit]
Description=paxi-mainnet
After=network-online.target

[Service]
User=$USER
ExecStart=$(which paxid) start --home $HOME/.paxi/paxi
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF
  1. Start Services
bash
sudo systemctl daemon-reload
sudo systemctl enable paxid
sudo systemctl restart paxid && sudo journalctl -u paxid -fo cat
  1. Sync Wasm
bash
curl -sL https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/paxi/sync_wasm.sh |bash
sudo systemctl restart paxid

Useful Commands

INFO

For a complete guide to creating a validator, visit our Cheat Sheet & Key Management page. It covers all the necessary commands and crucial steps for securing your keys.

Check logs

bash
sudo journalctl -u paxid -fo cat

Check Sync

bash
curl -sL https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/cosmos_sync_monitor.sh | bash -s -- --directory $HOME/.paxi/paxi --public-rpc https://paxi-rpc.linknode.org --interval 5

🛡️ Security

To apply a quick security baseline, you can configure your firewall like this:

bash
sudo ufw allow ${PAXI_PORT}656/tcp comment 'PAXI Node p2p Port'

🔐 For a more secure and maintainable setup, check out our Essentials Guide, including SSH key setup, Fail2Ban protection, and a full VPS hardening checklist.