Kiểm soát quyền trong hợp đồng thông minh Rust: Tính khả thi của hàm hợp đồng và quyền truy cập đặc quyền

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

Quyền kiểm soát trong hợp đồng thông minh Rust

Bài viết này sẽ giới thiệu về kiểm soát quyền hạn trong hợp đồng thông minh Rust từ hai khía cạnh:

  1. Độ khả dụng của phương thức hợp đồng
  2. Kiểm soát truy cập của các hàm đặc quyền

1. Độ khả kiến của hàm hợp đồng

Trong hợp đồng thông minh Rust, việc kiểm soát tính khả dụng của hàm là rất quan trọng. Lấy ví dụ về sự cố an ninh của sàn giao dịch Bancor Network vào tháng 6 năm 2020, do nhầm lẫn đặt hàm chuyển khoản quan trọng thành public, dẫn đến việc tài sản của người dùng đối mặt với rủi ro.

Trong hợp đồng thông minh Rust, có các loại khả năng truy cập hàm sau đây:

  • pub fn: hàm công khai, có thể được gọi từ bên ngoài hợp đồng
  • fn: chỉ có thể gọi bên trong hợp đồng
  • pub(crate) fn: chỉ có thể gọi từ bên trong crate

Cũng có thể thực hiện các hàm internal bằng cách định nghĩa phương thức trong khối impl không được đánh dấu bằng #[near_bindgen].

Đối với hàm callback, cần được đặt là public nhưng đồng thời phải đảm bảo chỉ có thể được gọi bởi chính hợp đồng. Có thể sử dụng macro #[private] để thực hiện điều này.

Cần lưu ý rằng, trong Rust, mặc định tất cả nội dung đều là private, điều này khác với giá trị public mặc định của một số phiên bản Solidity cũ.

2. Kiểm soát truy cập của chức năng đặc quyền

Ngoài khả năng hiển thị của hàm, còn cần thiết lập cơ chế danh sách trắng truy cập đầy đủ từ góc độ ngữ nghĩa.

Tương tự như bộ sửa đổi onlyOwner trong Solidity, chúng ta có thể triển khai Trait tùy chỉnh trong Rust:

gỉ pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(&mut self, owner: AccountId); }

Bằng cách này, chỉ có owner mới có thể gọi một số hàm đặc quyền.

Dựa trên nguyên lý này, có thể thiết lập danh sách trắng phức tạp hơn để thực hiện kiểm soát truy cập nhóm tinh vi.

Nhiều phương pháp kiểm soát truy cập hơn như kiểm soát thời điểm gọi, cơ chế đa chữ ký, v.v., sẽ được giới thiệu trong các bài viết sau.

GET7.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
  • 5
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
Rugman_Walkingvip
· 15giờ trước
Lại là cái bẫy cũ của Bancor, suýt nữa thì mất luôn cả quần.
Xem bản gốcTrả lời0
TokenToastervip
· 08-07 12:36
bancor thật sự là một ví dụ ngốc nghếch
Xem bản gốcTrả lời0
MevTearsvip
· 08-06 06:28
bancor cái đó mình đã thấy, thật sự là đồ tệ
Xem bản gốcTrả lời0
OnlyOnMainnetvip
· 08-06 06:26
Hú hí, chuyện bancor đến giờ vẫn làm tôi sợ hãi.
Xem bản gốcTrả lời0
0xLuckboxvip
· 08-06 06:18
Tại sao luôn có người nhầm lẫn cài đặt quyền truy cập?
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)