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

robot
إنشاء الملخص قيد التقدم

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

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

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

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

تُعتبر السيطرة على رؤية وظائف العقود الذكية مهمة لحماية الأجزاء الحساسة من التعرض للعمليات الخاطئة. كمثال على ذلك، حدث أمني في بورصة Bancor Network في 18 يونيو 2020، حيث أدى تعيين وظيفة التحويل الأساسية كـ public عن طريق الخطأ إلى تعريض أصول المستخدمين بقيمة 590,000 دولار للخطر.

!

في العقود الذكية بلغة Rust، تتضمن رؤية الدوال الرئيسية ما يلي:

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

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

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

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

!

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

بالإضافة إلى رؤية الوظائف، يجب أيضًا إنشاء آلية قائمة بيضاء كاملة للتحكم في الوصول من حيث الدلالات. مثل عقود 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

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

!

!

!

!

!

!

!

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