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à quản lý quyền

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) An toàn hợp đồng và kiểm soát truy cập

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 pháp hợp đồng
  2. Kiểm soát truy cập của hàm đặc quyền

1. Tính khả kiến của hàm hợp đồng

Trong hợp đồng thông minh Rust, việc kiểm soát độ khả dụng của hàm là rất quan trọng. SDK NEAR định nghĩa các thuộc tính khả dụng sau thông qua macro #[near_bindgen]:

  • pub fn: hàm công khai, có thể được gọi từ bên ngoài hợp đồng
  • fn: Hàm nội bộ, chỉ có thể được gọi trong hợp đồng.
  • pub(crate) fn: giới hạn gọi bên trong crate

Ngoài ra, có thể định nghĩa các phương thức nội bộ thông qua khối impl Contract độc lập:

gỉ #[near_bindgen] impl Hợp đồng { pub fn increment(&mut self) { self.internal_increment(); } }

impl Hợp đồng { pub fn internal_increment(&mut self) { self.counter += 1; } }

Đối với hàm callback, cần phải đặt là pub và sử dụng macro #[private] để đảm bảo chỉ có thể được gọi bởi hợp đồng đó.

gỉ #[near_bindgen] impl Hợp đồng { #[private] pub fn resolve_transfer(&mut self) { // Logic gọi lại } }

2. Kiểm soát quyền 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 cần thiết lập cơ chế danh sách trắng kiểm soát truy cập. Có thể tùy chỉnh Trait để thực hiện:

gỉ pub trait Ownable { fn assert_owner(&self) { assert_eq!(env::predecessor_account_id(), self.get_owner()); } AccountId; fn set_owner(\u0026mut self, owner: AccountId); }

Trong hàm đặc quyền, việc gọi assert_owner() có thể giới hạn chỉ owner mới có thể thực hiện:

gỉ impl Hợp đồng { pub fn privileged_function(&mut self) { self.assert_owner(); // Hoạt động đặc quyền } }

Điều này có thể thực hiện cơ chế danh sách trắng cơ bản, và còn có thể mở rộng hơn để thực hiện kiểm soát truy cập phức tạp với nhiều người dùng, nhiều danh sách trắng.

An ninh của hợp đồng cần được xem xét từ nhiều khía cạnh, bao gồm kiểm soát thời điểm gọi, cơ chế đa chữ ký, v.v., sẽ được giới thiệu chi tiết trong các bài viết tiếp theo.

GET6.89%
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
  • 9
  • Chia sẻ
Bình luận
0/400
GasWastervip
· 07-24 14:55
Lại đang nghiên cứu những điều sâu sắc nữa rồi.
Xem bản gốcTrả lời0
rugdoc.ethvip
· 07-24 12:22
Cái này quá cũ kỹ rồi.
Xem bản gốcTrả lời0
GateUser-9ad11037vip
· 07-24 03:37
Có nên bổ sung cơ chế danh sách đen không~
Xem bản gốcTrả lời0
DefiPlaybookvip
· 07-23 10:17
Dữ liệu tổng hợp cho thấy, kiểm soát truy cập vẫn là một trong ba lỗ hổng hợp đồng hàng đầu.
Xem bản gốcTrả lời0
SeeYouInFourYearsvip
· 07-21 20:27
rust là như vậy đó
Xem bản gốcTrả lời0
OnchainDetectivevip
· 07-21 20:27
Quản lý quyền kiểm soát như một hình thức giả mạo, đã đến lúc cần phải kiểm tra cửa hậu rồi.
Xem bản gốcTrả lời0
rekt_but_resilientvip
· 07-21 20:21
Cơ chế an toàn của hợp đồng này thật là nước.
Xem bản gốcTrả lời0
DarkPoolWatchervip
· 07-21 20:13
Viết cũng khá tốt nhưng tôi đã ngủ quên.
Xem bản gốcTrả lời0
MEVSandwichVictimvip
· 07-21 20:11
Đánh dấu trọng điểm rồi nha, lướt
Xem bản gốcTrả lời0
Xem thêm
  • 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)