Stable Full Node
Stable is the first Stablechain — a dedicated payments Layer 1 where stablecoins like USDT are used natively for gas and settlement.
| Chaind ID | Last Version Tag |
|---|---|
| stabletestnet_2201-1 | v1.1.1 |
Requirements
- CPU: 8 Cores
- Memory: 16GB RAM
- Disk: 1 TB of storage (NVME)
- Bandwidth: 100 Mbps (Download / Upload)
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 -y2. 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/bin3. Download and Extract
bash
cd $HOME
rm -rf stable
mkdir stable && cd stable
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stabled-1.1.1-linux-amd64-testnet.tar.gz
tar -xvzf stabled-1.1.1-linux-amd64-testnet.tar.gz
chmod +x stabled
mv stabled /usr/local/bin/
stabled version4. Set Vars
Configuration:
Generated Code:
Loading...5. Initiliazie the Node
bash
stabled init $MONIKER --chain-id $STABLE_CHAIN_ID6. Download Genesis and addrbook
bash
cp ~/.stabled/config/genesis.json ~/.stabled/config/genesis.json.backup
curl -Ls https://vault.astrostake.xyz/testnet/stable/genesis.json > $HOME/.stabled/config/genesis.json
curl -Ls https://vault.astrostake.xyz/testnet/stable/addrbook.json > $HOME/.stabled/config/addrbook.json7. Configure Node
app.toml
bash
CONFIG="$HOME/.stabled/config"
# Enable JSON-RPC
sed -i '/^\[json-rpc\]/,/^\[/{s/^enable *=.*/enable = true/}' $CONFIG/app.toml
# RPC HTTP (8545 → 0.0.0.0:8545)
sed -i '/^\[json-rpc\]/,/^\[/{s/address = ".*/address = "0.0.0.0:8545"/}' $CONFIG/app.toml
# RPC WebSocket (8546 → 0.0.0.0:8546)
sed -i '/^\[json-rpc\]/,/^\[/{s/ws-address = ".*/ws-address = "0.0.0.0:8546"/}' $CONFIG/app.toml
# Allow unprotected txs
sed -i '/^\[json-rpc\]/,/^\[/{s/^allow-unprotected-txs *=.*/allow-unprotected-txs = true/}' $CONFIG/app.tomlOptional: Set Custom Port
app.toml
bash
sed -i.bak -e "s%:1317%:${STABLE_PORT}317%g;
s%:8080%:${STABLE_PORT}080%g;
s%:9090%:${STABLE_PORT}090%g;
s%:9091%:${STABLE_PORT}091%g;
s%:8545%:${STABLE_PORT}545%g;
s%:8546%:${STABLE_PORT}546%g;
s%:6065%:${STABLE_PORT}065%g" $HOME/.stabled/config/app.tomlconfig.toml
bash
sed -i.bak -e "s%:26658%:${STABLE_PORT}658%g;
s%:26657%:${STABLE_PORT}657%g;
s%:6060%:${STABLE_PORT}060%g;
s%:26656%:${STABLE_PORT}656%g;
s%^external_address = \"\"%external_address = \"$(wget -qO- eth0.me):${STABLE_PORT}656\"%;
s%:26660%:${STABLE_PORT}660%g" $HOME/.stabled/config/config.tomlSet peers
bash
SEEDS="5ed0f977a26ccf290e184e364fb04e268ef16430@37.187.147.27:26656,128accd3e8ee379bfdf54560c21345451c7048c7@37.187.147.22:26656"
PEERS="5ed0f977a26ccf290e184e364fb04e268ef16430@37.187.147.27:26656,128accd3e8ee379bfdf54560c21345451c7048c7@37.187.147.22:26656,9d1150d557fbf491ec5933140a06cdff40451dee@164.68.97.210:26656,e33988e27710ee1a7072f757b61c3b28c922eb59@185.232.68.94:11656,ff4ff638cee05df63d4a1a2d3721a31a70d0debc@141.94.138.48:26664"
sed -i -e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*seeds *=.*/seeds = \"$SEEDS\"/}" \
-e "/^\[p2p\]/,/^\[/{s/^[[:space:]]*persistent_peers *=.*/persistent_peers = \"$PEERS\"/}" $HOME/.stabled/config/config.tomlDisable Indexer
bash
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $CONFIG/config.tomlConfigure custom pruning
bash
sed -i -e "s/^pruning *=.*/pruning = \"custom\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml
sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"100\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml
sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"19\"/" $HOME/.0gchaind/0g-home/0gchaind-home/config/app.toml8. Install Snapshot
bash
cp $HOME/.stabled/data/priv_validator_state.json $HOME/.stabled/priv_validator_state.json.backup
rm -rf $HOME/.stabled/data
curl https://vault.astrostake.xyz/testnet/stable/stable-testnet_snapshot.tar.lz4 | lz4 -dc - | tar -xf - -C $HOME/.stabled
mv $HOME/.stabled/priv_validator_state.json.backup $HOME/.stabled/data/priv_validator_state.json9. Create Service
bash
sudo tee /etc/systemd/system/stabled.service > /dev/null <<EOF
[Unit]
Description=Stable Daemon Service
After=network-online.target
[Service]
User=$USER
ExecStart=/usr/local/bin/stabled start --chain-id stabletestnet_2201-1
Restart=always
RestartSec=3
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal
SyslogIdentifier=stabled
[Install]
WantedBy=multi-user.target
EOF10. Start Service
bash
sudo systemctl daemon-reload
sudo systemctl enable stabled
sudo systemctl restart stabled
sudo systemctl status stabledUseful Commands
Check logs
bash
sudo journalctl -u stabled -fo catCheck Sync
bash
curl -sL https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/cosmos_sync_monitor.sh | bash -s -- --directory $HOME/.stabled --public-rpc https://stable-testnet-rpc.linknode.org --interval 5🛡️ Security
To apply a quick security baseline, you can configure your firewall like this:
bash
sudo ufw allow ${STABLE_PORT}656/tcp comment 'STABLE 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.
