Skip to main content

Nâng cấp Chuỗi

Khởi động Mạng

Khởi động mạng và kích hoạt nâng cấp sau khi đề xuất đã được thông qua.


# khởi động một nút đầy đủ ứng dụng gaia
$ crossfid start

# thiết lập cấu hình cli
$ crossfid config trust-node true
$ crossfid config chain-id testing

# tạo một đề xuất nâng cấp quản trị phần mềm
$ crossfid tx gov submit-proposal software-upgrade
\
--title
--description
\
--from --upgrade-height --deposit 10000000mpx

# sau khi đề xuất được thông qua, bạn có thể truy vấn kế hoạch đang chờ xử lý
$ crossfid query upgrade plan

Thực hiện nâng cấp

Giả sử đề xuất được thông qua chuỗi sẽ dừng lại ở chiều cao nâng cấp đã cho.

Bạn có thể dừng và khởi động binary gốc mọi lúc, nhưng nó sẽ từ chối chạy sau khi nâng cấp chiều cao.

Chúng ta cần một binary mới với bộ xử lý nâng cấp đã được cài đặt. Nhật ký sẽ trông như sau:

E[2019-11-05|12:44:18.913] NÂNG CẤP "
" CẦN THIẾT tại chiều cao: : module=main
E[2019-11-05|12:44:18.914] THẤT BẠI ĐỒNG THUẬN!!!
...

Lưu ý rằng tiến trình sẽ treo vô thời hạn (không thoát để tránh các vòng lặp khởi động lại). Vì vậy, bạn phải tự tay kết thúc tiến trình và thay thế nó bằng một binary mới. Hãy làm ngay bây giờ với Ctrl+C hoặc killall crossfid.

Trong gaia/app/app.go, sau khi upgrade.Keeper đã được khởi tạo và cài đặt trong ứng dụng, hãy đặt bộ xử lý nâng cấp tương ứng với đúng:

    app.upgradeKeeper.SetUpgradeHandler("
", func(ctx sdk.Context, plan upgrade.Plan) {
// logic tuỳ chỉnh sau khi nâng cấp mạng đã được thực hiện
})

Bạn sẽ nhận một lỗi panic nếu có bất kỳ lỗi nào - điều này sẽ khiến nâng cấp thất bại nếu không thể thực hiện di chuyển, và không có nút nào sẽ tiến triển - cho phép khôi phục thủ công. Nếu chúng ta bỏ qua lỗi, thì sẽ tiếp tục với một nâng cấp không hoàn chỉnh và sẽ rất khó khăn khi khôi phục đúng trạng thái.

Biên dịch Binary Mới

Bây giờ, biên dịch binary mới và chạy mã đã nâng cấp để hoàn tất nâng cấp:


# tạo một binary mới của gaia với bộ xử lý nâng cấp đã thêm vào
$ make install

# Khởi động lại chuỗi sử dụng binary mới. Bạn nên thấy chuỗi tiếp tục từ

# chiều cao nâng cấp:

# `I[2019-11-05|12:48:15.184] đang áp dụng nâng cấp
tại chiều cao: module=main`
$ crossfid start

# xác minh không có kế hoạch chờ xử lý
$ crossfid query upgrade plan

# xác minh bạn có thể truy vấn tiêu đề khối của mức nâng cấp đã hoàn thành
$ crossfid query upgrade applied