Leçon 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!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.
Catalogue
Leçon 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!

Clause de non-responsabilité
* Les investissements en cryptomonnaies comportent des risques importants. Veuillez faire preuve de prudence. Le cours n'est pas destiné à fournir des conseils en investissement.
* Ce cours a été créé par l'auteur qui a rejoint Gate Learn. Toute opinion partagée par l'auteur ne représente pas Gate Learn.