Lição 4

Tạo hợp đồng FIFO

Trong bài học này, chúng ta sẽ đi sâu vào một ví dụ phức tạp hơn về hợp đồng SmartPy: hàng đợi Vào trước, ra trước (FIFO). FIFO là một phương pháp tổ chức và thao tác vùng đệm dữ liệu, trong đó mục nhập cũ nhất (đầu tiên) hoặc 'đầu' của hàng đợi, được xử lý trước.

Lý thuyết

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.

Thực tế

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ẻ!

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.
Catálogo
Lição 4

Tạo hợp đồng FIFO

Trong bài học này, chúng ta sẽ đi sâu vào một ví dụ phức tạp hơn về hợp đồng SmartPy: hàng đợi Vào trước, ra trước (FIFO). FIFO là một phương pháp tổ chức và thao tác vùng đệm dữ liệu, trong đó mục nhập cũ nhất (đầu tiên) hoặc 'đầu' của hàng đợi, được xử lý trước.

Lý thuyết

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.

Thực tế

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ẻ!

Exclusão de responsabilidade
* O investimento em criptomoedas envolve riscos significativos. Prossiga com cuidado. O curso não pretende ser um conselho de investimento.
* O curso é criado pelo autor que se juntou ao Gate Learn. Qualquer opinião partilhada pelo autor não representa o Gate Learn.