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

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

يوميات تطوير العقود الذكية بلغة راست (7) أمان العقد من خلال التحكم في الوصول

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

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

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

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

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

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

أيضا ، الطرق المحددة في كتل impl التي لم يتم تزيينها ب #[near_bindgen] داخلية.

بالنسبة لدالة الاسترجاع، يجب تعيينها كعمومية ولكن يجب أيضًا إجراء تحقق من المستدعي، يمكن استخدام ماكرو #[private] لتحقيق ذلك.

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

!

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

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

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

!

!

!

!

!

!

!

!

!

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • 6
  • مشاركة
تعليق
0/400
ser_we_are_ngmivip
· منذ 2 س
صعب الفهم، سأذهب.
شاهد النسخة الأصليةرد0
NFT_Therapyvip
· 07-17 01:06
يجب أن يكون هناك تحكم في الأذونات! وإلا سيكون العقد في خطر.
شاهد النسخة الأصليةرد0
PonziDetectorvip
· 07-17 01:05
Rust يي ديس هو الأكثر صلابة
شاهد النسخة الأصليةرد0
MetaMuskRatvip
· 07-17 01:02
مرة أخرى نرى شخصاً لديه صلاحيات إدارة، هرب هرب
شاهد النسخة الأصليةرد0
ser_we_are_earlyvip
· 07-17 00:46
بسيط وواضح هو فقط إضافة التحكم في الأذونات
شاهد النسخة الأصليةرد0
MemeEchoervip
· 07-17 00:40
أشعر بالنعاس عند النظر، هل تعلم أحد حقًا؟
شاهد النسخة الأصليةرد0
  • تثبيت