Quản lý quyền truy cập và khả năng hiển thị của hàm trong hợp đồng thông minh Rust

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

Nhật ký phát triển hợp đồng thông minh Rust (7) Kiểm soát quyền hạn trong an toàn hợp đồng

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 truy cập/gọi
  2. Kiểm soát truy cập của chức năng đặc quyền/Phân chia quyền và trách nhiệm

1. Tính khả dụng của hàm hợp đồng

Việc thiết lập khả năng truy cập của các hàm hợp đồng một cách hợp lý là rất quan trọng để bảo vệ các phần quan trọng. Lấy ví dụ từ sự kiện 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 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, khả năng hiển thị của hàm cũng quan trọng. Macro #[near_bindgen] trong NEAR SDK định nghĩa các thuộc tính hiển thị như sau:

  • pub fn: hàm công khai, có thể 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

Cũng có thể định nghĩa phương thức internal thông qua khối impl Contract không được đánh dấu #[near_bindgen].

Đối với hàm gọi lại, cần được thiết lập là public nhưng chỉ cho phép hợp đồng tự gọi. Có thể sử dụng macro #[private] để thực hiện chức năng này.

Cần lưu ý rằng tính khả dụng mặc định trong Rust là private, nhưng các mục trong trait và enum thì ngoại lệ.

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

Ngoài khả năng nhìn thấy của hàm, cũng cần thiết lập một cơ chế danh sách trắng kiểm soát truy cập hoàn chỉnh. Tương tự như hợp đồng Ownable trong Solidity, một số hàm có quyền đặc quyền chỉ có thể được gọi bởi owner.

Trong hợp đồng Rust, có thể triển khai trait Ownable như sau:

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

Dựa trên điều này, có thể thực hiện danh sách trắng cho owner. Cũng có thể thiết lập danh sách trắng nhiều người dùng hoặc kiểm soát truy cập theo nhóm thông qua các thiết lập trait phức tạp hơn.

Xem bản gốc
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Phần thưởng
  • 4
  • Chia sẻ
Bình luận
0/400
WhaleWatchervip
· 07-13 07:29
Hãy nói về Ownable trước đã.
Xem bản gốcTrả lời0
GateUser-e51e87c7vip
· 07-13 07:23
Có tay là được, đơn giản vậy thôi.
Xem bản gốcTrả lời0
DecentralizeMevip
· 07-13 07:22
Ô ô logic cơ sở
Xem bản gốcTrả lời0
ChainSpyvip
· 07-13 07:21
Kiểm soát truy cập phức tạp như vậy không bằng công khai hoàn toàn.
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)