Paxi Mainnet Validator
A fast, simple, and truly decentralized blockchain network built with Cosmos SDK and CosmWasm.
Chaind ID | Last Version Tag |
---|---|
paxi-mainnet | v1.0.6 |
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:
- RPC port: use your own RPC endpoint after -r (default is http://localhost:26657)
- API port: use your own REST API endpoint after -a (default is http://localhost:1317)
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:
Flag | Name | Description |
---|---|---|
-b | binary-name | Name of the running daemon (e.g. paxid ) |
-t | target-block | Block height at which the upgrade should happen |
-n | new-binary-path | Full path to the new binary |
-p | install-path | Path where the current binary is installed (default: $HOME/go/bin ) |
-r | rpc-url | RPC endpoint used to monitor current block height |
-i | proposal-id | (Optional) Proposal ID to validate governance status |
-a | api-url | (Optional) API endpoint used to fetch proposal status |
Installation
- 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
- 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
- Set Vars
Configuration:
Generated Code:
Loading...
- 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
- 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
- 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
- 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
- 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
- Start Services
bash
sudo systemctl daemon-reload
sudo systemctl enable paxid
sudo systemctl restart paxid && sudo journalctl -u paxid -fo cat
- 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.