Bài học 4

Pembuatan Kontrak FIFO

Dalam pelajaran ini, kita akan mempelajari contoh kontrak SmartPy yang lebih kompleks: antrian First In, First Out (FIFO). FIFO adalah metode pengorganisasian dan manipulasi buffer data, dimana entri terlama (pertama) atau 'kepala' antrian, diproses terlebih dahulu.

Teori

Dalam struktur data FIFO, elemen pertama yang ditambahkan ke antrian akan menjadi elemen pertama yang dihapus. Hal ini setara dengan persyaratan bahwa setelah elemen baru ditambahkan, semua elemen yang ditambahkan sebelumnya harus dihapus sebelum elemen baru dapat dihapus.

Sumber: Invostopedia

Dalam konteks kontrak pintar, penerapan antrean FIFO dapat berguna untuk banyak skenario, seperti sistem antrean yang adil di mana setiap orang dilayani (atau diproses) sesuai urutan masuknya.

Praktis

Mari kita lanjutkan dan tulis kontrak FIFO. Operasi utama untuk kontrak kita adalah push, untuk menambahkan elemen ke antrian, dan pop, untuk menghapus elemen dari antrian.

Kontrak menyimpan antrian dalam daftar di penyimpanannya, dan setiap operasi push menambahkan elemen ke akhir daftar, sementara setiap operasi pop menghapus elemen dari awal daftar.

Berikut tampilan kontraknya:

Python 
 import smartpy as sp 


 @sp.module 
 def main(): 
 # Kelas Fifo mendefinisikan kontrak sederhana yang menangani instruksi push dan pop 
 # dengan basis first-in first-out.

    class SimpleFifo(sp.Contract): 
 def __init__(mandiri): 
 self.data.first = 0 
 self.data.last = -1 
 self.data.saved = {} 

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

 @sp.entrypoint 
 def push(self, elemen): 
 self.data.last += 1 
 self.data.saved[self.data.last] = elemen 

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


jika "templat" tidak ada di __name__: 

 @sp.add_test(name="Fifo") 
 def test(): 
 skenario = sp.test_scenario(main)
        skenario.h1("Sederhana Kontrak Fifo") 
 c1 = main.SimpleFifo() 
 skenario += c1 
 c1.push(4) 
 c1.push(5) 
 c1.push(6) 
 c1.push(7) 
 c1.pop( ) 
 skenario.verifikasi(sp.View(c1, "head")() == 5)

Untuk menguji kontrak FIFO:

Langkah 1: Salin kode kontrak dan tempel ke SmartPy IDE.

Langkah 2: Klik tombol Run di kanan atas untuk mengkompilasi dan mensimulasikan kontrak.

Langkah 3: Periksa sisi kanan IDE untuk melihat hasil simulasi. Anda akan melihat status penyimpanan kontrak setelah setiap operasi.

Langkah 4: Bereksperimenlah dengan mengubah urutan operasi atau menambahkan operasi baru.

Anda sekarang telah mempelajari cara membuat kontrak FIFO di blockchain Tezos! Pada pelajaran berikutnya, kita akan membahas lebih jauh dengan tampilan rekursif, sebuah fitur canggih dari SmartPy yang memungkinkan kontrak memanggil pandangannya sendiri. Teruslah menjelajah dan selamat coding!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 4

Pembuatan Kontrak FIFO

Dalam pelajaran ini, kita akan mempelajari contoh kontrak SmartPy yang lebih kompleks: antrian First In, First Out (FIFO). FIFO adalah metode pengorganisasian dan manipulasi buffer data, dimana entri terlama (pertama) atau 'kepala' antrian, diproses terlebih dahulu.

Teori

Dalam struktur data FIFO, elemen pertama yang ditambahkan ke antrian akan menjadi elemen pertama yang dihapus. Hal ini setara dengan persyaratan bahwa setelah elemen baru ditambahkan, semua elemen yang ditambahkan sebelumnya harus dihapus sebelum elemen baru dapat dihapus.

Sumber: Invostopedia

Dalam konteks kontrak pintar, penerapan antrean FIFO dapat berguna untuk banyak skenario, seperti sistem antrean yang adil di mana setiap orang dilayani (atau diproses) sesuai urutan masuknya.

Praktis

Mari kita lanjutkan dan tulis kontrak FIFO. Operasi utama untuk kontrak kita adalah push, untuk menambahkan elemen ke antrian, dan pop, untuk menghapus elemen dari antrian.

Kontrak menyimpan antrian dalam daftar di penyimpanannya, dan setiap operasi push menambahkan elemen ke akhir daftar, sementara setiap operasi pop menghapus elemen dari awal daftar.

Berikut tampilan kontraknya:

Python 
 import smartpy as sp 


 @sp.module 
 def main(): 
 # Kelas Fifo mendefinisikan kontrak sederhana yang menangani instruksi push dan pop 
 # dengan basis first-in first-out.

    class SimpleFifo(sp.Contract): 
 def __init__(mandiri): 
 self.data.first = 0 
 self.data.last = -1 
 self.data.saved = {} 

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

 @sp.entrypoint 
 def push(self, elemen): 
 self.data.last += 1 
 self.data.saved[self.data.last] = elemen 

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


jika "templat" tidak ada di __name__: 

 @sp.add_test(name="Fifo") 
 def test(): 
 skenario = sp.test_scenario(main)
        skenario.h1("Sederhana Kontrak Fifo") 
 c1 = main.SimpleFifo() 
 skenario += c1 
 c1.push(4) 
 c1.push(5) 
 c1.push(6) 
 c1.push(7) 
 c1.pop( ) 
 skenario.verifikasi(sp.View(c1, "head")() == 5)

Untuk menguji kontrak FIFO:

Langkah 1: Salin kode kontrak dan tempel ke SmartPy IDE.

Langkah 2: Klik tombol Run di kanan atas untuk mengkompilasi dan mensimulasikan kontrak.

Langkah 3: Periksa sisi kanan IDE untuk melihat hasil simulasi. Anda akan melihat status penyimpanan kontrak setelah setiap operasi.

Langkah 4: Bereksperimenlah dengan mengubah urutan operasi atau menambahkan operasi baru.

Anda sekarang telah mempelajari cara membuat kontrak FIFO di blockchain Tezos! Pada pelajaran berikutnya, kita akan membahas lebih jauh dengan tampilan rekursif, sebuah fitur canggih dari SmartPy yang memungkinkan kontrak memanggil pandangannya sendiri. Teruslah menjelajah dan selamat coding!

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.