Rust hợp đồng thông minh quyền kiểm soát: khả năng hiển thị hàm và quản lý 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 trong hợp đồng thông minh Rust từ hai góc độ:

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

1. Khả năng hiển thị hàm hợp đồng

Trong phát triển hợp đồng thông minh, việc thiết lập đúng khả năng truy cập của hàm là rất quan trọng. Lấy ví dụ từ sự kiện an ninh của sàn giao dịch Bancor Network vào ngày 18 tháng 6 năm 2020, việc đặt sai hàm chuyển tiền quan trọng thành public đã dẫn đến rủi ro cho tài sản của người dùng.

Trong hợp đồng thông minh Rust, việc kiểm soát tính khả dụng của hàm cũng rất quan trọng. Macro #[near_bindgen] trong NEAR SDK định nghĩa các loại khả năng tiếp cận sau:

  • 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: Giới hạn gọi bên trong crate

Một cách khác để thiết lập phương thức internal là định nghĩa một khối mã impl Contract riêng biệt, không sử dụng #[near_bindgen] để trang trí.

Đối với hàm callback, cần thiết lập là public nhưng đồng thời hạn chế chỉ có thể được gọi bởi hợp đồng tự thân. 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, ngoại trừ các mục trong pub Trait và pub Enum.

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

Ngoài khả năng hiển thị của hàm, cần phải thiết lập một cơ chế danh sách trắng kiểm soát truy cập đầy đủ. Tương tự như bộ sửa đổi onlyOwner trong Solidity, trong hợp đồng Rust cũng có thể triển khai Trait tùy chỉnh để kiểm soát quyền truy cập vào các hàm đặc quyền:

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); }

Điều này có thể hạn chế chỉ có owner mới có thể gọi một số hàm đặc quyền. Dựa trên nguyên tắc này, có thể thiết lập danh sách trắng và kiểm soát truy cập theo nhóm phức tạp hơn.

3. Các phương pháp kiểm soát truy cập khác

Còn một số phương pháp kiểm soát truy cập khác, như kiểm soát thời điểm gọi hợp đồng, cơ chế gọi đa chữ ký, thực hiện DAO, sẽ được giới thiệu chi tiết trong các bài viết sau.

GET-0.6%
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
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
MetaNomadvip
· 08-04 05:07
rust người mới hỏi cái nào an toàn hơn?
Xem bản gốcTrả lời0
NftPhilanthropistvip
· 08-04 05:02
*thở dài* lại một vụ lùm xùm về bảo mật nữa vì ai đó quên quyền cơ bản... khi nào các nhà phát triển mới học được cách đúc một cách có ý thức smh
Xem bản gốcTrả lời0
BearMarketGardenervip
· 08-04 04:57
Quản lý quyền mà gặp sự cố thì xong rồi.
Xem bản gốcTrả lời0
RuntimeErrorvip
· 08-04 04:45
Kiểm soát quyền không đúng quy định, hãy quỳ xuống để Debug.
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)