Trong cấu trúc dữ liệu FIFO, phần tử đầu tiên được thêm vào hàng đợi sẽ là phần tử đầu tiên bị xóa. Điều này tương đương với yêu cầu khi một phần tử mới được thêm vào, tất cả các phần tử đã được thêm trước đó phải bị xóa trước khi phần tử mới có thể bị xóa.
Nguồn: Invostopedia
Trong bối cảnh hợp đồng thông minh, việc triển khai hàng đợi FIFO có thể hữu ích trong nhiều trường hợp, chẳng hạn như hệ thống xếp hàng công bằng nơi mọi người được phục vụ (hoặc xử lý) theo thứ tự họ đến.
Hãy tiếp tục và viết một hợp đồng FIFO. Các hoạt động chính cho hợp đồng của chúng ta sẽ là push
để thêm các phần tử vào hàng đợi và pop
để xóa các phần tử khỏi hàng đợi.
Hợp đồng lưu trữ hàng đợi trong một danh sách trong bộ lưu trữ của nó và mọi thao tác push
sẽ thêm một phần tử vào cuối danh sách, trong khi mọi thao tác pop
sẽ xóa một phần tử khỏi đầu danh sách.
Đây là cách hợp đồng có thể trông như thế nào:
Python
import smartpy as sp
@sp.module
def main():
# Lớp Fifo xác định một hợp đồng đơn giản xử lý các lệnh đẩy và bật
# trên cơ sở nhập trước xuất trước.
lớp SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
khẳng định 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] = phần tử
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
nếu "mẫu" không có trong __name__:
@sp.add_test(name="Fifo")
def test():
script = sp.test_scenario(main)
script.h1("Đơn giản Hợp đồng Fifo")
c1 = main.SimpleFifo()
kịch bản += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
script.verify(sp.View(c1, "head")() == 5)
Để kiểm tra hợp đồng FIFO:
Bước 1: Sao chép mã hợp đồng và dán vào SmartPy IDE.
Bước 2: Nhấp vào nút Run
ở phía trên bên phải để biên dịch và mô phỏng hợp đồng.
Bước 3: Kiểm tra phía bên phải của IDE để xem kết quả mô phỏng. Bạn sẽ thấy trạng thái lưu trữ hợp đồng sau mỗi thao tác.
Bước 4: Thử nghiệm bằng cách thay đổi thứ tự các thao tác hoặc thêm các thao tác mới.
Bây giờ bạn đã học cách tạo hợp đồng FIFO trên chuỗi khối Tezos! Trong bài học tiếp theo, chúng ta sẽ đi xa hơn với các chế độ xem đệ quy, một tính năng mạnh mẽ của SmartPy cho phép các hợp đồng gọi các chế độ xem của chính chúng. Hãy tiếp tục khám phá và viết mã vui vẻ!
Trong cấu trúc dữ liệu FIFO, phần tử đầu tiên được thêm vào hàng đợi sẽ là phần tử đầu tiên bị xóa. Điều này tương đương với yêu cầu khi một phần tử mới được thêm vào, tất cả các phần tử đã được thêm trước đó phải bị xóa trước khi phần tử mới có thể bị xóa.
Nguồn: Invostopedia
Trong bối cảnh hợp đồng thông minh, việc triển khai hàng đợi FIFO có thể hữu ích trong nhiều trường hợp, chẳng hạn như hệ thống xếp hàng công bằng nơi mọi người được phục vụ (hoặc xử lý) theo thứ tự họ đến.
Hãy tiếp tục và viết một hợp đồng FIFO. Các hoạt động chính cho hợp đồng của chúng ta sẽ là push
để thêm các phần tử vào hàng đợi và pop
để xóa các phần tử khỏi hàng đợi.
Hợp đồng lưu trữ hàng đợi trong một danh sách trong bộ lưu trữ của nó và mọi thao tác push
sẽ thêm một phần tử vào cuối danh sách, trong khi mọi thao tác pop
sẽ xóa một phần tử khỏi đầu danh sách.
Đây là cách hợp đồng có thể trông như thế nào:
Python
import smartpy as sp
@sp.module
def main():
# Lớp Fifo xác định một hợp đồng đơn giản xử lý các lệnh đẩy và bật
# trên cơ sở nhập trước xuất trước.
lớp SimpleFifo(sp.Contract):
def __init__(self):
self.data.first = 0
self.data.last = -1
self.data.saved = {}
@sp.entrypoint
def pop(self):
khẳng định 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] = phần tử
@sp.onchain_view
def head(self):
return self.data.saved[self.data.first]
nếu "mẫu" không có trong __name__:
@sp.add_test(name="Fifo")
def test():
script = sp.test_scenario(main)
script.h1("Đơn giản Hợp đồng Fifo")
c1 = main.SimpleFifo()
kịch bản += c1
c1.push(4)
c1.push(5)
c1.push(6)
c1.push(7)
c1.pop( )
script.verify(sp.View(c1, "head")() == 5)
Để kiểm tra hợp đồng FIFO:
Bước 1: Sao chép mã hợp đồng và dán vào SmartPy IDE.
Bước 2: Nhấp vào nút Run
ở phía trên bên phải để biên dịch và mô phỏng hợp đồng.
Bước 3: Kiểm tra phía bên phải của IDE để xem kết quả mô phỏng. Bạn sẽ thấy trạng thái lưu trữ hợp đồng sau mỗi thao tác.
Bước 4: Thử nghiệm bằng cách thay đổi thứ tự các thao tác hoặc thêm các thao tác mới.
Bây giờ bạn đã học cách tạo hợp đồng FIFO trên chuỗi khối Tezos! Trong bài học tiếp theo, chúng ta sẽ đi xa hơn với các chế độ xem đệ quy, một tính năng mạnh mẽ của SmartPy cho phép các hợp đồng gọi các chế độ xem của chính chúng. Hãy tiếp tục khám phá và viết mã vui vẻ!