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

robot
إنشاء الملخص قيد التقدم

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

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

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

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

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

في العقود الذكية Rust، يعد التحكم في رؤية الدوال بنفس القدر من الأهمية. يحدد ماكرو #[near_bindgen] في NEAR SDK الأنواع التالية من الرؤية:

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

طريقة أخرى لتعيين طريقة internal هي تعريف كتلة كود impl Contract منفصلة، دون استخدام التعليق التوضيحي #[near_bindgen].

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

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

!

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); }

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

!

3. طرق التحكم بالوصول الأخرى

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

!

!

!

!

!

!

!

!

GET6.09%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • إعادة النشر
  • مشاركة
تعليق
0/400
MetaNomadvip
· 08-04 05:07
rust مبتدئ يسأل أيهما أكثر أمانًا؟
شاهد النسخة الأصليةرد0
NftPhilanthropistvip
· 08-04 05:02
*sigh* بعد كل هذه الفوضى الأمنية لأن شخصًا ما نسي الأذونات الأساسية... متى سيتعلم المطورون أن يراعوا السك smh
شاهد النسخة الأصليةرد0
BearMarketGardenervip
· 08-04 04:57
إذا فشلت إدارة الأذونات، فستكون الكارثة.
شاهد النسخة الأصليةرد0
RuntimeErrorvip
· 08-04 04:45
تحكم غير موحد في الأذونات اركع لتصحيح الأخطاء
شاهد النسخة الأصليةرد0
  • تثبيت