บทเรียนที่ 4

Створення контракту FIFO

У цьому уроці ми розглянемо більш складний приклад контрактів SmartPy: чергу першим прийшов, першим вийшов (FIFO). FIFO — це метод організації буфера даних і керування ним, де першим обробляється найстаріший (перший) запис або «голова» черги.

Теорія

У структурі даних FIFO перший елемент, доданий до черги, буде першим видаленим. Це еквівалентно вимозі, згідно з якою після додавання нового елемента всі елементи, додані раніше, повинні бути видалені, перш ніж можна буде видалити новий елемент.

Джерело: Invostopedia

У контексті смарт-контрактів реалізація черги FIFO може бути корисною для багатьох сценаріїв, наприклад, чесної системи черги, де всі обслуговуються (або обробляються) у тому порядку, у якому вони надходять.

Практичний

Давайте напишемо контракт FIFO. Основними операціями для нашого контракту будуть push, щоб додати елементи до черги, і pop, щоб видалити елементи з черги.

Контракт зберігає чергу в списку у своєму сховищі, і кожна операція push додає елемент у кінець списку, тоді як кожна операція pop видаляє елемент із початку списку.

Ось як може виглядати договір:

Python 
 імпортує smartpy як sp 


 @sp.module 
 def main(): 
 # Клас Fifo визначає простий контракт, який обробляє інструкції push і pop 
 # за принципом "перший прийшов - перший вийшов".

    клас SimpleFifo(sp.Contract): 
 def __init__(self): 
 self.data.first = 0 
 self.data.last = -1 
 self.data.saved = {} 

 @sp.entrypoint 
 def pop(self): 
 assert self.data.first < self.data.last 
 del self.data.saved[self.data.first]
            self.data.first += 1 

 @sp.entrypoint 
 def push(self, element): 
 self.data.last += 1 
 self.data.saved[self.data.last] = елемент 

 @sp.onchain_view 
 def head(self): 
 return self.data.saved[self.data.first]


якщо "шаблони" відсутні в __name__: 

 @sp.add_test(name="Fifo") 
 def test(): 
 сценарій = sp.test_scenario(main)
        scenario.h1("Просто Контракт Fifo") 
 c1 = main.SimpleFifo() 
 сценарій += c1 
 c1.push(4) 
 c1.push(5) 
 c1.push(6) 
 c1.push(7) 
 c1.pop( ) 
 scenario.verify(sp.View(c1, "head")() == 5)

Щоб перевірити контракт FIFO:

Крок 1: Скопіюйте код контракту та вставте його в IDE SmartPy.

Крок 2: натисніть кнопку Run у верхньому правому куті, щоб скомпілювати та імітувати контракт.

Крок 3. Перевірте праву частину IDE, щоб побачити результати моделювання. Після кожної операції ви побачите стан контрактного сховища.

Крок 4: Експериментуйте, змінюючи порядок операцій або додаючи нові операції.

Тепер ви дізналися, як створити контракт FIFO на блокчейні Tezos! У наступному уроці ми розглянемо рекурсивні представлення, потужну функцію SmartPy, яка дозволяє контрактам викликати власні представлення. Продовжуйте досліджувати та щасливого кодування!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn
แคตตาล็อก
บทเรียนที่ 4

Створення контракту FIFO

У цьому уроці ми розглянемо більш складний приклад контрактів SmartPy: чергу першим прийшов, першим вийшов (FIFO). FIFO — це метод організації буфера даних і керування ним, де першим обробляється найстаріший (перший) запис або «голова» черги.

Теорія

У структурі даних FIFO перший елемент, доданий до черги, буде першим видаленим. Це еквівалентно вимозі, згідно з якою після додавання нового елемента всі елементи, додані раніше, повинні бути видалені, перш ніж можна буде видалити новий елемент.

Джерело: Invostopedia

У контексті смарт-контрактів реалізація черги FIFO може бути корисною для багатьох сценаріїв, наприклад, чесної системи черги, де всі обслуговуються (або обробляються) у тому порядку, у якому вони надходять.

Практичний

Давайте напишемо контракт FIFO. Основними операціями для нашого контракту будуть push, щоб додати елементи до черги, і pop, щоб видалити елементи з черги.

Контракт зберігає чергу в списку у своєму сховищі, і кожна операція push додає елемент у кінець списку, тоді як кожна операція pop видаляє елемент із початку списку.

Ось як може виглядати договір:

Python 
 імпортує smartpy як sp 


 @sp.module 
 def main(): 
 # Клас Fifo визначає простий контракт, який обробляє інструкції push і pop 
 # за принципом "перший прийшов - перший вийшов".

    клас SimpleFifo(sp.Contract): 
 def __init__(self): 
 self.data.first = 0 
 self.data.last = -1 
 self.data.saved = {} 

 @sp.entrypoint 
 def pop(self): 
 assert self.data.first < self.data.last 
 del self.data.saved[self.data.first]
            self.data.first += 1 

 @sp.entrypoint 
 def push(self, element): 
 self.data.last += 1 
 self.data.saved[self.data.last] = елемент 

 @sp.onchain_view 
 def head(self): 
 return self.data.saved[self.data.first]


якщо "шаблони" відсутні в __name__: 

 @sp.add_test(name="Fifo") 
 def test(): 
 сценарій = sp.test_scenario(main)
        scenario.h1("Просто Контракт Fifo") 
 c1 = main.SimpleFifo() 
 сценарій += c1 
 c1.push(4) 
 c1.push(5) 
 c1.push(6) 
 c1.push(7) 
 c1.pop( ) 
 scenario.verify(sp.View(c1, "head")() == 5)

Щоб перевірити контракт FIFO:

Крок 1: Скопіюйте код контракту та вставте його в IDE SmartPy.

Крок 2: натисніть кнопку Run у верхньому правому куті, щоб скомпілювати та імітувати контракт.

Крок 3. Перевірте праву частину IDE, щоб побачити результати моделювання. Після кожної операції ви побачите стан контрактного сховища.

Крок 4: Експериментуйте, змінюючи порядок операцій або додаючи нові операції.

Тепер ви дізналися, як створити контракт FIFO на блокчейні Tezos! У наступному уроці ми розглянемо рекурсивні представлення, потужну функцію SmartPy, яка дозволяє контрактам викликати власні представлення. Продовжуйте досліджувати та щасливого кодування!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn