Installation
Full guide to run a validator node on Safrochain mainnet.
Chain:
safrochain-1| Version:v0.2.2| Go:1.25.8
Genesis time:2026-06-25T10:00:00Z
💢 Table of Contents
- Quick Start — Automated Installation
- Manual Installation
- Wallet Operations
- Validator Operations
- Sync Status Check
- Useful Commands
- Delete Node
- Network Info
💢 1. Quick Start — Automated Installation
Download and run the setup script:
wget -O safrochain_mainnet.sh https://raw.githubusercontent.com/Edsny1/SafroChain-Mainnet/refs/heads/Edsny/safrochain_mainnet.sh
chmod +x safrochain_mainnet.sh
./safrochain_mainnet.shThe script will ask for:
- MONIKER — your node name
- Port prefix — default
26(change if you have other nodes using default ports) - Wallet name — default
wallet
About Go on shared servers: If your server already has other nodes (lumerad, gnoland, atomoned, etc.), the script only updates
/usr/local/go. Pre-compiled binaries in~/go/binare unaffected — they do not require Go at runtime.
💢 2. Manual Installation
💢 2.1 System Dependencies
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git wget htop tmux build-essential jq make lz4 gcc unzip💢 2.2 Install Go 1.25.8
cd $HOME
wget https://go.dev/dl/go1.25.8.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.25.8.linux-amd64.tar.gz
rm go1.25.8.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
go version
# Expected: go version go1.25.8 linux/amd64💢 2.3 Build safrochaind v0.2.2
cd $HOME
git clone https://github.com/Safrochain-Org/safrochain-node ~/safrochain-node
cd ~/safrochain-node
git fetch --tags
git checkout v0.2.2
make install
safrochaind version
# Expected: safrochaind v0.2.2💢 2.4 Install Cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
mkdir -p $HOME/.safrochain/cosmovisor/genesis/bin
mkdir -p $HOME/.safrochain/cosmovisor/upgrades
cp $(which safrochaind) $HOME/.safrochain/cosmovisor/genesis/bin/safrochaind
sudo ln -sfn $HOME/.safrochain/cosmovisor/genesis $HOME/.safrochain/cosmovisor/current💢 2.5 Initialize Node
safrochaind init "YOUR_MONIKER" --chain-id safrochain-1 --home ~/.safrochain💢 2.6 Download & Verify Genesis
curl -L https://raw.githubusercontent.com/Safrochain-Org/mainnet-genesis/main/genesis.json \
-o ~/.safrochain/config/genesis.json
# Verify SHA-256 hash
sha256sum ~/.safrochain/config/genesis.json
# Expected: c05ac5aec1918df9edb257e8e0eea184d73edc51370eb4aa9f0b4f0aad615c4d💢 2.7 Configure Peers (config.toml)
SEEDS="bc772fdc9749e6dfd200a9428f07d86fe4fd34ec@seed.safrochain.network:26666,d323d296ba55e89fb6ce1a724f8da1740bd8cbb0@seed2.safrochain.network:26670"
sed -i -e "s|^seeds *=.*|seeds = \"\$SEEDS\"|" ~/.safrochain/config/config.toml💢 2.8 Configure app.toml
sed -i \
-e 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.05usaf"|' \
-e 's|^pruning *=.*|pruning = "default"|' \
~/.safrochain/config/app.toml💢 2.9 Create Systemd Service
sudo tee /etc/systemd/system/safrochaind.service > /dev/null << 'EOF'
[Unit]
Description=Safrochain Mainnet Node (Cosmovisor)
After=network-online.target
[Service]
Type=simple
User=root
ExecStart=/root/go/bin/cosmovisor run start --home /root/.safrochain
Restart=on-failure
RestartSec=5s
LimitNOFILE=1048576
TimeoutStopSec=30s
Environment="DAEMON_HOME=/root/.safrochain"
Environment="DAEMON_NAME=safrochaind"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="UNSAFE_SKIP_BACKUP=true"
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable safrochaind
sudo systemctl start safrochaind💢 Status Check
safrochaind status 2>&1 | jq💢 3. Wallet Operations
💢 Create Wallet
safrochaind keys add wallet --home ~/.safrochainIMPORTANT: Save your mnemonic phrase in a safe place. It cannot be recovered if lost.
💢 Recover Wallet
safrochaind keys add wallet --recover --home ~/.safrochain
# Enter your 24-word mnemonic when prompted💢 List Wallets
safrochaind keys list --home ~/.safrochain💢 Show Wallet Address
safrochaind keys show wallet -a --home ~/.safrochain💢 Check Wallet Balance
safrochaind query bank balances $(safrochaind keys show wallet -a --home ~/.safrochain) \
--node https://rpc.safrochain.network:443💢 4. Validator Operations
💢 Create Validator
Wait until your node is fully synced before creating a validator.
# Check validator pubkey
safrochaind tendermint show-validator --home ~/.safrochain
# Create validator.json
cat > $HOME/.safrochain/validator.json << EOF
{
"pubkey": $(safrochaind tendermint show-validator --home ~/.safrochain),
"amount": "1000000usaf",
"moniker": "YOUR_MONIKER",
"identity": "",
"website": "",
"security": "",
"details": "Safrochain Mainnet Validator",
"commission-rate": "0.10",
"commission-max-rate": "0.20",
"commission-max-change-rate": "0.01",
"min-self-delegation": "1"
}
EOF
# Submit create-validator TX
safrochaind tx staking create-validator $HOME/.safrochain/validator.json \
--from wallet \
--chain-id safrochain-1 \
--gas auto \
--gas-adjustment 1.4 \
--fees 300usaf \
--home ~/.safrochain \
-y💢 Delegate Tokens
# Get your validator address
VAL_ADDR=$(safrochaind keys show wallet --bech val -a --home ~/.safrochain)
safrochaind tx staking delegate "$VAL_ADDR" 1000000usaf \
--from wallet \
--chain-id safrochain-1 \
--gas auto \
--gas-adjustment 1.5 \
--gas-prices 0.05usaf \
--home ~/.safrochain \
-y💢 Withdraw Rewards
VAL_ADDR=$(safrochaind keys show wallet --bech val -a --home ~/.safrochain)
safrochaind tx distribution withdraw-rewards "$VAL_ADDR" \
--commission \
--from wallet \
--chain-id safrochain-1 \
--gas auto \
--gas-adjustment 1.5 \
--gas-prices 0.05usaf \
--home ~/.safrochain \
-y💢 Send Tokens
safrochaind tx bank send \
$(safrochaind keys show wallet -a --home ~/.safrochain) \
RECEIVER_ADDRESS \
1000000usaf \
--chain-id safrochain-1 \
--gas auto \
--gas-adjustment 1.5 \
--gas-prices 0.05usaf \
--home ~/.safrochain \
-y💢 Check Validator Status
# Your validator address
safrochaind keys show wallet --bech val -a --home ~/.safrochain
# Validator info
safrochaind query staking validator \
$(safrochaind keys show wallet --bech val -a --home ~/.safrochain) \
--node https://rpc.safrochain.network:443💢 5. Sync Status Check
# One-time check
curl -s http://localhost:26657/status | jq '.result.sync_info | {latest_block_height, catching_up}'
# Compare with network
LOCAL=$(curl -s http://localhost:26657/status | jq -r '.result.sync_info.latest_block_height')
NETWORK=$(curl -s https://rpc.safrochain.network/status | jq -r '.result.sync_info.latest_block_height')
echo "Local: $LOCAL | Network: $NETWORK | Behind: $((NETWORK - LOCAL)) blocks"If you used a custom port prefix during installation (e.g.
53), replace26657with53657.
💢 6. Useful Commands
💢 Service Management
# Start / stop / restart
sudo systemctl start safrochaind
sudo systemctl stop safrochaind
sudo systemctl restart safrochaind
# View status
sudo systemctl status safrochaind
# Live logs
sudo journalctl -fu safrochaind -o cat💢 Node Info
# Node ID (share with others to connect)
safrochaind tendermint show-node-id --home ~/.safrochain
# Current block height
safrochaind status --home ~/.safrochain | jq '.SyncInfo.latest_block_height'
# Peers connected
curl -s localhost:26657/net_info | jq '.result.n_peers'💢 Unjail Validator
safrochaind tx slashing unjail \
--from wallet \
--chain-id safrochain-1 \
--gas auto \
--gas-adjustment 1.5 \
--gas-prices 0.05usaf \
--home ~/.safrochain \
-y💢 7. Delete Node
Warning: This action is irreversible. Back up your key files first.
# Back up your keys
cp -r $HOME/.safrochain/keyring-file $HOME/safrochain_keyring_backup
# Stop and disable service
sudo systemctl stop safrochaind
sudo systemctl disable safrochaind
sudo rm -f /etc/systemd/system/safrochaind.service
sudo systemctl daemon-reload
# Remove node data and source
rm -rf $HOME/.safrochain
rm -rf $HOME/safrochain-node💢 8. Network Info
| Parameter | Value |
|---|---|
| Chain ID | safrochain-1 |
| Binary version | v0.2.2 |
| Go version | 1.25.8 |
| Denom | usaf (1 SAF = 1,000,000 usaf) |
| Min gas price | 0.05usaf |
| Genesis time | 2026-06-25T10:00:00Z |
| RPC | https://rpc.safrochain.network |
| REST (API) | https://api.safrochain.network |
| gRPC | https://grpc.safrochain.network |
| Status | https://status.safrochain.network |
| Seed 1 | bc772fdc9749e6dfd200a9428f07d86fe4fd34ec@seed.safrochain.network:26666 |
| Seed 2 | d323d296ba55e89fb6ce1a724f8da1740bd8cbb0@seed2.safrochain.network:26670 |
| Genesis hash | c05ac5aec1918df9edb257e8e0eea184d73edc51370eb4aa9f0b4f0aad615c4d |
Prepared by OshVanK
