Skip to content

自動升級

我們強烈建議驗證者使用 Cosmovisor 來運行他們的節點。 這將使低停機時間的升級更加順暢,因為驗證者不必在升級期間 手動升級 二進製文件。 相反,用戶可以預安裝新的二進製文件,Cosmovisor 將根據鏈上軟件升級建議自動更新它們。

cosmovisor 是 Cosmos SDK 應用程序二進製文件的小型流程管理器,用於監控傳入鏈升級提案的治理模塊。

如果它看到一個提案被批准,cosmovisor 可以自動下載新的二進製文件,停止當前的二進製文件,從舊的二進製文件切換到新的二進製文件,最後用新的二進製文件重啟節點。

先決條件

1. 配置 Cosmovisor

📣 提示 : $install_path 用来表示您安装 stcd 二进制程序的路径

設置 Cosmovisor 環境變量。我們建議在您的 .profile 中設置這些,以便在每個會話中自動設置。

echo "# Setup Cosmovisor" >> ~/.profile
echo "export DAEMON_NAME=stcd" >> ~/.profile
echo "export DAEMON_HOME=$install_path/.stcd" >> ~/.profile
source ~/.profile

在此之後,您必須在您的 DAEMON_HOME 目錄 ($install_path/.stcd) 中為 cosmosvisor 創建必要的文件夾,並複制當前的二進製文件。

mkdir -p $install_path/.stcd/cosmovisor
mkdir -p $install_path/.stcd/cosmovisor/genesis
mkdir -p $install_path/.stcd/cosmovisor/genesis/bin
mkdir -p $install_path/.stcd/cosmovisor/upgrades

cp $GOPATH/bin/stcd $install_path/.stcd/cosmovisor/genesis/bin

要檢查您是否正確執行此操作,請確保您的 cosmovisorstcd 版本相同:

cosmovisor run version
stcd version

2. 下載 Daodst 版本

手動下載

Cosmovisor 將不斷輪詢 $DAEMON_HOME/data/upgrade-info.json 以獲取新的升級說明。

  1. 下載(未安裝)新版本的二進製文件
  2. 將其放在$DAEMON_HOME/cosmovisor/upgrades/<name>/bin下,其中<name>是軟件升級計劃中指定的升級的 URI 編碼名稱。

范例: 對於名為v3.0.0計劃以及以下upgrade-info.json

{
    "binaries": {
        "linux/arm64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Linux_arm64.tar.gz",
        "linux/amd64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Linux_amd64.tar.gz",
        "windows/x86_64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Windows_x86_64.zip"
    }
}

你的 cosmovisor/ 目錄應該是這樣的:

cosmovisor/
├── current/   # either genesis or upgrades/<name>
├── genesis
│   └── bin
│       └── stcd
└── upgrades
    └── v3.0.0
        ├── bin
        │   └── stcd
        └── upgrade-info.json

自動下載

⚠️注意 : 自動下載不會提前驗證二進製文件是否可用。如果下載二進製文件有任何問題,cosmovisor 將停止並且不會重新啟動鏈(這可能會導致它停止)。

可以讓 Cosmovisor 自動下載 新的二進製文件。 驗證者可以使用自動下載選項來防止升級過程中不必要的停機。

一旦鏈在建議的 upgrade-height 處停止,此選項將使用升級二進製文件自動重啟鏈。

此選項的主要好處是驗證者可以提前準備升級二進製文件,然後在升級時放鬆。

要設置自動下載使用設置以下環境變量:

echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=true" >> ~/.profile

3. 啟動你的節點

現在一切都已設置並準備就緒,您可以啟動您的節點。

cosmovisor run start

您將需要一些方法來保持進程始終運行。如果你在 linux 上,你可以通過創建一個服務來做到這一點。

sudo tee /etc/systemd/system/stcd.service > /dev/null <<EOF
[Unit]
Description=Daodst Chain Daemon
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) start
Restart=always
RestartSec=3
LimitNOFILE=infinity

Environment="DAEMON_HOME=$HOME/.stcd"
Environment="DAEMON_NAME=stcd"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"

[Install]
WantedBy=multi-user.target
EOF

然後更新並啟動節點

sudo -S systemctl daemon-reload
sudo -S systemctl enable stcd
sudo -S systemctl start stcd

您可以使用以下方式檢查狀態:

systemctl status stcd