في بنية بيانات 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 تتيح للعقود استدعاء وجهات نظرها الخاصة. استمر في الاستكشاف والترميز السعيد!
في بنية بيانات 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 تتيح للعقود استدعاء وجهات نظرها الخاصة. استمر في الاستكشاف والترميز السعيد!