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.2 |
Requirements β
- CPU: 8 Cores
- Memory: 16GB RAM
- Disk: 1 TB of storage (NVME)
- Bandwidth: 100 Mbps (Download / Upload)
π‘ Need a reliable VPS to run this node? β
We recommend Netcup β high performance and affordable.
Use this voucher to get a discount:
36nc1753448678036nc1754247115136nc17542471150
Just a heads up: This is an affiliate link (no extra cost to you). Any support we get through it goes straight back into building free public infra β RPCs, APIs, snapshots, and more to support the community.
Binary Upgrade β
Upgrade to v1.1.2
Target block: 34649300
Download & Extract Binary β
cd $HOME
rm -rf stable-build
mkdir -p stable-build
cd stable-build
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stabled-1.1.2-linux-amd64-testnet.tar.gz
tar -xvzf stabled-1.1.2-linux-amd64-testnet.tar.gzStart a new tmux session β
tmux new -s stable-upgradeInstall required dependencies (recommended) β
The upgrade bot requires a few command-line tools:
jq(JSON parser)bc(math calculator)curl(HTTP request)websocat(WebSocket client β required for fast-mode)
Install them with:
sudo apt update
sudo apt install -y jq bc curl
# Install websocat (WebSocket client)
wget https://github.com/vi/websocat/releases/download/v1.11.0/websocat.x86_64-unknown-linux-musl -O /usr/local/bin/websocat
chmod +x /usr/local/bin/websocat
# Verify installation
websocat --versionRun 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)
UPGRADE_SCRIPT="https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/upgrade_binary_v2.sh"
curl -sL $UPGRADE_SCRIPT | bash -s -- \
-b "stabled" \
-t "34649300" \
-n "$HOME/stable-build/stabled" \
-p "/usr/local/bin" \
-r "http://localhost:13657" \
-a "http://localhost:13317" \
-d "https://discord.com/api/webhooks/xxx/yyy" \ # optional
--progress-interval 0Flag explanation:
| Flag | Name | Description |
|---|---|---|
-b | binary-name | Name of the running daemon (e.g. stabled) |
-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 |
Auto Installer β
bash <(curl -sL https://raw.githubusercontent.com/astrostake/scripts/refs/heads/main/stable-testnet/installer.sh)Manual Installation β
1. Install Dependencies β
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 β
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 β
cd $HOME
rm -rf stable-build
mkdir stable-build && cd stable-build
wget https://stable-testnet-data.s3.us-east-1.amazonaws.com/stabled-1.1.2-linux-amd64-testnet.tar.gz
tar -xvzf stabled-1.1.2-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 β
stabled init $MONIKER --chain-id $STABLE_CHAIN_ID6. Download Genesis and addrbook β
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
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.tomlSet inter-block-cache to false
sed -i 's/^inter-block-cache *=.*/inter-block-cache = false/' ~/.stabled/config/app.tomlOptional: Set Custom Port
app.toml
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
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
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.tomlOptional: Disable Indexer
Disables the transaction indexer to reduce disk usage and I/O load. Use this if you donβt need transaction search (tx_search) or historical query support.
sed -i -e "s/^indexer *=.*/indexer = \"null\"/" $CONFIG/config.tomlConfigure Pruning
Loading...8. Install Snapshot β
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 β
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 β
sudo systemctl daemon-reload
sudo systemctl enable stabled
sudo systemctl restart stabled
sudo systemctl status stabledUseful Commands β
Check logs
sudo journalctl -u stabled -fo catCheck Sync
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:
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.
Delete Validator β
β οΈ Critical: Backup Your Validator Key!
Make sure to backup priv_validator_key.json and priv_validator_state.json. Do not lose this key β it is required to run your validator.
File location: ~/.stabled/config/priv_validator_key.json ~/.stabled/data/priv_validator_state.json
cd $HOME
sudo systemctl stop stabled
sudo systemctl disable stabled
sudo rm /etc/systemd/system/stabled.service
sudo systemctl daemon-reload
sudo rm -f $(which stabled)
sudo rm -rf $HOME/.stabled
sudo rm -rf $HOME/stable