Rust hợp đồng thông minh nâng cấp thực tiễn tốt nhất: Học từ trường hợp hợp đồng NEAR

Hướng dẫn nâng cấp hợp đồng thông minh Rust

Hợp đồng thông minh, như một loại chương trình, khó tránh khỏi có khuyết điểm. Ngay cả khi đã trải qua nhiều thử nghiệm và kiểm toán, vẫn có thể tồn tại lỗ hổng. Một khi bị kẻ tấn công lợi dụng, có thể gây ra tổn thất tài sản của người dùng, hậu quả rất nghiêm trọng. Do đó, khả năng nâng cấp của hợp đồng là rất cần thiết, chủ yếu để sửa lỗi và thêm tính năng mới. Bài viết này sẽ giới thiệu cách nâng cấp hợp đồng Rust.

Phương pháp nâng cấp hợp đồng NEAR

Lấy dự án StatusMessage làm ví dụ, giới thiệu các phương pháp nâng cấp thường dùng của hợp đồng NEAR.

1. Cấu trúc dữ liệu hợp đồng chưa được sửa đổi

Nếu chỉ sửa đổi logic hợp đồng, không liên quan đến thay đổi cấu trúc dữ liệu, có thể trực tiếp sử dụng near deploy để triển khai mã mới:

bash gần triển khai
--accountId status_message.example.testnet \ --wasmFile target/wasm32-unknown-unknown/release/status_message.wasm

Dữ liệu hợp đồng gốc có thể được đọc bình thường.

2. Sửa đổi cấu trúc dữ liệu hợp đồng

Nếu thay đổi cấu trúc dữ liệu của hợp đồng, việc triển khai lại trực tiếp sẽ dẫn đến việc giải mã trạng thái thất bại. Lúc này cần sử dụng phương thức migrate để nâng cấp:

gỉ #[private] #[init(ignore_state)] Self { let old_state: OldStatusMessage = env::state_read().expect("failed"); Tự { new_field: LookupMap::new(b"n".to_vec)((, old_field: old_state.old_field, } }

Gọi phương thức migrate khi triển khai:

bash
gần triển khai
--wasmFile target/wasm32-unknown-unknown/release/status_message.wasm
--initFunction "migrate"
--initArgs "{}"
--accountId status_message.example.testnet

Điều này có thể di chuyển trạng thái cũ sang hợp đồng mới.

![])https://img-cdn.gateio.im/webp-social/moments-73f5e5195fa71f1f25f5d35ba1e8b8ec.webp)

Đề xuất an toàn nâng cấp hợp đồng

  1. Thêm quyền kiểm soát vào hàm nâng cấp, chỉ cho phép owner gọi.
  2. Đặt owner thành DAO, quản lý thông qua đề xuất và bỏ phiếu
  3. Thêm hàm di chuyển vào #[init(ignore_state)]
  4. Sau khi di chuyển xong, xóa hàm di chuyển
  5. Cấu trúc dữ liệu mới được khởi tạo trong quá trình di chuyển

Nâng cấp hợp lý có thể giúp hợp đồng duy trì tính an toàn và khả năng mở rộng, là một bước quan trọng trong phát triển hợp đồng thông minh.

Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 3
  • Chia sẻ
Bình luận
0/400
PumpBeforeRugvip
· 16giờ trước
Phòng ngừa các lỗ hổng cơ bản còn chưa làm tốt, thì còn chơi gì với việc chạy nude.
Xem bản gốcTrả lời0
DegenWhisperervip
· 16giờ trước
Không hổ danh là rust, tuyệt vời
Xem bản gốcTrả lời0
WalletWhisperervip
· 16giờ trước
Có một hố mới đến rồi, trông có vẻ thú vị.
Xem bản gốcTrả lời0
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)