ممارسات أمان العقود الذكية في Rust: التحكم في الوصول وإدارة الأذونات

Rust العقود الذكية养成日记(7)合约安全之计算精度

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

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

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

تحدد رؤية دوال العقود الذكية من يمكنه استدعاء هذه الدوال. تعتبر الإعدادات الصحيحة للرؤية ضرورية لحماية الأجزاء الرئيسية من العقد.

في العقود الذكية Rust، هناك أنواع رئيسية من رؤية الدوال كما يلي:

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

بالإضافة إلى ذلك، يمكن تعيينها كطرق داخلية من خلال تعريف الطرق في كتلة كود impl Contract منفصلة:

صدأ #[near_bindgen] عقد impl { pub fn increment(& mut self) { self.internal_increment(). } }

impl العقد { pub fn internal_increment(& mut self) { عداد ذاتي += 1 ؛ } }

بالنسبة لدالة الاسترجاع، يجب تعيينها كـ pub واستخدام الماكرو #[private] لتقييدها بحيث يمكن استدعاؤها فقط بواسطة العقد نفسه:

صدأ #[near_bindgen] عقد impl { #[private] pub fn resolve_transfer(&mut self) { // منطق الاسترجاع } }

!

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

بالإضافة إلى تعيين رؤية الدوال، يجب إنشاء آلية قائمة بيضاء للتحكم في الوصول لتقييد استدعاء الدوال ذات الامتيازات.

يمكن تحقيق سمة 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); }

ثم في دالة الامتياز، استدعِ assert_owner() للتحقق من هوية المتصل:

صدأ impl العقد { pub fn privileged_function(&mut self) { self.assert_owner(). // منطق الدالة الخاصة } }

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

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

!

!

!

!

!

!

!

!

!

GET7.38%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 5
  • إعادة النشر
  • مشاركة
تعليق
0/400
CryingOldWalletvip
· 07-28 07:37
أخيرًا رأيت شيئًا يتعلق بـ rust، استمر في الكتابة استمر في الكتابة
شاهد النسخة الأصليةرد0
PumpingCroissantvip
· 07-28 03:49
مرة أخرى لا أستطيع تعلم rust
شاهد النسخة الأصليةرد0
CryptoGoldminevip
· 07-25 08:04
عمق التقنية جيد لكن يجب أن نرى عائد الاستثمار الفعلي من تحسين جدولة مجمع التعدين
شاهد النسخة الأصليةرد0
SchrodingerAirdropvip
· 07-25 08:01
هذا الدليل للمبتدئين يجعلني أشعر بالارتباك، rust دائما يطرح أشياء معقدة.
شاهد النسخة الأصليةرد0
GateUser-2fce706cvip
· 07-25 08:01
التطور هو الحقيقة الصلبة، سلسلة Rust هذه تتدفق كالأمواج! استعد للتخطيط!
شاهد النسخة الأصليةرد0
  • تثبيت