سيتم تقديم هذا المقال من زاويتين حول التحكم في الوصول في العقود الذكية بلغة 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، وغيرها من طرق التحكم في الوصول، سيتم تقديم تفاصيل إضافية حول هذه المواضيع في المقالات القادمة.
!
!
!
!
!
!
!
!
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 10
أعجبني
10
10
مشاركة
تعليق
0/400
Anon32942
· 07-14 23:24
هذه الشيفرة صعبة بعض الشيء.
شاهد النسخة الأصليةرد0
GasFeeCrier
· 07-14 20:16
ما مدى أمان هذا الأمان؟
شاهد النسخة الأصليةرد0
MeaninglessApe
· 07-14 14:35
هل يجب أن نلتف حول هذا أيضًا؟ لقد كتبنا Rust بالفعل.
شاهد النسخة الأصليةرد0
LootboxPhobia
· 07-12 09:38
علق علق لا أستطيع دراسة العقود الذكية
شاهد النسخة الأصليةرد0
GasOptimizer
· 07-12 09:38
التصور لاستهلاك الغاز في التوقيع المتعدد هو موضوع كبير آخر.
شاهد النسخة الأصليةرد0
BridgeJumper
· 07-12 09:37
هل الكود آمن الآن؟ لا يزال يتم حقنه.
شاهد النسخة الأصليةرد0
UncleLiquidation
· 07-12 09:37
أمان التوقيع المتعدد جيد.
شاهد النسخة الأصليةرد0
UncleWhale
· 07-12 09:30
الأمان يجب أن يتم التعامل معه بجدية.
شاهد النسخة الأصليةرد0
BankruptcyArtist
· 07-12 09:22
ما فائدة التوقيع المتعدد إذا كان يحتوي على ثغرات فيمكن استغلاله على أي حال
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، وغيرها من طرق التحكم في الوصول، سيتم تقديم تفاصيل إضافية حول هذه المواضيع في المقالات القادمة.
!
!
!
!
!
!
!
!