ستتناول هذه المقالة جانبين حول التحكم في الصلاحيات في العقود الذكية بلغة Rust:
رؤية طريقة العقد
التحكم في الوصول إلى وظائف الامتياز
1. رؤية دالة العقد
في العقود الذكية بلغة Rust، يعد التحكم في رؤية الوظائف أمرًا مهمًا للغاية. على سبيل المثال، في حادثة الأمان في بورصة Bancor Network في يونيو 2020، أدى تعيين وظيفة التحويل الرئيسية على أنها عامة عن طريق الخطأ إلى تعريض أصول المستخدمين للخطر.
في العقود الذكية Rust، هناك عدة أنواع من رؤية الوظائف:
pub fn: الدالة العامة، يمكن استدعاؤها من خارج العقد
fn: يمكن استدعاؤه فقط داخل العقد
pub(crate) fn: يمكن استدعاؤه فقط داخل crate
يمكن أيضًا تحقيق الدالة internal من خلال تعريف طرق في كتلة impl التي لم يتم تزيينها بـ #[near_bindgen].
بالنسبة لدالة رد الاتصال، يجب تعيينها على public ولكن يجب التأكد من أنه يمكن استدعاؤها فقط بواسطة العقد نفسه. يمكن استخدام ماكرو #[private] لتحقيق ذلك.
يجب ملاحظة أن كل شيء في Rust افتراضياً خاص، وهذا يختلف عن النسخ القديمة من Solidity حيث كان الافتراضي عاماً.
!
2. التحكم في الوصول إلى الدوال المميزة
بالإضافة إلى رؤية الوظائف، تحتاج أيضًا إلى إنشاء آلية قائمة بيضاء كاملة للتحكم في الوصول من الناحية الدلالية.
مثل مُعدل onlyOwner في Solidity، يمكننا تنفيذ Trait مخصص في Rust:
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تحكم الوصول في العقود الذكية في Rust: رؤية وظائف العقد والوصول المميز
التحكم في الصلاحيات في العقود الذكية بلغة Rust
ستتناول هذه المقالة جانبين حول التحكم في الصلاحيات في العقود الذكية بلغة Rust:
1. رؤية دالة العقد
في العقود الذكية بلغة Rust، يعد التحكم في رؤية الوظائف أمرًا مهمًا للغاية. على سبيل المثال، في حادثة الأمان في بورصة Bancor Network في يونيو 2020، أدى تعيين وظيفة التحويل الرئيسية على أنها عامة عن طريق الخطأ إلى تعريض أصول المستخدمين للخطر.
في العقود الذكية Rust، هناك عدة أنواع من رؤية الوظائف:
يمكن أيضًا تحقيق الدالة internal من خلال تعريف طرق في كتلة impl التي لم يتم تزيينها بـ #[near_bindgen].
بالنسبة لدالة رد الاتصال، يجب تعيينها على public ولكن يجب التأكد من أنه يمكن استدعاؤها فقط بواسطة العقد نفسه. يمكن استخدام ماكرو #[private] لتحقيق ذلك.
يجب ملاحظة أن كل شيء في Rust افتراضياً خاص، وهذا يختلف عن النسخ القديمة من Solidity حيث كان الافتراضي عاماً.
!
2. التحكم في الوصول إلى الدوال المميزة
بالإضافة إلى رؤية الوظائف، تحتاج أيضًا إلى إنشاء آلية قائمة بيضاء كاملة للتحكم في الوصول من الناحية الدلالية.
مثل مُعدل onlyOwner في Solidity، يمكننا تنفيذ Trait مخصص في Rust:
صدأ سمة الحانة مملوكة { الجبهة الوطنية assert_owner(&self) { assert_eq!(env::p redecessor_account_id(), self.get_ owner()). } fn get_owner(&self) -> AccountId; fn set_owner( & mut self ، المالك: AccountId); }
من خلال هذه الطريقة يمكن تحقيق أن يكون فقط المالك هو من يمكنه استدعاء بعض الدوال الخاصة.
استنادًا إلى هذه الفكرة، يمكن إعداد قوائم بيضاء أكثر تعقيدًا لتحقيق تحكم دقيق في الوصول إلى المجموعات.
ستتم مناقشة المزيد من طرق التحكم في الوصول مثل التحكم في توقيت الاستدعاء وآلية التوقيع المتعدد في المقالات القادمة.
!
!
!
!
!
!
!
!
!