Урок 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!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.
Каталог
Урок 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!

Отказ от ответственности
* Криптоинвестирование сопряжено со значительными рисками. Будьте осторожны. Курс не является инвестиционным советом.
* Курс создан автором, который присоединился к Gate Learn. Мнение автора может не совпадать с мнением Gate Learn.