Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

本指南涵盖 Stable 节点的升级过程,包括升级流程和回滚策略。

有关完整的版本历史和升级详情,请参阅版本历史

升级类型

软升级(非破坏性)

  • 可随时执行
  • 向后兼容

硬升级(破坏性)

  • 需要在特定高度升级
  • 不向后兼容

紧急升级

  • 关键安全修复
  • 需要立即采取行动
  • 可能需要停链

标准升级流程

步骤 1:准备

# Check current version
stabled version --long
 
# Backup critical data
cp -r ~/.stabled/config ~/stable-backup-$(date +%Y%m%d)/
 
# For validators only: Backup validator state
cp ~/.stabled/data/priv_validator_state.json ~/stable-backup-$(date +%Y%m%d)/
 
# Check disk space (need 2x current data size)
df -h ~/.stabled

步骤 2:下载新二进制文件

# For v1.2.0-rc1 upgrade (January 22, 2026)
# Choose your architecture:
 
# Linux AMD64
BINARY_URL="https://stable-data-dist.s3.us-east-1.amazonaws.com/testnet/binary/stabled-1.2.0-rc1-linux-amd64-testnet.tar.gz"
 
# OR Linux ARM64
BINARY_URL="https://stable-data-dist.s3.us-east-1.amazonaws.com/testnet/binary/stabled-1.2.0-rc1-linux-arm64-testnet.tar.gz"
 
# Download new binary
wget $BINARY_URL
 
# Extract to temporary location
tar -xvzf stabled-1.2.0-rc1-linux-*.tar.gz -C /tmp/
 
# Verify new version
/tmp/stabled version --long

步骤 3:执行升级

软升级

# Stop node
sudo systemctl stop ${SERVICE_NAME}
 
# Backup current binary
sudo mv /usr/bin/stabled /usr/bin/stabled.backup
 
# Install new binary
sudo mv /tmp/stabled /usr/bin/stabled
sudo chmod +x /usr/bin/stabled
 
# Verify installation
stabled version --long
 
# Start node
sudo systemctl start ${SERVICE_NAME}
 
# Monitor logs
sudo journalctl -u ${SERVICE_NAME} -f

硬升级

# Monitor for upgrade height
while true; do
    HEIGHT=$(curl -s localhost:26657/status | jq -r '.result.sync_info.latest_block_height')
    echo "Current height: $HEIGHT"
    if [ $HEIGHT -ge $UPGRADE_HEIGHT ]; then
        break
    fi
    sleep 10
done
 
# Node will halt automatically at upgrade height
# Wait for halt message in logs
sudo journalctl -u ${SERVICE_NAME} -f | grep "UPGRADE"
 
# Once halted, perform upgrade
sudo systemctl stop ${SERVICE_NAME}
sudo mv /usr/bin/stabled /usr/bin/stabled.backup
sudo mv /tmp/stabled /usr/bin/stabled
 
# Start with new binary
sudo systemctl start ${SERVICE_NAME}

步骤 4:升级后验证

# Check node status
curl -s localhost:26657/status | jq '.result'
 
# Verify version
curl -s localhost:26657/status | jq '.result.node_info.version'
 
# Check peers
curl -s localhost:26657/net_info | jq '.result.n_peers'
 
# Monitor sync status
watch -n 2 'curl -s localhost:26657/status | jq ".result.sync_info"'
 
# Check for errors
sudo journalctl -u ${SERVICE_NAME} --since "10 minutes ago" | grep -i error

Cosmovisor 设置(自动升级)

Cosmovisor 可为协调升级自动化升级过程。

安装

# Install cosmovisor
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
 
# Or download binary
wget https://github.com/cosmos/cosmos-sdk/releases/download/cosmovisor%2Fv1.7.0/cosmovisor-v1.7.0-linux-amd64.tar.gz
tar -xzf cosmovisor-v1.7.0-linux-amd64.tar.gz
sudo mv cosmovisor /usr/bin/

配置

# Set environment variables
cat >> ~/.bashrc <<EOF
export DAEMON_NAME=stabled
export DAEMON_HOME=$HOME/.stabled
export DAEMON_RESTART_AFTER_UPGRADE=true
export DAEMON_ALLOW_DOWNLOAD_BINARIES=true
export UNSAFE_SKIP_BACKUP=false
EOF
 
source ~/.bashrc
 
# Create directory structure
mkdir -p $DAEMON_HOME/cosmovisor/genesis/bin
mkdir -p $DAEMON_HOME/cosmovisor/upgrades
 
# Copy current binary to genesis
cp /usr/bin/stabled $DAEMON_HOME/cosmovisor/genesis/bin/
 
# Create systemd service
sudo tee /etc/systemd/system/cosmovisor.service > /dev/null <<EOF
[Unit]
Description=Cosmovisor daemon
After=network-online.target
 
[Service]
Environment="DAEMON_NAME=stabled"
Environment="DAEMON_HOME=$HOME/.stabled"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=true"
User=$USER
ExecStart=/usr/bin/cosmovisor run start --chain-id stabletestnet_2201-1
Restart=always
RestartSec=3
LimitNOFILE=65535
 
[Install]
WantedBy=multi-user.target
EOF
 
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable cosmovisor
sudo systemctl start cosmovisor

使用 Cosmovisor 升级

# For each upgrade, create directory (use the upgrade name from the proposal)
mkdir -p $DAEMON_HOME/cosmovisor/upgrades/v1.2.0-rc1/bin
 
# Place new binary
cp /path/to/new/stabled $DAEMON_HOME/cosmovisor/upgrades/v1.2.0-rc1/bin/
 
# Cosmovisor will automatically switch at upgrade height

回滚

# Stop node
sudo systemctl stop ${SERVICE_NAME}
 
# Backup current state (in case needed)
cp -r ~/.stabled/data ~/.stabled/data.failed
 
# Restore from snapshot before upgrade
cd ~/.stabled
rm -rf data/
tar -I lz4 -xf ~/snapshots/pre-upgrade-snapshot.tar.lz4
 
# Restore previous binary
sudo mv /usr/bin/stabled.backup /usr/bin/stabled
 
# Start node
sudo systemctl start ${SERVICE_NAME}

紧急流程

# If chain halts unexpectedly
# 1. Check Discord for instructions
# 2. Export state at last known good height
stabled export --height <last_good_height> > export.json
 
# 3. Wait for coordinated restart instructions

后续步骤