Bài viết này sẽ giới thiệu về kiểm soát quyền truy cập trong hợp đồng thông minh Rust từ hai khía cạnh:
Độ khả thi của phương pháp hợp đồng
Kiểm soát quyền truy cập của chức năng đặc quyền
1. Độ khả thi của hàm hợp đồng
Thiết lập đúng khả năng hiển thị các chức năng hợp đồng là điều cần thiết để giữ an toàn cho hợp đồng của bạn. Lấy sự cố sàn giao dịch Bancor Network vào tháng 6 năm 2020 làm ví dụ, tài sản của người dùng gặp rủi ro do chức năng chuyển chìa khóa bị đặt nhầm ở chế độ công khai.
Trong hợp đồng thông minh Rust, có một số loại khả năng hiển thị chức năng chính:
Pub FN: Chức năng công khai, có thể được gọi từ bên ngoài hợp đồng
fn: hàm internal mặc định, chỉ có thể được gọi bên trong hợp đồng
pub(crate) fn: Hạn chế cuộc gọi từ bên trong thùng
Ngoài ra, các phương thức được định nghĩa trong khối impl không được sửa đổi bởi #[near_bindgen] cũng là internal.
Đối với hàm callback, cần được thiết lập là public nhưng đồng thời phải kiểm tra người gọi, có thể sử dụng macro #[private] để thực hiện.
Cần lưu ý rằng, Rust mặc định tất cả mọi thứ đều là private, ngoại trừ các mục trong pub trait và pub enum.
2. Kiểm soát truy cập cho các chức năng đặc quyền
Ngoài việc thiết lập khả năng hiển thị của hàm, còn cần xây dựng cơ chế danh sách trắng kiểm soát truy cập. Tương tự như bộ sửa đổi onlyOwner trong Solidity, có thể định nghĩa các hàm đặc quyền chỉ có owner mới có thể gọi.
Trong Rust, có thể thực hiện thông qua trait tùy chỉnh:
Điều này có thể đạt được việc kiểm soát quyền sở hữu cơ bản. Nó có thể được mở rộng thêm thành danh sách trắng nhiều người dùng hoặc danh sách trắng nhiều nhóm, để đạt được kiểm soát truy cập tinh vi hơn.
!
!
!
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.
17 thích
Phần thưởng
17
6
Chia sẻ
Bình luận
0/400
ser_we_are_ngmi
· 2giờ trước
Khó hiểu quá, mình đi đây.
Xem bản gốcTrả lời0
NFT_Therapy
· 07-17 01:06
Cần phải có kiểm soát quyền! Nếu không hợp đồng sẽ bị cắt xén thì coi như xong.
Xem bản gốcTrả lời0
PonziDetector
· 07-17 01:05
Rust yyds cứng nhất
Xem bản gốcTrả lời0
MetaMuskRat
· 07-17 01:02
Lại một người quản lý quyền hạn, chạy thôi chạy thôi
Xem bản gốcTrả lời0
ser_we_are_early
· 07-17 00:46
Đơn giản và thô bạo, chỉ cần thêm một chút kiểm soát quyền.
Xem bản gốcTrả lời0
MemeEchoer
· 07-17 00:40
Nhìn là thấy buồn ngủ, có ai thật sự học được không?
An toàn hợp đồng thông minh Rust: Giải thích chi tiết về kiểm soát truy cập và khả năng hiển thị hàm
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 truy cập trong hợp đồng thông minh Rust từ hai khía cạnh:
1. Độ khả thi của hàm hợp đồng
Thiết lập đúng khả năng hiển thị các chức năng hợp đồng là điều cần thiết để giữ an toàn cho hợp đồng của bạn. Lấy sự cố sàn giao dịch Bancor Network vào tháng 6 năm 2020 làm ví dụ, tài sản của người dùng gặp rủi ro do chức năng chuyển chìa khóa bị đặt nhầm ở chế độ công khai.
Trong hợp đồng thông minh Rust, có một số loại khả năng hiển thị chức năng chính:
Ngoài ra, các phương thức được định nghĩa trong khối impl không được sửa đổi bởi #[near_bindgen] cũng là internal.
Đối với hàm callback, cần được thiết lập là public nhưng đồng thời phải kiểm tra người gọi, có thể sử dụng macro #[private] để thực hiện.
Cần lưu ý rằng, Rust mặc định tất cả mọi thứ đều là private, ngoại trừ các mục trong pub trait và pub enum.
2. Kiểm soát truy cập cho các chức năng đặc quyền
Ngoài việc thiết lập khả năng hiển thị của hàm, còn cần xây dựng cơ chế danh sách trắng kiểm soát truy cập. Tương tự như bộ sửa đổi onlyOwner trong Solidity, có thể định nghĩa các hàm đặc quyền chỉ có owner mới có thể gọi.
Trong Rust, có thể thực hiện thông qua trait tùy chỉnh:
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ể đạt được việc kiểm soát quyền sở hữu cơ bản. Nó có thể được mở rộng thêm thành danh sách trắng nhiều người dùng hoặc danh sách trắng nhiều nhóm, để đạt được kiểm soát truy cập tinh vi hơn.
!
!
!