تحكم في صلاحيات العقود الذكية Rust: رؤية الوظائف وإدارة الوصول المميز

التحكم في الصلاحيات في العقود الذكية بلغة Rust

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

  1. رؤية طريقة العقد
  2. التحكم في الوصول إلى وظائف الامتياز

رؤية دالة العقد

في العقود الذكية بلغة Rust، يعتبر التحكم في رؤية الوظائف أمرًا بالغ الأهمية. على سبيل المثال، في حادثة الأمان التي حدثت في بورصة Bancor Network في عام 2020، أدى تعيين وظيفة التحويل الرئيسية بشكل خاطئ إلى public إلى تعريض أصول المستخدمين للخطر.

في العقود الذكية لـ NEAR بلغة Rust، تتنوع رؤية الدوال بشكل رئيسي إلى الأنواع التالية:

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

بالإضافة إلى ذلك، يمكن تعريف الدالة في كتلة impl غير الموصوفة بـ #[near_bindgen]، ويمكن أيضًا اعتبارها دالة داخلية.

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

من المهم أن نلاحظ أن كل شيء في Rust يكون خاصًا بشكل افتراضي، باستثناء العناصر الموجودة في pub Trait و pub Enum.

!

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

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

يمكن استخدام مثل هذه السمات لتنفيذ التحكم في الوصول إلى الوظائف المميزة، لضمان أن يتمكن مالك العقد فقط من استدعاء هذه الوظائف.

استنادًا إلى هذا المبدأ، يمكننا تنفيذ التحكم الدقيق في الوصول لمستخدمي القائمة البيضاء المتعددة أو مجموعات القوائم البيضاء المتعددة من خلال تخصيص سمات أكثر تعقيدًا.

بالإضافة إلى ذلك، يمكن تحقيق التحكم في توقيت الاستدعاء وآليات التوقيع المتعدد وغيرها من طرق التحكم في الوصول لتلبية متطلبات الأمان في سيناريوهات مختلفة.

!

!

!

!

!

!

!

!

!

GET-0.28%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • إعادة النشر
  • مشاركة
تعليق
0/400
WalletManagervip
· 08-01 21:48
يجب أن يكون التحكم في الوصول صارماً قليلاً
شاهد النسخة الأصليةرد0
HashBrowniesvip
· 08-01 05:29
تحكم الوصول حقًا مذهل
شاهد النسخة الأصليةرد0
GasFeeCriervip
· 07-30 19:25
يجب تكوين أذونات الاستدعاء بعناية
شاهد النسخة الأصليةرد0
TeaTimeTradervip
· 07-30 19:21
التحكم في الأذونات حقًا صعب.
شاهد النسخة الأصليةرد0
CoinBasedThinkingvip
· 07-30 19:07
هناك الكثير من الثغرات الأمنية
شاهد النسخة الأصليةرد0
NotFinancialAdvicevip
· 07-30 18:57
محتوى مفيد حقا
شاهد النسخة الأصليةرد0
  • تثبيت