سيتم تقديم هذا المقال من زاويتين حول التحكم في الوصول في العقود الذكية بلغة Rust:
رؤية طرق العقود
التحكم في الوصول إلى الدوال المميزة
1. رؤية دوال العقود
تعد السيطرة على رؤية دوال العقود الذكية أمرًا بالغ الأهمية لحماية الوظائف الحيوية. على سبيل المثال، في حادثة الأمان في بورصة Bancor Network في يونيو 2020، تم تعريض أصول المستخدمين للخطر بسبب تعيين دالة التحويل الرئيسية على أنها عامة.
في العقود الذكية المكتوبة بلغة Rust، هناك عدة أنواع من رؤية الدوال:
pub fn: دالة عامة، يمكن استدعاؤها من الخارج
fn: دالة داخلية، يمكن استدعاؤها فقط داخل العقد
pub(crate) fn: تقييد استدعاء داخل crate
بالإضافة إلى ذلك، يمكن أن يجعل تعريف الدالة داخل كتلة impl غير الموصوفة بـ #[near_bindgen] دالة داخلية.
بالنسبة لدالة الاسترجاع، يجب تعيينها كـ public ولكن مع التأكد من أنه يمكن استدعاؤها فقط من قبل العقد نفسه. يمكن استخدام ماكرو #[private] لتحقيق هذه الوظيفة.
يجب ملاحظة أن الرؤية الافتراضية في Rust هي خاصة، وهي تختلف عن العامة الافتراضية لبعض إصدارات Solidity. الاستثناء هو أن العناصر في pub trait و pub enum تكون افتراضيًا عامة.
!
2. التحكم في الوصول إلى وظائف الامتياز
بالإضافة إلى رؤية الوظائف، يجب إنشاء آلية قائمة بيضاء للتحكم في وصول وظائف الامتياز. مثل modifier onlyOwner في Solidity، يمكنك تنفيذ سمة Ownable:
يمكن استخدام هذه السمة للحد من إمكانية استدعاء بعض الدوال المميزة إلا من قبل المالك. بناءً على هذه الفكرة، يمكن إعداد قوائم بيضاء أكثر تعقيدًا لتحقيق تحكم دقيق في الوصول.
!
3. طرق التحكم في الوصول الأخرى
يمكن أيضًا النظر في التحكم في توقيت استدعاء العقود، وآلية الاستدعاء متعددة التوقيعات، وحوكمة DAO، وغيرها من طرق التحكم في الوصول، سيتم تقديم تفاصيل إضافية حول هذه المواضيع في المقالات القادمة.
!
!
!
!
!
!
!
!
شاهد النسخة الأصلية
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
تسجيلات الإعجاب 7
أعجبني
7
7
مشاركة
تعليق
0/400
LootboxPhobia
· منذ 13 س
علق علق لا أستطيع دراسة العقود الذكية
شاهد النسخة الأصليةرد0
GasOptimizer
· منذ 13 س
التصور لاستهلاك الغاز في التوقيع المتعدد هو موضوع كبير آخر.
شاهد النسخة الأصليةرد0
BridgeJumper
· منذ 13 س
هل الكود آمن الآن؟ لا يزال يتم حقنه.
شاهد النسخة الأصليةرد0
UncleLiquidation
· منذ 13 س
أمان التوقيع المتعدد جيد.
شاهد النسخة الأصليةرد0
UncleWhale
· منذ 13 س
الأمان يجب أن يتم التعامل معه بجدية.
شاهد النسخة الأصليةرد0
BankruptcyArtist
· منذ 14 س
ما فائدة التوقيع المتعدد إذا كان يحتوي على ثغرات فيمكن استغلاله على أي حال
Rust العقود الذكية الأمن المتقدم: إدارة الحقوق والتحكم في الوصول
Rust العقود الذكية养成日记(7)合约安全之权限控制
سيتم تقديم هذا المقال من زاويتين حول التحكم في الوصول في العقود الذكية بلغة Rust:
1. رؤية دوال العقود
تعد السيطرة على رؤية دوال العقود الذكية أمرًا بالغ الأهمية لحماية الوظائف الحيوية. على سبيل المثال، في حادثة الأمان في بورصة Bancor Network في يونيو 2020، تم تعريض أصول المستخدمين للخطر بسبب تعيين دالة التحويل الرئيسية على أنها عامة.
في العقود الذكية المكتوبة بلغة Rust، هناك عدة أنواع من رؤية الدوال:
بالإضافة إلى ذلك، يمكن أن يجعل تعريف الدالة داخل كتلة impl غير الموصوفة بـ #[near_bindgen] دالة داخلية.
بالنسبة لدالة الاسترجاع، يجب تعيينها كـ public ولكن مع التأكد من أنه يمكن استدعاؤها فقط من قبل العقد نفسه. يمكن استخدام ماكرو #[private] لتحقيق هذه الوظيفة.
يجب ملاحظة أن الرؤية الافتراضية في Rust هي خاصة، وهي تختلف عن العامة الافتراضية لبعض إصدارات Solidity. الاستثناء هو أن العناصر في pub trait و pub enum تكون افتراضيًا عامة.
!
2. التحكم في الوصول إلى وظائف الامتياز
بالإضافة إلى رؤية الوظائف، يجب إنشاء آلية قائمة بيضاء للتحكم في وصول وظائف الامتياز. مثل modifier onlyOwner في Solidity، يمكنك تنفيذ سمة Ownable:
الصدا سمة الحانة مملوكة { الجبهة الوطنية 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، وغيرها من طرق التحكم في الوصول، سيتم تقديم تفاصيل إضافية حول هذه المواضيع في المقالات القادمة.
!
!
!
!
!
!
!
!