Bài viết
Chia sẻ kiến thức của bạn.
Bảo vệ tương lai các mô-đun di chuyển mà không phá vỡ khả năng tương thích
_Vì các mô-đun Move không thể thay đổi sau khi xuất bản, lập kế hoạch nâng cấp là một phần quan trọng của quá trình phát triển. Tôi đã thấy các mẫu trong đó các nhà phát triển giữ một “đối tượng chính” trỏ đến phiên bản logic hiện tại, nhưng tôi đang tự hỏi chiến lược nào hoạt động tốt nhất trong thực tế. _
- Move CLI
- Move
- Move Module
- Move Script
Câu trả lời
1Để bảo vệ các mô-đun Move của bạn trong tương lai trên Sui mà không phá vỡ khả năng tương thích, bạn cần lên kế hoạch nâng cấp cẩn thận vì các mô-đun đã xuất bản là bất biến, nhưng hệ thống nâng cấp gói của Sui cho phép bạn tung ra các phiên bản mới duy trì khả năng tương thích trong khi thêm hoặc tinh chỉnh chức năng. Một trong những chiến lược tốt nhất là sử dụng mẫu “đối tượng chính”, trong đó một đối tượng trung tâm (như đối tượng Version hoặc Config) lưu trữ phiên bản logic hiện tại và con trỏ đến các mô-đun hoạt động, cho phép bạn chuyển hướng các cuộc gọi đến logic cập nhật mà không thay đổi các giao diện hiện có. Bạn có thể xác định đối tượng này trong mô-đun ban đầu của mình với trường phiên bản và hàm nâng cấp, như public fun update_version (config: & mut Config, new_package: address), đảm bảo nó chỉ có thể gọi được bởi các bên được ủy quyền (ví dụ: sử dụng UpgradeCap). Điều này giữ cho API công khai của ứng dụng của bạn ổn định, vì vậy người dùng hoặc các hợp đồng khác không bị phá vỡ khi bạn xuất bản gói mới với logic cập nhật. Một cách tiếp cận khác là thiết kế các mô-đun với các thay đổi theo mô-đun, bổ sung — giữ các chữ ký chức năng công khai và cấu trúc dữ liệu không thay đổi trong các phiên bản mới, chỉ thêm các chức năng hoặc trường mới và sử dụng kiểm tra khả năng tương thích (sui upgrade --verify-) để nắm bắt các vấn đề trước khi triển khai. Đối với các đối tượng được chia sẻ, bao gồm thẻ phiên bản và logic di chuyển để xử lý các bản cập nhật dữ liệu một cách trơn tru, như chuyển số dư sang cấu trúc mới. Trong thực tế, mô hình đối tượng chính tỏa sáng cho các ứng dụng phức tạp như giao thức DeFi, như đã thấy trong các dự án như Cetus, nơi nó đơn giản hóa việc hoán đổi logic mà không làm gián đoạn người dùng. Hãy thận trọng với các rủi ro bảo mật — hạn chế quyền nâng cấp chặt chẽ, lý tưởng nhất là với multisig hoặc DAO, để ngăn chặn các thay đổi độc hại và thử nghiệm các nâng cấp trên mạng thử nghiệm của Sui để mô phỏng các tác động trong thế giới thực. Tránh phụ thuộc quá nhiều vào các đối tượng được chia sẻ, vì chúng có thể làm phức tạp quá trình di chuyển do các yêu cầu đồng thuận.
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
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.
