Bài viết
Chia sẻ kiến thức của bạn.
📦 Phân tích chuyên sâu về mô-đun `sui: :package`: Xuất bản gói & Nâng cấp trong Move
Trong sự phát triển nhanh chóng của công nghệ blockchain, ngôn ngữ lập trình Movenổi bật về tính bảo mật,** tính linh hợpvà khả năng kiểm tra**. Một trong những thế mạnh cốt lõi của nó là** quản lý tinh tế các gói hợp đồng thông minh**.
Bài viết này đi sâu vào sui::package
mô-đun - công cụ đằng sau việc xuất bản, nâng cấp và duy trì các gói Move trên blockchain Sui.
🔍 Tổng quan về mô-đun
sui::package
là nền tảng trong hệ sinh thái Move. Nó cung cấp cho các nhà phát triển các công cụ và giao diện mạnh mẽ để quản lý các góian toàn và hiệu quả.
📦 Tờ khai & Nhập khẩu
module sui::package;
use std::ascii::String;
use std::type_name;
use sui::types;
Điều này xác định mô-đun và mang đến các thư viện tiêu chuẩn Move thiết yếu và các mô-đun gốc SUI cho logic phức tạp.
🧩 Cấu trúc cốt lõi & Giao diện công cộng
1. Publisher
Xử lýnhận dạng nhà xuất bảncủa gói.
Chức năng chính:
claim
claim_and_keep
burn_publisher
2. UpgradeCap
Kiểm soátkhả năng nâng cấpcủa gói.
Các lĩnh vực chính:
package_id
version
policy
(chính sách nâng cấp)
Chức năng chính:
upgrade_package
restrict
3. UpgradeTicket
Cấp quyền cho một bản nâng cấp cụ thể**.
Chức năng chính:
ticket_package
ticket_policy
ticket_digest
4. UpgradeReceipt
Được phát hành sau khi nâng cấp thành công.
Chức năng chính:
receipt_cap
receipt_package
🚨 Hằng số lỗi
Giúp các nhà phát triển gỡ lỗi một cách rõ ràng.
-ENotOneTimeWitness
: Nhân chứng một lần không hợp lệ
-ETooPermissive
: Chính sách nâng cấp quá khoan dung
-EInvalidPackage
: Gói cung cấp không hợp lệ
🔒 Hằng số chiến lược nâng cấp
Kiểm soát cách các gói có thể phát triển:
-COMPATIBLE
: Nâng cấp tương thích ngược
-ADDITIVE
: Thêm các tính năng mới, nhưng không thay đổi/xóa các tính năng hiện có
-DEP_ONLY
: Chỉ được phép thay đổi phụ thuộc
Các hằng số này thực thinâng cấp an toàn và có kiểm soát.
🧱 Định nghĩa cấu trúc
Publisher
-địa chỉ gói: Nhận dạng duy nhất nhà xuất bản -** tên mô-đun**: Không gian tên mô-đun của nhà xuất bản
UpgradeCap
-ID gói: Gói mục tiêu -** phiên bản**: Phiên bản hiện tại -chính sách: Áp dụng chính sách nâng cấp
UpgradeTicket
-upgrade_cap_id: Liên kết đến UpgradeCap điều khiển -package_id: Gói mục tiêu -chính sách: Chính sách nâng cấp được sử dụng -digest: tóm tắt Bytecode (vectơ byte)
UpgradeReceipt
-upgrade_cap_id: Nhận dạng bộ điều khiển -package_id: Gói nâng cấp
🧠 Định nghĩa chức năng cốt lõi
claim
fun claim(otw: &OneTimeWitness) -> Publisher;
Yêu cầu nhận dạng nhà xuất bản bằng cách sử dụng nhân chứng một lần (OTW). Đảm bảo tính độc đáo và tin tưởng.
claim_and_keep
fun claim_and_keep(otw: &OneTimeWitness) -> Publisher;
Tương tự nhưclaim
, nhưng gửi đối tượng Publisher đến tài khoản của người gọi.
burn_publisher
fun burn_publisher(publisher: &mut Publisher);
Phá hủy danh tính nhà xuất bản và tất cả các đặc quyền liên quan.
authorize_upgrade
fun authorize_upgrade(cap: &UpgradeCap, package_id: &PackageID, policy: u8, digest: &vector<u8>) -> UpgradeTicket {
assert!(cap.package_id == *package_id, EInvalidPackage);
assert!(cap.policy <= policy, ETooPermissive);
UpgradeTicket {
upgrade_cap_id: cap.id(),
package_id: *package_id,
policy: policy,
digest: digest.clone()
}
}
Xác thực:
- Điều đó
UpgradeCap
phù hợp vớipackage_id
- Chính sách này** không cho phép hơn**hơn mức cho phép
Sau đó trả lại một chữ ký
UpgradeTicket
.
upgrade_package
fun upgrade_package(ticket: &UpgradeTicket, data: &vector<u8>) -> UpgradeReceipt {
// Upgrade logic
}
- Xác minh
UpgradeTicket
data
- Thay thế mã gói hiện tại bằng bytecode mới () - Trả về một
UpgradeReceipt
bằng chứng về việc nâng cấp thành công
restrict
fun restrict(cap: &mut UpgradeCap, policy: u8) {
assert!(cap.policy < policy, ETooPermissive);
cap.policy = policy;
}
Được sử dụng đóthắt chặt quyền nâng cấp. Không thể hạ cấp xuống chính sáchcho phép hơn.
🛡️ Tính năng bảo mật & kiểm toán
sui::package
được thiết kế với mục tiêubảo mật và khả năng kiểm tra:
-Nhân chứng một lần (OTW): Ngăn chặn mạo danh trong việc xuất bản -** Hằng số chính sách nâng cấp**: Ngăn chặn các nâng cấp trái phép hoặc phá vỡ -** Xác định**: Bảo vệ tích hợp để ngăn chặn việc lạm dụng hoặc logic bất ngờ
🧪 Hỗ trợ thử nghiệm & mô phỏng
Mô-đun bao gồmchức năng chỉ thử nghiệmđược bảo vệ cho môi trường phát v/kiểm tra:
-TestOnly
: Đánh dấu logic chỉ kiểm tra
-publish
: Mô phỏng xuất bản trong các bài kiểm tra
-upgrade
: Mô phỏng nâng cấp trong các thử nghiệm
✅ Tóm tắt
M sui::package
ô-đun cung cấp cho các nhà phát triển Move một hệ thốngmạnh mẽ, có cấu trúc và an toànđể:
- Xuất bản các gói
- Ủy quyền và thực hiện nâng cấp
- Quản lý khả năng nâng cấp và chính sách
Nó đảm bảoniềm tin, tính linh hợpvà** khả năng bảo trì**trong việc phát triển hợp đồng thông minh trên Sui.
Với các mô-đun như
sui::package
, ngôn ngữ Move tiếp tục thể hiện sức mạnh của nó trong** thiết kế mô-đun,** kiến trúc ưu tiên bảo mậtvàcông thái học của nhà phát triển**- mở đường cho các hệ thống Web3 an toàn, có thể mở rộng.
- Sui
- Architecture
Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.
Kiếm phần của bạn từ 1000 Sui
Tích lũy điểm danh tiếng và nhận phần thưởng khi giúp cộng đồng Sui phát triển.

- ... SUIMeaning.Sui+22
- ... SUI0xduckmove+17
- ... SUIMoonBags+11
- ... SUIHaGiang+10
- ... SUI
- ... SUIAliabee+5
- ... SUIBekky+5
- Tại sao BCS yêu cầu thứ tự trường chính xác để khử chuỗi khi cấu trúc Move có các trường được đặt tên?53
- Nhiều lỗi xác minh nguồn” trong các ấn phẩm về mô-đun Sui Move - Giải quyết lỗi tự động43
- Giao dịch Sui thất bại: Đối tượng được dành riêng cho giao dịch khác25
- Làm thế nào để các ràng buộc về khả năng tương tác với các trường động trong các bộ sưu tập không đồng nhất?05