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.
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!
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.
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!