บทเรียนที่ 2

Menyimpan Nilai dalam Kontrak

Halo dan selamat datang kembali! Dalam pelajaran pertama kami, kami memperkenalkan Anda pada SmartPy dan Tezos dengan membuat kontrak pintar yang sangat mendasar. Dalam pelajaran ini, kita akan mempelajari lebih dalam salah satu komponen terpenting dari kontrak pintar Tezos: Penyimpanan.

Apa itu Penyimpanan?

Dalam kontrak pintar Tezos, Penyimpanan seperti memori kontrak. Ini adalah tempat di mana semua data yang relevan dengan kontrak disimpan. Pada dasarnya, ini bertindak sebagai status kontrak kami, menyimpan nilai-nilai yang bertahan di berbagai transaksi dan memungkinkan kontrak cerdas untuk 'mengingat' informasi. Kemampuan inilah yang memungkinkan kami membangun aplikasi terdesentralisasi yang kompleks dan menarik di blockchain Tezos.

Memahami Penyimpanan Secara Mendalam

Sebelum kita mendalami kode untuk pelajaran ini, mari kita uraikan konsep penyimpanan lebih jauh lagi. Penyimpanan kontrak adalah keadaan yang bertahan di antara pemanggilan fungsi. Jika Anda berasal dari latar belakang pemrograman tradisional, Anda dapat menganggapnya sebagai 'keadaan global' dalam kontrak. Inilah yang memungkinkan pengguna untuk melakukan interaksi berkelanjutan dengan kontrak dari waktu ke waktu.

Sekarang, mari kita lihat kode kontrak kita untuk pelajaran ini:

Python 
 impor smartpy sebagai sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, value): 
 self.data.storedValue = nilai 

 @sp.entrypoint 
 def replace(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def membagi(self , params): 
 menegaskan params.divisor > 5 
 self.data.storedValue /= params.divisor 


 jika "templat" tidak ada di __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 skenario = sp.test_scenario(main)
        skenario.h1("Simpan Nilai") 
 skenario += c1 
 c1.replace(nilai=15) 
 skenario.p("Beberapa komputasi").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            valid=False, pengecualian="Kondisi Salah: params.divisor > 5" 
 ) 
 skenario.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 skenario.verify(c1.data.storedValue == 8)

Jalankan dan Hancurkan Kode

Dalam contoh kontrak penyimpanan kami, kami memiliki beberapa titik masuk - replace, double, dan divide. Setelah menerapkan kontrak ini, pengguna dapat menghubungi titik masuk ini untuk berinteraksi dengan kontrak.

Untuk titik masuk replace dan divide , pengguna harus memberikan parameter dalam transaksi. Untuk replace, diperlukan value parameter, dan untuk divide, diperlukan divisor parameter.

Saat Anda menjalankan kontrak ini di SmartPy IDE, di sisi kanan, Anda akan melihat representasi visual dari operasi dan penyimpanan kontrak. Anda sebenarnya dapat mensimulasikan interaksi pengguna di sini. Berikut panduan langkah demi langkah:

  1. Terapkan kontrak Anda dengan mengklik tombol Deploy .

  2. Setelah penerapan, Anda akan melihat kontrak diwakili di bawah Contracts. Klik di atasnya.

  3. Sekarang Anda akan melihat titik masuk untuk kontrak terdaftar.

  4. Untuk memanggil replace, masukkan nilai params.value di kolom, lalu klik tombol replace .

  5. Untuk memanggil double, cukup klik tombol double .

  6. Untuk memanggil divide, masukkan nilai params.divisor pada kolom, lalu klik tombol divide .
    Setiap interaksi ini akan membuat operasi baru yang tercantum dalam kontrak, dan Anda dapat melihat status penyimpanan kontrak yang diperbarui setelah setiap operasi.

Dalam kontrak ini, kami menekankan konsep penyimpanan dengan baris self.data.storedValue = value. Di sini, self.data mengacu pada penyimpanan kontrak kami. Di sinilah kita menjaga status kontrak kita: satu parameter storedValue.

Kami juga memiliki beberapa titik masuk dalam kontrak ini. Titik masuk pada dasarnya adalah fungsi publik yang memungkinkan pihak eksternal berinteraksi dengan kontrak. Di sini, titik masuk kami memungkinkan modifikasi storedValue dengan berbagai cara. Kita bisa menggantinya dengan nilai baru, menggandakannya, atau membaginya dengan pembagi tertentu.

Selanjutnya, mari kita pertimbangkan skenario pengujian yang telah kita siapkan. Kami membuat instance kontrak kami dengan nilai awal 12 storedValue. Kami kemudian memanggil titik masuk kami untuk mengubah storedValue dengan berbagai cara dan memvalidasi hasilnya.

Mengapa Penyimpanan Penting?

Kemampuan untuk menyimpan dan memperbarui nilai dalam penyimpanan kontrak merupakan hal mendasar dalam membangun kontrak pintar Tezos. Hal ini memungkinkan persistensi data di berbagai interaksi dengan kontrak. Baik itu menjaga saldo dalam kontrak token, menyimpan informasi pengguna dalam aplikasi terdesentralisasi, atau mempertahankan keadaan permainan di blockchain, penyimpanan adalah fitur inti yang memfasilitasi fungsi-fungsi ini.

Penyimpanan dalam kontrak pintar dapat berisi nilai sederhana seperti bilangan bulat, string, dan boolean, atau struktur data yang lebih kompleks seperti daftar, peta, dan objek yang ditentukan khusus. Hal ini memungkinkan kami membangun logika kompleks dan transisi status dalam kontrak kami.

Pada pelajaran berikutnya, kami akan terus mengembangkan konsep inti ini, memperkenalkan komputasi yang lebih kompleks dalam kontrak pintar, dan mulai bekerja dengan tipe data yang lebih canggih dalam penyimpanan kontrak kami. Jadi, pantau terus dan ingat: latihan membuat sempurna. Jangan ragu untuk bereksperimen dengan kode, melakukan modifikasi, dan mengamati hasilnya!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn
แคตตาล็อก
บทเรียนที่ 2

Menyimpan Nilai dalam Kontrak

Halo dan selamat datang kembali! Dalam pelajaran pertama kami, kami memperkenalkan Anda pada SmartPy dan Tezos dengan membuat kontrak pintar yang sangat mendasar. Dalam pelajaran ini, kita akan mempelajari lebih dalam salah satu komponen terpenting dari kontrak pintar Tezos: Penyimpanan.

Apa itu Penyimpanan?

Dalam kontrak pintar Tezos, Penyimpanan seperti memori kontrak. Ini adalah tempat di mana semua data yang relevan dengan kontrak disimpan. Pada dasarnya, ini bertindak sebagai status kontrak kami, menyimpan nilai-nilai yang bertahan di berbagai transaksi dan memungkinkan kontrak cerdas untuk 'mengingat' informasi. Kemampuan inilah yang memungkinkan kami membangun aplikasi terdesentralisasi yang kompleks dan menarik di blockchain Tezos.

Memahami Penyimpanan Secara Mendalam

Sebelum kita mendalami kode untuk pelajaran ini, mari kita uraikan konsep penyimpanan lebih jauh lagi. Penyimpanan kontrak adalah keadaan yang bertahan di antara pemanggilan fungsi. Jika Anda berasal dari latar belakang pemrograman tradisional, Anda dapat menganggapnya sebagai 'keadaan global' dalam kontrak. Inilah yang memungkinkan pengguna untuk melakukan interaksi berkelanjutan dengan kontrak dari waktu ke waktu.

Sekarang, mari kita lihat kode kontrak kita untuk pelajaran ini:

Python 
 impor smartpy sebagai sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, value): 
 self.data.storedValue = nilai 

 @sp.entrypoint 
 def replace(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def membagi(self , params): 
 menegaskan params.divisor > 5 
 self.data.storedValue /= params.divisor 


 jika "templat" tidak ada di __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 skenario = sp.test_scenario(main)
        skenario.h1("Simpan Nilai") 
 skenario += c1 
 c1.replace(nilai=15) 
 skenario.p("Beberapa komputasi").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            valid=False, pengecualian="Kondisi Salah: params.divisor > 5" 
 ) 
 skenario.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 skenario.verify(c1.data.storedValue == 8)

Jalankan dan Hancurkan Kode

Dalam contoh kontrak penyimpanan kami, kami memiliki beberapa titik masuk - replace, double, dan divide. Setelah menerapkan kontrak ini, pengguna dapat menghubungi titik masuk ini untuk berinteraksi dengan kontrak.

Untuk titik masuk replace dan divide , pengguna harus memberikan parameter dalam transaksi. Untuk replace, diperlukan value parameter, dan untuk divide, diperlukan divisor parameter.

Saat Anda menjalankan kontrak ini di SmartPy IDE, di sisi kanan, Anda akan melihat representasi visual dari operasi dan penyimpanan kontrak. Anda sebenarnya dapat mensimulasikan interaksi pengguna di sini. Berikut panduan langkah demi langkah:

  1. Terapkan kontrak Anda dengan mengklik tombol Deploy .

  2. Setelah penerapan, Anda akan melihat kontrak diwakili di bawah Contracts. Klik di atasnya.

  3. Sekarang Anda akan melihat titik masuk untuk kontrak terdaftar.

  4. Untuk memanggil replace, masukkan nilai params.value di kolom, lalu klik tombol replace .

  5. Untuk memanggil double, cukup klik tombol double .

  6. Untuk memanggil divide, masukkan nilai params.divisor pada kolom, lalu klik tombol divide .
    Setiap interaksi ini akan membuat operasi baru yang tercantum dalam kontrak, dan Anda dapat melihat status penyimpanan kontrak yang diperbarui setelah setiap operasi.

Dalam kontrak ini, kami menekankan konsep penyimpanan dengan baris self.data.storedValue = value. Di sini, self.data mengacu pada penyimpanan kontrak kami. Di sinilah kita menjaga status kontrak kita: satu parameter storedValue.

Kami juga memiliki beberapa titik masuk dalam kontrak ini. Titik masuk pada dasarnya adalah fungsi publik yang memungkinkan pihak eksternal berinteraksi dengan kontrak. Di sini, titik masuk kami memungkinkan modifikasi storedValue dengan berbagai cara. Kita bisa menggantinya dengan nilai baru, menggandakannya, atau membaginya dengan pembagi tertentu.

Selanjutnya, mari kita pertimbangkan skenario pengujian yang telah kita siapkan. Kami membuat instance kontrak kami dengan nilai awal 12 storedValue. Kami kemudian memanggil titik masuk kami untuk mengubah storedValue dengan berbagai cara dan memvalidasi hasilnya.

Mengapa Penyimpanan Penting?

Kemampuan untuk menyimpan dan memperbarui nilai dalam penyimpanan kontrak merupakan hal mendasar dalam membangun kontrak pintar Tezos. Hal ini memungkinkan persistensi data di berbagai interaksi dengan kontrak. Baik itu menjaga saldo dalam kontrak token, menyimpan informasi pengguna dalam aplikasi terdesentralisasi, atau mempertahankan keadaan permainan di blockchain, penyimpanan adalah fitur inti yang memfasilitasi fungsi-fungsi ini.

Penyimpanan dalam kontrak pintar dapat berisi nilai sederhana seperti bilangan bulat, string, dan boolean, atau struktur data yang lebih kompleks seperti daftar, peta, dan objek yang ditentukan khusus. Hal ini memungkinkan kami membangun logika kompleks dan transisi status dalam kontrak kami.

Pada pelajaran berikutnya, kami akan terus mengembangkan konsep inti ini, memperkenalkan komputasi yang lebih kompleks dalam kontrak pintar, dan mulai bekerja dengan tipe data yang lebih canggih dalam penyimpanan kontrak kami. Jadi, pantau terus dan ingat: latihan membuat sempurna. Jangan ragu untuk bereksperimen dengan kode, melakukan modifikasi, dan mengamati hasilnya!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn