يوميات تطوير العقود الذكية بلغة راست (7) أمان العقد من خلال التحكم في الوصول
ستقدم هذه المقالة التحكم في الأذونات في عقود Rust الذكية من جانبين:
رؤية طرق العقود
التحكم في الوصول إلى وظائف الامتياز
1. رؤية دوال العقد
إن إعداد رؤية وظائف العقد بشكل صحيح أمر بالغ الأهمية لحماية أمان العقد. على سبيل المثال، في حادثة بورصة Bancor Network في يونيو 2020، أدى تعيين وظيفة التحويل الأساسية كـ public عن طريق الخطأ إلى تعريض أصول المستخدمين للخطر.
في العقود الذكية بلغة Rust، توجد أنواع مختلفة من رؤية الدوال هي كما يلي:
pub fn: دالة عامة، يمكن استدعاؤها من خارج العقد
fn: الدالة الداخلية الافتراضية، يمكن استدعائها فقط داخل العقد
pub(crate) fn: تقييد الاستدعاء داخل crate
أيضا ، الطرق المحددة في كتل impl التي لم يتم تزيينها ب #[near_bindgen] داخلية.
بالنسبة لدالة الاسترجاع، يجب تعيينها كعمومية ولكن يجب أيضًا إجراء تحقق من المستدعي، يمكن استخدام ماكرو #[private] لتحقيق ذلك.
من الجدير بالذكر أن Rust تجعل كل شيء خاصًا بشكل افتراضي، باستثناء العناصر الموجودة في pub trait و pub enum.
!
2. التحكم في الوصول إلى دوال الامتياز
بالإضافة إلى تعيين رؤية الدالة، يجب أيضًا إنشاء آلية قائمة بيضاء للسيطرة على الوصول. مثل modifier onlyOwner في Solidity، يمكن تعريف الدوال المميزة التي يمكن أن يستدعيها فقط المالك.
يسمح هذا بالتحكم الأساسي في أذونات المالك. يمكن توسيعه إلى قائمة بيضاء متعددة المستخدمين أو قائمة بيضاء متعددة المجموعات لمزيد من التحكم الدقيق في الوصول.
!
!
!
!
!
!
!
!
!
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 17
أعجبني
17
6
مشاركة
تعليق
0/400
ser_we_are_ngmi
· منذ 2 س
صعب الفهم، سأذهب.
شاهد النسخة الأصليةرد0
NFT_Therapy
· 07-17 01:06
يجب أن يكون هناك تحكم في الأذونات! وإلا سيكون العقد في خطر.
أمن العقد الذكي من Rust: نظرة فاحصة على التحكم في الوصول ورؤية الوظيفة
يوميات تطوير العقود الذكية بلغة راست (7) أمان العقد من خلال التحكم في الوصول
ستقدم هذه المقالة التحكم في الأذونات في عقود Rust الذكية من جانبين:
1. رؤية دوال العقد
إن إعداد رؤية وظائف العقد بشكل صحيح أمر بالغ الأهمية لحماية أمان العقد. على سبيل المثال، في حادثة بورصة Bancor Network في يونيو 2020، أدى تعيين وظيفة التحويل الأساسية كـ public عن طريق الخطأ إلى تعريض أصول المستخدمين للخطر.
في العقود الذكية بلغة Rust، توجد أنواع مختلفة من رؤية الدوال هي كما يلي:
أيضا ، الطرق المحددة في كتل impl التي لم يتم تزيينها ب #[near_bindgen] داخلية.
بالنسبة لدالة الاسترجاع، يجب تعيينها كعمومية ولكن يجب أيضًا إجراء تحقق من المستدعي، يمكن استخدام ماكرو #[private] لتحقيق ذلك.
من الجدير بالذكر أن Rust تجعل كل شيء خاصًا بشكل افتراضي، باستثناء العناصر الموجودة في pub trait و pub enum.
!
2. التحكم في الوصول إلى دوال الامتياز
بالإضافة إلى تعيين رؤية الدالة، يجب أيضًا إنشاء آلية قائمة بيضاء للسيطرة على الوصول. مثل modifier onlyOwner في Solidity، يمكن تعريف الدوال المميزة التي يمكن أن يستدعيها فقط المالك.
يمكن تحقيق ذلك في 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); }
يسمح هذا بالتحكم الأساسي في أذونات المالك. يمكن توسيعه إلى قائمة بيضاء متعددة المستخدمين أو قائمة بيضاء متعددة المجموعات لمزيد من التحكم الدقيق في الوصول.
!
!
!
!
!
!
!
!
!