Leçon 4

إنشاء عقد FIFO

في هذا الدرس، سنتعمق في مثال أكثر تعقيدًا لعقود SmartPY: قائمة انتظار أول من يدخل ويخرج أولاً (FIFO). FIFO هي طريقة لتنظيم مخزن البيانات المؤقت ومعالجته، حيث تتم معالجة الإدخال الأقدم (الأول) أو «رئيس» قائمة الانتظار أولاً.

نظرية

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

المصدر: إنفوستوبيديا

في سياق العقود الذكية، يمكن أن يكون تنفيذ قائمة انتظار FIFO مفيدًا للعديد من السيناريوهات، مثل نظام قائمة الانتظار العادلة حيث يتم تقديم الخدمة للجميع (أو معالجتهم) بالترتيب الذي يأتون به.

عملية

دعنا نمضي قدمًا ونكتب عقد FIFO. ستكون العمليات الرئيسية لعقدنا هي push، لإضافة عناصر إلى قائمة الانتظار، و pop، لإزالة العناصر من قائمة الانتظار.

يقوم العقد بتخزين قائمة الانتظار في قائمة في وحدة التخزين الخاصة به، وتقوم كل عملية دفع بإلحاق عنصر بنهاية القائمة، بينما تقوم كل عملية pop بإزالة عنصر من بداية القائمة.

فيما يلي الشكل الذي قد يبدو عليه العقد:

الثعبان
الاستيراد بذكاء كسبا


@sp. وحدة
تعريف رئيسي ():
 # تحدد فئة Fifo عقدًا بسيطًا يتعامل مع تعليمات الدفع والفرقعة
 # على أساس من يحضر أولاً يخرج أولاً.

    فئة FIFO البسيطة (عقد SP):
 ديف __init__(الذات):
 البيانات الذاتية. الأولى = 0
 البيانات الذاتية. الأخيرة = -1
 تم حفظ البيانات الذاتية = {}

 @sp. نقطة الدخول
 ديف بوب (الذات):
 تأكيد البيانات الذاتية. البيانات الذاتية الأولى.data.last <
 del self.data.saved [self.data.first]
            البيانات الذاتية. الأولى += 1

 @sp. نقطة الدخول
 الضغط الذاتي (الذاتي، العنصر):
 البيانات الذاتية. الأخيرة += 1
 تم حفظ البيانات الذاتية [self.data.last] = عنصر

 @sp .onchain_view
 رأس الصم (الرف):
 إرجاع البيانات الذاتية.المحفوظة [self.data.first]


إذا لم " تكن " القوالب موجودة في __name__:

 @sp .add_test (الاسم = فيفو) " "
 اختبار def ():
 سيناريو = سيناريو sp.test_( رئيسي)
        سيناريو h1 (بسيط) " عقد " فيفو ()
 c1 = معلومات بسيطة رئيسية (1)
 سيناريو += c1
 c1.push (4)
 c1.push (5)
 c1.push (6)
 c1.push (7)
 c1.pop ()
 سيناريو التحقق (SP.View (c1، " الرأس) (") == 5)

لاختبار عقد FIFO:

الخطوة 1: انسخ رمز العقد والصقه في SmartPY IDE.

الخطوة 2: انقر فوق زر التشغيل في الجزء العلوي الأيمن لتجميع ومحاكاة العقد.

الخطوة 3: تحقق من الجانب الأيمن من IDE لرؤية نتائج المحاكاة. سترى حالة تخزين العقد بعد كل عملية.

الخطوة 4: التجربة عن طريق تغيير ترتيب العمليات أو إضافة عمليات جديدة.

لقد تعلمت الآن كيفية إنشاء عقد FIFO على بلوكشين Tezos! في الدرس التالي، سنذهب إلى أبعد من ذلك مع المشاهدات التكرارية، وهي ميزة قوية لـ SmartPY تتيح للعقود استدعاء وجهات نظرها الخاصة. استمر في الاستكشاف والترميز السعيد!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 4

إنشاء عقد FIFO

في هذا الدرس، سنتعمق في مثال أكثر تعقيدًا لعقود SmartPY: قائمة انتظار أول من يدخل ويخرج أولاً (FIFO). FIFO هي طريقة لتنظيم مخزن البيانات المؤقت ومعالجته، حيث تتم معالجة الإدخال الأقدم (الأول) أو «رئيس» قائمة الانتظار أولاً.

نظرية

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

المصدر: إنفوستوبيديا

في سياق العقود الذكية، يمكن أن يكون تنفيذ قائمة انتظار FIFO مفيدًا للعديد من السيناريوهات، مثل نظام قائمة الانتظار العادلة حيث يتم تقديم الخدمة للجميع (أو معالجتهم) بالترتيب الذي يأتون به.

عملية

دعنا نمضي قدمًا ونكتب عقد FIFO. ستكون العمليات الرئيسية لعقدنا هي push، لإضافة عناصر إلى قائمة الانتظار، و pop، لإزالة العناصر من قائمة الانتظار.

يقوم العقد بتخزين قائمة الانتظار في قائمة في وحدة التخزين الخاصة به، وتقوم كل عملية دفع بإلحاق عنصر بنهاية القائمة، بينما تقوم كل عملية pop بإزالة عنصر من بداية القائمة.

فيما يلي الشكل الذي قد يبدو عليه العقد:

الثعبان
الاستيراد بذكاء كسبا


@sp. وحدة
تعريف رئيسي ():
 # تحدد فئة Fifo عقدًا بسيطًا يتعامل مع تعليمات الدفع والفرقعة
 # على أساس من يحضر أولاً يخرج أولاً.

    فئة FIFO البسيطة (عقد SP):
 ديف __init__(الذات):
 البيانات الذاتية. الأولى = 0
 البيانات الذاتية. الأخيرة = -1
 تم حفظ البيانات الذاتية = {}

 @sp. نقطة الدخول
 ديف بوب (الذات):
 تأكيد البيانات الذاتية. البيانات الذاتية الأولى.data.last <
 del self.data.saved [self.data.first]
            البيانات الذاتية. الأولى += 1

 @sp. نقطة الدخول
 الضغط الذاتي (الذاتي، العنصر):
 البيانات الذاتية. الأخيرة += 1
 تم حفظ البيانات الذاتية [self.data.last] = عنصر

 @sp .onchain_view
 رأس الصم (الرف):
 إرجاع البيانات الذاتية.المحفوظة [self.data.first]


إذا لم " تكن " القوالب موجودة في __name__:

 @sp .add_test (الاسم = فيفو) " "
 اختبار def ():
 سيناريو = سيناريو sp.test_( رئيسي)
        سيناريو h1 (بسيط) " عقد " فيفو ()
 c1 = معلومات بسيطة رئيسية (1)
 سيناريو += c1
 c1.push (4)
 c1.push (5)
 c1.push (6)
 c1.push (7)
 c1.pop ()
 سيناريو التحقق (SP.View (c1، " الرأس) (") == 5)

لاختبار عقد FIFO:

الخطوة 1: انسخ رمز العقد والصقه في SmartPY IDE.

الخطوة 2: انقر فوق زر التشغيل في الجزء العلوي الأيمن لتجميع ومحاكاة العقد.

الخطوة 3: تحقق من الجانب الأيمن من IDE لرؤية نتائج المحاكاة. سترى حالة تخزين العقد بعد كل عملية.

الخطوة 4: التجربة عن طريق تغيير ترتيب العمليات أو إضافة عمليات جديدة.

لقد تعلمت الآن كيفية إنشاء عقد FIFO على بلوكشين Tezos! في الدرس التالي، سنذهب إلى أبعد من ذلك مع المشاهدات التكرارية، وهي ميزة قوية لـ SmartPY تتيح للعقود استدعاء وجهات نظرها الخاصة. استمر في الاستكشاف والترميز السعيد!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.