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

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

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

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

Khả năng nhìn thấy 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à vô cùng quan trọng. Lấy ví dụ về sự kiện bảo mật xảy ra tại sàn giao dịch Bancor Network vào năm 2020, việc thiết lập 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 của NEAR, khả năng truy cập của hàm chủ yếu có các loại 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 trong crate

Ngoài ra, việc định nghĩa hàm trong khối impl không được đánh dấu bằng #[near_bindgen] cũng có thể được đặt thành hàm nội bộ.

Đối với hàm callback, cần phải đặt thành public nhưng đồng thời phải giới hạn chỉ có hợp đồng tự gọi. 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à riêng tư, ngoại trừ các mục trong pub Trait và pub Enum.

Kiểm soát truy cập của hàm đặc quyền

Ngoài khả năng hiển thị của hàm, cần thiết lập một cơ chế kiểm soát truy cập hoàn chỉnh từ cấp độ ngữ nghĩa. Tương tự như bộ sửa đổi onlyOwner trong Solidity, chúng ta có thể định nghĩa một trait tương tự 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); }

Sử dụng trait như vậy có thể thực hiện kiểm soát truy cập cho các hàm đặc quyền, đảm bảo chỉ có chủ sở hữu hợp đồng mới có thể gọi những hàm này.

Dựa trên nguyên lý này, chúng ta có thể thực hiện kiểm soát truy cập tinh vi cho nhiều người dùng trong danh sách trắng hoặc nhiều nhóm danh sách trắng bằng cách tùy chỉnh các trait phức tạp hơn.

Ngoài ra, còn có thể thực hiện kiểm soát thời điểm gọi, cơ chế ký đa chữ ký và nhiều phương pháp kiểm soát truy cập khác, để đáp ứng nhu cầu an toàn trong các tình huống khác nhau.

GET-0.09%
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
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
WalletManagervip
· 08-01 21:48
Quản lý quyền phải chặt chẽ hơn.
Xem bản gốcTrả lời0
HashBrowniesvip
· 08-01 05:29
Kiểm soát quyền thật sự tuyệt vời.
Xem bản gốcTrả lời0
GasFeeCriervip
· 07-30 19:25
Cần cẩn thận cấu hình quyền truy cập
Xem bản gốcTrả lời0
TeaTimeTradervip
· 07-30 19:21
Quản lý quyền thật sự khó khăn.
Xem bản gốcTrả lời0
CoinBasedThinkingvip
· 07-30 19:07
Có quá nhiều lỗ hổng bảo mật.
Xem bản gốcTrả lời0
NotFinancialAdvicevip
· 07-30 18:57
Nội dung thực sự rất hữu ích
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)