Bài học 3

Membangun Kalkulator Kontrak Cerdas

Dalam pelajaran ini, kami akan terus memperluas pemahaman Anda tentang SmartPy dan cara berinteraksi dengan blockchain Tezos dengan membuat kalkulator dasar. Kontrak ini akan memiliki fungsi penjumlahan, pengurangan, perkalian, dan pembagian.

Teori

Kontrak pintar di Tezos dapat memiliki beberapa titik masuk, yang dapat dilihat sebagai metode atau fungsi dalam pemrograman berorientasi objek. Masing-masing titik masuk ini dapat memiliki parameternya sendiri dan dapat berinteraksi dengan penyimpanan kontrak. Dalam kontrak kalkulator kami, setiap operasi matematika akan menjadi titik masuk.

Penting untuk dicatat bahwa semua modifikasi penyimpanan dicatat di blockchain. Hasilnya, operasi yang kami lakukan tidak bersifat sementara seperti pada kalkulator biasa. Sebaliknya, ini adalah operasi yang tidak dapat diubah dan diaudit pada blockchain Tezos.

Selain itu, perlu diingat bahwa karena blockchain Tezos terdesentralisasi, semua perhitungan harus bersifat deterministik. Ini berarti operasi seperti pembagian mungkin bekerja sedikit berbeda dari biasanya. Misalnya, pembagian dalam kontrak Tezos adalah pembagian bilangan bulat, jadi 3 dibagi 2 akan menghasilkan 1, bukan 1,5.

Praktis

Di bawah ini adalah kode kontrak untuk kalkulator. Kontrak Calculator menyimpan hasil operasi dalam penyimpanannya. Setiap titik masuk mengambil satu parameter dan melakukan operasi dengan hasil yang disimpan dan parameter masukan.

Python 
 impor smartpy sebagai sp 


 @sp.module 
 def main(): 
 kelas Kalkulator(sp.Kontrak): 
 def __init__(mandiri): 
 self.data.result = 0 

 @sp.entrypoint 
 def kalikan(self, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def add(self, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 menegaskan x >= 0 
 y = x 
 while y * y > x : 
 y = (x / y + y) / 2 
 menegaskan y * y <= x dan x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def faktorial(self, x): 
 self.data.result = 1 
 untuk y dalam rentang(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 tegaskan x > 0, “Input harus lebih besar dari 0” 

 self.data.result = 0 # Inisialisasi counter 

 jika x < 1: # Untuk interval 0 < x < 1 
 y = x 
 sedangkan y < 1: 
 self.data.result -= 1 # Kurangi penghitung 
 y *= 2 # Kalikan y dengan 2 hingga y >= 1 
 else: # Untuk x >= 1 
 y = x 
 sedangkan y >= 2: 
 self.data.result += 1 # Menambah penghitung 
 y /= 2 # Bagi y dengan 2 


 jika "template" tidak ada di __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 skenario = sp.test_scenario(main)
        skenario.h1("Kalkulator")
        skenario += c1 
 c1.kalikan(x=2, y=5) 
 c1.tambahkan(x=2, y=5) 
 c1.tambahkan(x=2, y=5) 
 c1.persegi(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.faktorial(100) 
 c1.log2(c1.data.hasil)
        skenario.verifikasi(c1.data.hasil == 524)

Mari kita wujudkan kontrak ini!

Langkah 1: Tempelkan kode kontrak ke dalam SmartPy IDE.

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

Langkah 3: Amati hasil simulasi di sisi kanan IDE. Anda dapat melihat status penyimpanan kontrak setelah setiap operasi, seperti perkalian, penjumlahan, akar kuadrat, dll

Langkah 4: Jangan ragu untuk mengubah parameter operasi dan mengamati perubahan dalam penyimpanan kontrak!

Anda sekarang telah membuat dan berinteraksi dengan kontrak pintar yang melakukan operasi kalkulator dasar! Pada pelajaran berikutnya, kita akan melihat konsep lebih lanjut seperti pembuatan kontrak FIFO. Ingatlah untuk terus 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 3

Membangun Kalkulator Kontrak Cerdas

Dalam pelajaran ini, kami akan terus memperluas pemahaman Anda tentang SmartPy dan cara berinteraksi dengan blockchain Tezos dengan membuat kalkulator dasar. Kontrak ini akan memiliki fungsi penjumlahan, pengurangan, perkalian, dan pembagian.

Teori

Kontrak pintar di Tezos dapat memiliki beberapa titik masuk, yang dapat dilihat sebagai metode atau fungsi dalam pemrograman berorientasi objek. Masing-masing titik masuk ini dapat memiliki parameternya sendiri dan dapat berinteraksi dengan penyimpanan kontrak. Dalam kontrak kalkulator kami, setiap operasi matematika akan menjadi titik masuk.

Penting untuk dicatat bahwa semua modifikasi penyimpanan dicatat di blockchain. Hasilnya, operasi yang kami lakukan tidak bersifat sementara seperti pada kalkulator biasa. Sebaliknya, ini adalah operasi yang tidak dapat diubah dan diaudit pada blockchain Tezos.

Selain itu, perlu diingat bahwa karena blockchain Tezos terdesentralisasi, semua perhitungan harus bersifat deterministik. Ini berarti operasi seperti pembagian mungkin bekerja sedikit berbeda dari biasanya. Misalnya, pembagian dalam kontrak Tezos adalah pembagian bilangan bulat, jadi 3 dibagi 2 akan menghasilkan 1, bukan 1,5.

Praktis

Di bawah ini adalah kode kontrak untuk kalkulator. Kontrak Calculator menyimpan hasil operasi dalam penyimpanannya. Setiap titik masuk mengambil satu parameter dan melakukan operasi dengan hasil yang disimpan dan parameter masukan.

Python 
 impor smartpy sebagai sp 


 @sp.module 
 def main(): 
 kelas Kalkulator(sp.Kontrak): 
 def __init__(mandiri): 
 self.data.result = 0 

 @sp.entrypoint 
 def kalikan(self, x, y): 
 self.data.result = x * y 

 @sp.entrypoint 
 def add(self, x, y): 
 self.data.result = x + y 

 @sp.entrypoint 
 def square(self, x): 
 self.data.result = x * x 

 @sp.entrypoint 
 def squareRoot(self, x): 
 menegaskan x >= 0 
 y = x 
 while y * y > x : 
 y = (x / y + y) / 2 
 menegaskan y * y <= x dan x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def faktorial(self, x): 
 self.data.result = 1 
 untuk y dalam rentang(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 tegaskan x > 0, “Input harus lebih besar dari 0” 

 self.data.result = 0 # Inisialisasi counter 

 jika x < 1: # Untuk interval 0 < x < 1 
 y = x 
 sedangkan y < 1: 
 self.data.result -= 1 # Kurangi penghitung 
 y *= 2 # Kalikan y dengan 2 hingga y >= 1 
 else: # Untuk x >= 1 
 y = x 
 sedangkan y >= 2: 
 self.data.result += 1 # Menambah penghitung 
 y /= 2 # Bagi y dengan 2 


 jika "template" tidak ada di __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 skenario = sp.test_scenario(main)
        skenario.h1("Kalkulator")
        skenario += c1 
 c1.kalikan(x=2, y=5) 
 c1.tambahkan(x=2, y=5) 
 c1.tambahkan(x=2, y=5) 
 c1.persegi(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.faktorial(100) 
 c1.log2(c1.data.hasil)
        skenario.verifikasi(c1.data.hasil == 524)

Mari kita wujudkan kontrak ini!

Langkah 1: Tempelkan kode kontrak ke dalam SmartPy IDE.

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

Langkah 3: Amati hasil simulasi di sisi kanan IDE. Anda dapat melihat status penyimpanan kontrak setelah setiap operasi, seperti perkalian, penjumlahan, akar kuadrat, dll

Langkah 4: Jangan ragu untuk mengubah parameter operasi dan mengamati perubahan dalam penyimpanan kontrak!

Anda sekarang telah membuat dan berinteraksi dengan kontrak pintar yang melakukan operasi kalkulator dasar! Pada pelajaran berikutnya, kita akan melihat konsep lebih lanjut seperti pembuatan kontrak FIFO. Ingatlah untuk terus 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.