Phân tích chi tiết về tính khả thi và kiểm soát quyền hạn của hàm trong hợp đồng thông minh Rust

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

Rust hợp đồng thông minh养成日记(7)合约安全之计算精度

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 độ:

  • Độ khả thi của việc truy cập/gọi phương thức hợp đồng
  • 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. Khả năng hiển thị hàm hợp đồng

Việc kiểm soát khả năng nhìn thấy của các hàm trong hợp đồng là rất quan trọng để bảo vệ các phần chính không bị thao tác sai. 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, do vô tình đặt hàm chuyển tiền quan trọng thành public, đã khiến tài sản của người dùng trị giá 590.000 đô la gặp rủi ro.

Trong hợp đồng thông minh Rust, tính khả dụng của hàm chủ yếu có:

  • pub fn: hàm công khai, có thể được gọi từ bên ngoài hợp đồng
  • fn: mặc định là private, chỉ có thể được gọi 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 độc lập mà không thêm sửa đổi #[near_bindgen].

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

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 của các hàm đặc quyền

Ngoài khả năng hiển thị của hàm, cần phải thiết lập cơ chế danh sách trắng kiểm soát truy cập hoàn chỉnh từ khía cạnh ngữ nghĩa. Tương tự như hợp đồng Ownable của Solidity, một số hàm đặc quyền chỉ có thể được gọi bởi chủ sở hữu.

Trong hợp đồng Rust, có thể thực hiện Trait tùy chỉnh:

rỉ sét 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ể thực hiện kiểm soát truy cập đối với các chức năng đặc quyền. Dựa trên điều này, cũng có thể thiết lập danh sách trắng đa người dùng hoặc nhiều nhóm danh sách trắng.

3. Nhiều phương pháp kiểm soát truy cập hơn

Các phương pháp kiểm soát truy cập khác bao gồm:

  • Kiểm soát thời điểm gọi hợp đồng
  • Cơ chế gọi đa chữ ký của hàm hợp đồng
  • Thực hiện quản trị DAO

Những nội dung này sẽ được giới thiệu chi tiết trong các bài viết tiếp theo.

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
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
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)