У структурі даних 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, яка дозволяє контрактам викликати власні представлення. Продовжуйте досліджувати та щасливого кодування!
У структурі даних 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, яка дозволяє контрактам викликати власні представлення. Продовжуйте досліджувати та щасливого кодування!