Giải thích chi tiết về nâng cấp hợp đồng thông minh Rust: Thực tiễn tốt nhất từ Ethereum đến 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 như một loại chương trình, không thể tránh khỏi việc tồn tại các lỗi và lỗ hổng. Ngay cả khi đã trải qua nhiều thử nghiệm và kiểm toán, vấn đề vẫn có thể phát sinh. Một khi lỗ hổng bị kẻ tấn công khai thác, có thể gây ra những hậu quả nghiêm trọng như mất mát tài sản của người dù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.

Cách nâng cấp hợp đồng Ethereum

Hợp đồng thông minh trên Ethereum có tính không thể thay đổi, sau khi triển khai không thể sửa đổi trực tiếp. Thông thường, các cách sau được sử dụng để nâng cấp:

  1. Triển khai hợp đồng mới, sửa đổi địa chỉ hợp đồng trong DApp. Nhược điểm là cần di chuyển dữ liệu trạng thái của hợp đồng cũ.

  2. Kiến trúc tách biệt dữ liệu và logic. Lưu trữ dữ liệu trong hợp đồng trạng thái, logic được thực hiện trong một hợp đồng khác. Khi nâng cấp chỉ cần cập nhật hợp đồng logic.

  3. Sử dụng hợp đồng thông minh đại lý. Hợp đồng thông minh đại lý lưu trữ dữ liệu và gọi hợp đồng logic qua deleGatecall, khi nâng cấp chỉ cần cập nhật địa chỉ hợp đồng logic.

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 phương pháp nâng cấp 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, bạn có thể sử dụng lệnh near deploy để triển khai mã mới. Dữ liệu gốc sẽ được giữ lại.

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

Nếu thay đổi cấu trúc dữ liệu, việc triển khai lại trực tiếp sẽ dẫn đến việc cấu trúc dữ liệu cũ và mới không khớp, không thể đọc dữ liệu bình thường.

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:

  1. Thêm phương thức migrate vào hợp đồng mới
  2. Gọi phương thức migrate để thực hiện di chuyển dữ liệu khi triển khai.
  3. Sau khi di chuyển hoàn tất, có thể sử dụng chức năng hợp đồng thông minh mới bình thường.

An toàn trong việc nâng cấp hợp đồng

  1. Kiểm soát quyền - Hàm nâng cấp phải là hàm only owner
  2. Khuyến nghị đặt owner thành DAO, tránh rủi ro tập trung.
  3. Sử dụng #[init(ignore_state)] để đảm bảo không tải trạng thái trước khi thực hiện di chuyển.
  4. Xóa hàm di chuyển sau khi di chuyển, tránh gọi lại nhiều lần
  5. Cấu trúc dữ liệu mới được khởi tạo khi di chuyển

Bằng cách thiết kế hợp lý kế hoạch nâng cấp, có thể đạt được khả năng nâng cấp của hợp đồng dưới điều kiện đảm bảo an toàn, tăng cường khả năng bảo trì lâu dài của dự án.

ETH2.88%
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
  • 6
  • Chia sẻ
Bình luận
0/400
FlatlineTradervip
· 1giờ trước
Lỗ hổng chính là ví tiền...
Xem bản gốcTrả lời0
Deconstructionistvip
· 8giờ trước
Đề nghị thêm tính năng tải lại nóng
Xem bản gốcTrả lời0
rekt_but_not_brokevip
· 8giờ trước
Hợp đồng thông minh hóa ra lại lừa đảo như vậy à
Xem bản gốcTrả lời0
LiquidityWizardvip
· 8giờ trước
nói một cách lý thuyết, các mẫu proxy chỉ là những biến đổi trạng thái được phủ đường với 73,4% chi phí gas cao hơn... thật không thể tin được
Xem bản gốcTrả lời0
SchrödingersNodevip
· 8giờ trước
Lại là thao tác cũ sửa địa chỉ hợp đồng
Xem bản gốcTrả lời0
NestedFoxvip
· 9giờ trước
rust chỗ này quá hại.
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)