ممارسات أمان العقود الذكية Rust: رؤية الوظائف والتحكم في الوصول المتميز

Rust العقود الذكية养成日记(7)合约安全之计算精度

ستتناول هذه المقالة التحكم في الأذونات في العقود الذكية بلغة Rust من منظورين:

  1. رؤية الوصول / استدعاء طرق العقود
  2. التحكم في الوصول إلى وظائف الامتياز / تقسيم المسؤوليات

1. رؤية دالة العقد

تعيين رؤية دالة العقد بشكل معقول مهم جداً لحماية الأجزاء الأساسية من الوصول أو التلاعب غير المقصود. كمثال على ذلك، حدث أمان في بورصة Bancor Network في يونيو 2020، حيث أدى تعيين دالة التحويل الأساسية كـ public عن طريق الخطأ إلى تعرض أصول المستخدمين للخطر.

في العقود الذكية بلغة Rust، تتنوع رؤية الدوال بشكل رئيسي إلى الأنواع التالية:

  • pub fn: دالة عامة، يمكن استدعاؤها من خارج العقد
  • fn: لا يمكن استدعاؤه مباشرة من الخارج، يمكن استدعاؤه فقط داخل العقد
  • pub(crate) fn: يتم تقييد الاستدعاء ضمن نطاق crate

طريقة أخرى لتعيين طريقة internal هي تعريف كتلة كود منفصلة للـ impl Contract، دون استخدام تعديل #[near_bindgen].

يجب تعيين دالة الاسترجاع لتكون عامة، ولكن تأكد من أنه يمكن استدعاؤها فقط من قبل العقد نفسه. يمكن استخدام ماكرو #[private] لتحقيق هذه الوظيفة.

يجب ملاحظة أن Rust بشكل افتراضي يعتبر كل شيء خاصًا، باستثناء العناصر الموجودة في الصفات والم enum.

!

2. التحكم في الوصول إلى وظائف الامتياز

بالإضافة إلى رؤية الوظائف، تحتاج أيضًا إلى إنشاء آلية كاملة لقائمة التحكم في الوصول من الناحية الدلالية. مشابه لـ onlyOwner في Solidity، يمكن استدعاء بعض الوظائف المميزة فقط من قبل مالك العقد.

في العقود الذكية Rust، يمكن تنفيذ Trait مخصص للتحكم في الوصول إلى وظائف الامتياز:

صدأ سمة الحانة مملوكة { الجبهة الوطنية assert_owner(&self) { assert_eq!(env::p redecessor_account_id(), self.get_ owner()). } fn get_owner(&self) -> AccountId; fn set_owner( & mut self ، المالك: AccountId); }

بناءً على ذلك، يمكن تحقيق آلية قائمة بيضاء أكثر تعقيدًا، وتنفيذ تحكم وصول دقيق حسب المجموعات.

!

3. طرق التحكم في الوصول الأخرى

هناك بعض طرق التحكم في الوصول الأخرى ، مثل:

  • التحكم في توقيت استدعاء العقود
  • آلية استدعاء التوقيع المتعدد لوظائف العقود
  • الحوكمة (DAO) التنفيذ

سيتم تقديم هذه المحتويات بالتفصيل في المقالات اللاحقة.

!

!

!

!

!

!

!

!

PUBLIC0.28%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
0/400
لا توجد تعليقات
  • تثبيت