الفرق بين طريقتى استدعاء الدوال view vs call فى البلوك تشين

حفظ

2 دقيقة

الفرق_في_استدعاء_الدوال

تحثدثنا في المقال السابق عن كيفية كتابة ونشر اول عقد ذكي على شبكة البوك تشين

الفرق بين طريقتى استدعاء الدوال view vs call فى البلوك تشين

هذا المقال متاح أيضاً فى صورة فيديو يمكنك مشاهدته من خلال الرابط

سنتحدث عن طريقتين لدعم استدعاء للدوال (methods) للعقد الذكي (Smart contract ) على شبكة البلوك تشين وهما:

  • استدعاء call method
  • استدعاء view method

استدعاء call method

لقد قمنا باستخدام مثل هذا الاستدعاء من قبل كما في المثال التالي:

Near call exploreapp.msaudi.testnet helloworld –account ID msaudi.testnet

وهو عبارة عن استدعاء لشبكة نير باستخدام اسم العقد الذكي (exploreapp.msaudi.testnet ) واسم الدالة helloworld وبعد ذلك عندما نقوم بعمل استدعاء (call) لهذا التابع من أجل تنفيذ هذا الاستدعاء فإنه يطلب منا معرف الحساب account ID .

بهذه الطريقة فقد قمت باستخدام ال call لكي أستدعي ال method الخاصة بي وهي helloworld
عندما نقوم باستخدام هذه الطريقة لاستدعاء تابع ما فإنه يتم عمل transaction على البلوك تشين blockchain ويتم أخذ تكلفة للغاز من هذا الحساب msaudi.testnet .

فإذا ذهبنا لمعرفة رصيد هذا الحساب على شبكة ال testnet عن طريق فتح ال transaction على مستعرض نيرNEAR explorer :
فمثلاً سيكون رصيد هذا الحساب الذي قام بعمل ال transaction هو 41,78082 نير
إذا قمنا الآن بعمل الاستدعاء (call) لنفس التابع مرة أخرى واطلعنا على رصيد الحساب بعده، سنجد أنه اصبح 41,77659 نير
أي أن الرصيد أصبح أقل وذلك لخصم تكلفة من الحساب عند عمل الاستدعاء لهذه ال method.

بالنتيجة : عند عمل استدعاء لتابع ما بهذه الطريقة **call method ** فإن النتيجة ستتخزن في البلوك تشين وسيتم خصم تكلفة من الحساب المستدعي لهذا التابع.

ملاحظة: في حال كنت تريد لمستخدمي حسابك عمل call بدون دفع تكلفة فهناك طريقة أخرى وهي أن تقوم بعمل handle لهذا الأمر وعمل keys بطريقة أخرى غير التي تم ذكرها لن نغطيها في هذا القسم.

استدعاء view method

وكمثال عليه استخدمنا سابقاً :

Near view exploreapp.msaudi.testnet helloworld
هذا الاستدعاء للتابع على البلوك تشين لا يتطلب منا معرف الحساب (account ID)

الفرق بين طريقتى view method و call method ( تغيير ال state )
Call method

إذا كان التابع (method) الذي تقوم باستخدامه يغيِّر في حالة (state) البيانات في هذه الحالة ستكون في حاجة لاستخدام طريقة ال Call method

View method

إذا كان التابع الذي تستخدمه لا يغير من حالة البيانات data الموجودة في البلوك تشين و يقوم بعمل عرض (view) فقط لهذه البيانات. في هذه الحالة فإن الاستدعاء هو عبارة عن view method وهو يقوم بعمل عرض للبيانات دوماً دون تغييرها.
وفي هذه الحالة يمكننا استدعاء ال method بالطريقة التالية
Near view exploreapp.msaudi.testnet helloworld

هذه الطريقة تعتبر أسرع كما أنها لا تقوم بعمل transaction في البلوك تشين ولن تجد أي تكلفة تم سحبها من المستخدم وذلك لأن التوابع (methods) التي تستعرض البيانات data فقط والتي تسمى view method تكون مجانية ضمن بروتوكول النِير NEAR protocol، أما التوابع method التي تقوم بعمل تغيير للبيانات هي التي يكون لها تكلفة تحسب من الحساب المستدعي لها.

إذاً فأنت لست بحاجة لاستخدام طريقة الاستدعاء (call method) مع التوابع التي لا تغير في حالة البيانات المخونة على البلوك تشين كي لا تضطر لدفع تكاليف الغاز. يمكنك الاطلاع أكثر عن تكلفة الغاز و الطرق الاستدعاء على شبكة نِير من خلال موقع نير.

الخلاصة

عند عمل تطبيق ما على شبكة نِير إذا كان الدالة method لا تغير حالة البيانات (state) فلا تقم باستخدام call ولكن الأفضل أن تستخدم view

يمكنك الآن التسجيل في أول كورس للحصول على شهادة مطور نير معتمد باللغة العربية من خلال هذا الرابط 

أقرأ ايضا


اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *