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

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

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

ستتناول هذه المقالة مشكلة التحكم في الوصول في العقود الذكية بلغة Rust من جانبين: قابلية رؤية طرق العقد و التحكم في الوصول إلى الدوال المميزة.

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

عند كتابة العقود الذكية، يمكن التحكم في من يمكنه استدعاء دالة معينة من خلال تحديد رؤية الدالة، مما يحمي الأجزاء الأساسية في العقد.

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

في العقود الذكية بلغة Rust، توجد عدة أنواع من رؤية الدوال:

  • pub fn: تشير هذه العبارة إلى أن هذه الطريقة عامة، وهي جزء من واجهة العقد، يمكن لأي شخص استدعاؤها من الخارج.
  • fn: إذا لم يتم تحديد pub بشكل صريح، فهذا يعني أن هذه الدالة يمكن استدعاؤها فقط من قبل دوال أخرى داخل العقد.
  • pub(crate) fn: حصر الطريقة في نطاق استدعاء crate الداخلي.

طريقة أخرى لجعل الطريقة داخلية هي تعريفها داخل كتلة كود impl Contract غير الموصوفة بـ #[near_bindgen].

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

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

!

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

بالإضافة إلى رؤية الوظائف، يجب إنشاء آلية قائمة على القائمة البيضاء للتحكم في الوصول بشكل كامل من حيث المعنى. يمكن استدعاء بعض الوظائف المميزة (مثل تهيئة العقد، وفتح/إيقاف، إلخ) فقط من قبل مالك العقد.

في العقود الذكية بلغة Rust، يمكن تحقيق وظيفة مشابهة لمعدل onlyOwner في Solidity:

صدأ سمة الحانة مملوكة { الجبهة الوطنية 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. طرق التحكم بالوصول الأخرى

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

!

GET0.59%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 4
  • مشاركة
تعليق
0/400
ProxyCollectorvip
· منذ 4 س
مرة أخرى، إنها فخ إعدادات الأذونات، من يقع في الفخ يكون سيئ الحظ.
شاهد النسخة الأصليةرد0
SelfRuggervip
· منذ 17 س
مرة أخرى، مشكلة أذونات تحبطني
شاهد النسخة الأصليةرد0
AllTalkLongTradervip
· منذ 17 س
嘿嘿 مرة أخرى أرى تلك الحفرة في تبادل العام الماضي
شاهد النسخة الأصليةرد0
PermabullPetevip
· منذ 18 س
لم يتم السيطرة على الصلاحيات وكادت أن تتعطل
شاهد النسخة الأصليةرد0
  • تثبيت