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

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

Rust العقود الذكية养成日记(7)合约安全之访问控制

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

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

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

في العقود الذكية بلغة Rust، فإن التحكم في رؤية الوظائف أمر مهم جدًا. يقوم NEAR SDK بتعريف الخصائص المرئية التالية باستخدام ماكرو #[near_bindgen]:

  • 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. التحكم في الوصول إلى وظائف الامتياز

بالإضافة إلى رؤية الوظائف، تحتاج إلى إنشاء آلية قائمة التحكم في الوصول. يمكنك تنفيذ Trait مخصص:

صدأ سمة الحانة مملوكة { الجبهة الوطنية 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(). // عمليات الامتياز } }

يمكن أن يحقق هذا آلية قائمة بيضاء أساسية، ويمكن أيضًا توسيعها لتحقيق تحكم وصول معقد لمستخدمين متعددين وقوائم بيضاء متعددة.

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

!

!

!

!

!

!

!

!

!

GET-1.15%
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 9
  • مشاركة
تعليق
0/400
GasWastervip
· 07-24 14:55
أنت تدرس أشياء عميقة مرة أخرى
شاهد النسخة الأصليةرد0
rugdoc.ethvip
· 07-24 12:22
هذا قديم جدًا.
شاهد النسخة الأصليةرد0
GateUser-9ad11037vip
· 07-24 03:37
هل يجب إضافة آلية القائمة السوداء؟
شاهد النسخة الأصليةرد0
DefiPlaybookvip
· 07-23 10:17
تظهر البيانات الشاملة أن التحكم في الزيارة لا يزال في المراكز الثلاثة الأولى لثغرات العقود.
شاهد النسخة الأصليةرد0
SeeYouInFourYearsvip
· 07-21 20:27
الصدأ هكذا هو
شاهد النسخة الأصليةرد0
OnchainDetectivevip
· 07-21 20:27
إن السيطرة على الحقوق مجرد شكل فارغ، كان ينبغي التحقق من الثغرات منذ زمن.
شاهد النسخة الأصليةرد0
rekt_but_resilientvip
· 07-21 20:21
آلية أمان هذا العقد مائية
شاهد النسخة الأصليةرد0
DarkPoolWatchervip
· 07-21 20:13
كتابة جيدة لكنني نمت أثناء القراءة
شاهد النسخة الأصليةرد0
MEVSandwichVictimvip
· 07-21 20:11
أبرز النقاط! هيا!
شاهد النسخة الأصليةرد0
عرض المزيد
  • تثبيت