Giải thích chi tiết về nâng cấp hợp đồng thông minh Rust: Hướng dẫn cập nhật an toàn nền tảng NEAR

robot
Đang tạo bản tóm tắt

Phương pháp nâng cấp hợp đồng thông minh Rust chi tiết

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

Sự cần thiết của việc nâng cấp hợp đồng

Việc sửa lỗi và thêm các tính năng mới cho hợp đồng thông minh thường cần được thực hiện thông qua việc nâng cấp hợp đồng. Nguyên nhân chính là:

  1. Sửa lỗi bảo mật
  2. Thêm tính năng mới
  3. Tối ưu hiệu suất hợp đồng thông minh
  4. Thích ứng với nhu cầu kinh doanh mới

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 lệnh near deploy để triển khai mã mới. Dữ liệu nguyên gốc vẫn có thể truy cập bình thường.

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

Nếu sửa đổ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 cấu trúc dữ liệu mới không khớp với trạng thái cũ, gây ra lỗi giải tuần tự.

3. Sử dụng phương pháp Migrate để nâng cấp

NEAR cung cấp phương pháp Migrate để giúp nâng cấp hợp đồng. Thêm phương thức migrate vào hợp đồng mới:

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

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

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

Cách này có thể thành công trong việc chuyển dữ liệu cũ sang cấu trúc hợp đồng mới.

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

Các yếu tố an toàn trong việc nâng cấp hợp đồng

  1. Kiểm soát quyền - Chỉ cho phép nhà phát triển hoặc DAO nâng cấp hợp đồng

  2. Khuyến nghị đặt owner của hợp đồng là DAO, quản lý thông qua đề xuất và bỏ phiếu

  3. Hàm di chuyển sử dụng #[init(ignore_state)]

  4. Xóa hàm di chuyển sau khi di chuyển hoàn tất

  5. Cấu trúc dữ liệu mới được khởi tạo khi di chuyển

Việc nâng cấp hợp đồng là một quá trình phức tạp, cần phải cẩn thận với từng chi tiết, đảm bảo an toàn dữ liệu và tính liên tục của doanh nghiệp.

NEAR1.19%
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
  • 4
  • Chia sẻ
Bình luận
0/400
Anon4461vip
· 07-14 08:32
Ai chịu nổi điều này~
Xem bản gốcTrả lời0
rekt_but_not_brokevip
· 07-14 08:22
near cũng đã nâng cấp rồi hả?
Xem bản gốcTrả lời0
LightningPacketLossvip
· 07-14 08:20
Đã làm Rust được hai năm rồi lại đắm chìm vào Web3.
Xem bản gốcTrả lời0
MidnightMEVeatervip
· 07-14 08:18
Đầu máy cũng không dám chơi đùa với mọi người, nhà phát triển có quay lại không?
Xem bản gốcTrả lời0
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)