Skip to main content

Nâng cấp Nút Của Bạn

Cosmovisor

Cosmos SDK cung cấp một quản lý quy trình tiện lợi bao quanh nhị phân crossfid và có thể tự động thay đổi thành các nhị phân mới sau khi đề xuất nâng cấp quản trị thành công. Cosmovisor là hoàn toàn tùy chọn nhưng được khuyến khích. Thông tin thêm có thể được tìm thấy trong tài liệu cosmos.networkreadme cosmos-sdk/cosmovisor.

Cài đặt

Để bắt đầu với Cosmovisor trước tiên tải nó về

go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor

Thiết lập các biến môi trường

echo "# Thiết lập Cosmovisor" >> ~/.profile
echo "export DAEMON_NAME=crossfid" >> ~/.profile
echo "export DAEMON_HOME=$HOME/.crossfi" >> ~/.profile
source ~/.profile

Tạo các thư mục phù hợp

bash
mkdir -p ~/.crossfi/cosmovisor/upgrades
mkdir -p ~/.crossfi/cosmovisor/genesis/bin/
cp $(which crossfid) ~/.crossfi/cosmovisor/genesis/bin/

# xác minh thiết lập.

# Nó nên trả lại phiên bản giống như crossfid
cosmovisor version

Bây giờ crossfid có thể bắt đầu bằng cách chạy

cosmovisor start

Chuẩn bị Nâng cấp

Cosmovisor sẽ liên tục kiểm tra $DAEMON_HOME/data/upgrade-info.json cho các chỉ dẫn nâng cấp mới. Khi một bản nâng cấp đã sẵn sàng, các nhà điều hành nút có thể tải xuống nhị phân mới và đặt nó dưới $DAEMON_HOME/cosmovisor/upgrades//bin nơi `` là tên được mã hóa URI của bản nâng cấp như được chỉ định trong kế hoạch nâng cấp mô-đun.

Có thể để Cosmovisor tự động tải xuống nhị phân mới. Để làm điều này hãy đặt biến môi trường sau.

export DAEMON_ALLOW_DOWNLOAD_BINARIES=true

Nâng cấp Phần mềm Thủ công

Đầu tiên, dừng phiên bản của crossfid. Tiếp theo, nâng cấp phần mềm:

cd gaia
git fetch --all && git checkout
make install
GHI CHÚ: Nếu bạn gặp vấn đề ở bước này, vui lòng kiểm tra rằng bạn đã cài đặt phiên bản ổn định mới nhất của GO. :::

Nút đầy đủ của bạn đã được nâng cấp sạch sẽ! Nếu không có thay đổi lớn thì bạn có thể đơn giản khởi động lại nút bằng cách chạy:

crossfid start

Nâng cấp Tệp Genesis

Để nâng cấp tệp genesis, bạn có thể tải về từ nguồn tin cậy hoặc xuất nó cục bộ.

Tải về từ Nguồn Tin Cậy

Nếu bạn tham gia mainnet, tải về genesis từ mainnet repo. Nếu bạn tham gia một công cụ public testnet, tải về genesis từ testnet phù hợp trong testnet repo. Nếu không, tải nó từ nguồn tin cậy của bạn.

Lưu genesis mới dưới tên new_genesis.json. Sau đó thay thế genesis.json cũ bằng new_genesis.json

cd $HOME/.crossfi/config
cp -f genesis.json new_genesis.json
mv new_genesis.json genesis.json

Xuất Trạng thái thành Một Genesis Mới Cục Bộ

Nếu bạn đang chạy một nút trong phiên bản trước của mạng và muốn xây dựng genesis mới của bạn cục bộ từ trạng thái của mạng trước đó, sử dụng lệnh sau:

cd $HOME/.crossfi/config
crossfid export --for-zero-height --height=<export-height> > new_genesis.json

Lệnh trên lấy trạng thái tại một độ cao nhất định <export-height> và biến nó thành một tập tin genesis mới có thể được sử dụng để bắt đầu một mạng mới.

Sau đó, thay thế genesis.json cũ bằng new_genesis.json.

cp -f genesis.json new_genesis.json
mv new_genesis.json genesis.json

Tại thời điểm này, bạn có thể muốn chạy một mã lệnh để cập nhật genesis đã xuất thành một genesis tương thích với phiên bản mới của bạn. Ví dụ, các thuộc tính của loại Account đã thay đổi, một mã lệnh nên truy vấn tài khoản được mã hóa từ kho tài khoản, giải mã chúng, cập nhật loại của chúng, mã hóa lại và lưu trữ lại chúng. Bạn có thể tìm một ví dụ về mã lệnh như vậy ở đây.

Đặt Lại Dữ liệu

:::cảnh báo Nếu bạn đang chạy một nút xác thực trên mainnet, luôn cẩn thận khi thực hiện crossfid unsafe-reset-all. Đừng bao giờ sử dụng lệnh này nếu bạn không đổi chain-id. :::

:::nguy hiểm QUAN TRỌNG Đảm bảo rằng mỗi nút có một tệp priv_validator.json riêng biệt. Đừng sao chép priv_validator.json từ một nút cũ sang nhiều nút mới. Chạy hai nút với cùng một priv_validator.json sẽ khiến bạn bị phạt vì ký hai lần! :::

Đầu tiên, xóa các tệp lỗi thời và đặt lại dữ liệu. Nếu bạn đang chạy một nút xác thực, hãy đảm bảo rằng bạn đã hiểu rõ trước khi đặt lại.

crossfid unsafe-reset-all

Nút của bạn hiện ở trạng thái nguyên bản trong khi vẫn giữ nguyên priv_validator.jsonconfig.toml. Nếu bạn đã thiết lập bất kỳ nút sentry hoặc nút đầy đủ nào trước đó, nút của bạn vẫn sẽ cố gắng kết nối với chúng, nhưng có thể thất bại nếu chúng chưa được nâng cấp.