Lesson 3

Xây dựng máy tính hợp đồng thông minh

Trong bài học này, chúng tôi sẽ tiếp tục mở rộng hiểu biết của bạn về SmartPy và cách nó tương tác với chuỗi khối Tezos bằng cách tạo một máy tính cơ bản. Hợp đồng này sẽ có các chức năng cộng, trừ, nhân và chia.

Lý thuyết

Hợp đồng thông minh trên Tezos có thể có nhiều điểm vào, có thể được coi là phương thức hoặc chức năng trong lập trình hướng đối tượng. Mỗi điểm vào này có thể có các tham số riêng và có thể tương tác với bộ lưu trữ của hợp đồng. Trong hợp đồng máy tính của chúng tôi, mỗi phép toán sẽ là một điểm vào.

Điều quan trọng cần lưu ý là tất cả các sửa đổi của bộ lưu trữ đều được ghi lại trên blockchain. Do đó, các thao tác chúng tôi thực hiện không nhất thời như trong máy tính thông thường. Thay vào đó, chúng là các hoạt động bất biến và có thể kiểm tra được trên chuỗi khối Tezos.

Ngoài ra, cần nhớ rằng vì chuỗi khối Tezos được phân cấp nên tất cả các tính toán phải mang tính xác định. Điều này có nghĩa là các phép tính như phép chia có thể hoạt động hơi khác so với cách bạn thường làm. Ví dụ: phép chia trong hợp đồng Tezos là phép chia số nguyên, vì vậy 3 chia cho 2 sẽ bằng 1 chứ không phải 1,5.

Thực tế

Dưới đây là mã hợp đồng cho máy tính. Hợp đồng Calculator lưu trữ kết quả của các hoạt động trong bộ lưu trữ của nó. Mỗi điểm vào lấy một tham số và thực hiện thao tác với kết quả được lưu trữ và tham số đầu vào.

Python 
 import smartpy as sp 


 @sp.module 
 def main(): 
 class Máy tính(sp.Contract): 
 def __init__(self): 
 self.data.result = 0 

 @sp.entrypoint 
 def nhân(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): 
 khẳng định x >= 0 
 y = x 
 while y * y > x : 
 y = (x / y + y) / 2 
 khẳng định y * y <= x và x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def giai thừa(self, x): 
 self.data.result = 1 
 cho y trong phạm vi(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 khẳng định x > 0, "Đầu vào phải lớn hơn 0" 

 self.data.result = 0 # Khởi tạo bộ đếm 

 nếu x < 1: # Đối với khoảng 0 < x < 1 
 y = x 
 trong khi y < 1: 
 self.data.result -= 1 # Giảm bộ đếm 
 y *= 2 # Nhân y với 2 cho đến khi y >= 1 
 else: # Với x >= 1 
 y = x 
 trong khi y >= 2: 
 self.data.result += 1 # Tăng bộ đếm 
 y /= 2 # Chia y cho 2 


 nếu "mẫu" không có trong __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 kịch bản = sp.test_scenario(main)
        script.h1("Máy tính")
        kịch bản += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        script.verify(c1.data.result == 524)

Hãy thực hiện hợp đồng này!

Bước 1: Dán mã hợp đồng vào SmartPy IDE.

Bước 2: Nhấp vào nút Run ở phía trên bên phải để biên dịch và mô phỏng hợp đồng.

Bước 3: Quan sát kết quả mô phỏng ở phía bên phải của IDE. Bạn có thể xem trạng thái của bộ lưu trữ hợp đồng sau mỗi thao tác, như nhân, cộng, căn bậc hai, v.v.

Bước 4: Vui lòng sửa đổi các tham số cho các thao tác và quan sát những thay đổi trong việc lưu trữ hợp đồng!

Bây giờ bạn đã xây dựng và tương tác với một hợp đồng thông minh thực hiện các thao tác máy tính cơ bản! Trong bài học tiếp theo, chúng ta sẽ xem xét các khái niệm nâng cao hơn như tạo hợp đồng FIFO. Hãy nhớ tiếp tục khám phá và viết mã vui vẻ!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.
Catalog
Lesson 3

Xây dựng máy tính hợp đồng thông minh

Trong bài học này, chúng tôi sẽ tiếp tục mở rộng hiểu biết của bạn về SmartPy và cách nó tương tác với chuỗi khối Tezos bằng cách tạo một máy tính cơ bản. Hợp đồng này sẽ có các chức năng cộng, trừ, nhân và chia.

Lý thuyết

Hợp đồng thông minh trên Tezos có thể có nhiều điểm vào, có thể được coi là phương thức hoặc chức năng trong lập trình hướng đối tượng. Mỗi điểm vào này có thể có các tham số riêng và có thể tương tác với bộ lưu trữ của hợp đồng. Trong hợp đồng máy tính của chúng tôi, mỗi phép toán sẽ là một điểm vào.

Điều quan trọng cần lưu ý là tất cả các sửa đổi của bộ lưu trữ đều được ghi lại trên blockchain. Do đó, các thao tác chúng tôi thực hiện không nhất thời như trong máy tính thông thường. Thay vào đó, chúng là các hoạt động bất biến và có thể kiểm tra được trên chuỗi khối Tezos.

Ngoài ra, cần nhớ rằng vì chuỗi khối Tezos được phân cấp nên tất cả các tính toán phải mang tính xác định. Điều này có nghĩa là các phép tính như phép chia có thể hoạt động hơi khác so với cách bạn thường làm. Ví dụ: phép chia trong hợp đồng Tezos là phép chia số nguyên, vì vậy 3 chia cho 2 sẽ bằng 1 chứ không phải 1,5.

Thực tế

Dưới đây là mã hợp đồng cho máy tính. Hợp đồng Calculator lưu trữ kết quả của các hoạt động trong bộ lưu trữ của nó. Mỗi điểm vào lấy một tham số và thực hiện thao tác với kết quả được lưu trữ và tham số đầu vào.

Python 
 import smartpy as sp 


 @sp.module 
 def main(): 
 class Máy tính(sp.Contract): 
 def __init__(self): 
 self.data.result = 0 

 @sp.entrypoint 
 def nhân(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): 
 khẳng định x >= 0 
 y = x 
 while y * y > x : 
 y = (x / y + y) / 2 
 khẳng định y * y <= x và x < (y + 1) * (y + 1) 
 self.data.result = y 

 @sp.entrypoint 
 def giai thừa(self, x): 
 self.data.result = 1 
 cho y trong phạm vi(1, x + 1): 
 self.data.result *= y 

 @sp.entrypoint 
 def log2(self, x) : 
 khẳng định x > 0, "Đầu vào phải lớn hơn 0" 

 self.data.result = 0 # Khởi tạo bộ đếm 

 nếu x < 1: # Đối với khoảng 0 < x < 1 
 y = x 
 trong khi y < 1: 
 self.data.result -= 1 # Giảm bộ đếm 
 y *= 2 # Nhân y với 2 cho đến khi y >= 1 
 else: # Với x >= 1 
 y = x 
 trong khi y >= 2: 
 self.data.result += 1 # Tăng bộ đếm 
 y /= 2 # Chia y cho 2 


 nếu "mẫu" không có trong __name__: 

 @sp.add_test(name="Calculator") 
 def test( ): 
 c1 = main.Calculator() 
 kịch bản = sp.test_scenario(main)
        script.h1("Máy tính")
        kịch bản += c1 
 c1.multiply(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.add(x=2, y=5) 
 c1.square(12) 
 c1.squareRoot(0) 
 c1.squareRoot(1234) 
 c1.factorial(100) 
 c1.log2(c1.data.result)
        script.verify(c1.data.result == 524)

Hãy thực hiện hợp đồng này!

Bước 1: Dán mã hợp đồng vào SmartPy IDE.

Bước 2: Nhấp vào nút Run ở phía trên bên phải để biên dịch và mô phỏng hợp đồng.

Bước 3: Quan sát kết quả mô phỏng ở phía bên phải của IDE. Bạn có thể xem trạng thái của bộ lưu trữ hợp đồng sau mỗi thao tác, như nhân, cộng, căn bậc hai, v.v.

Bước 4: Vui lòng sửa đổi các tham số cho các thao tác và quan sát những thay đổi trong việc lưu trữ hợp đồng!

Bây giờ bạn đã xây dựng và tương tác với một hợp đồng thông minh thực hiện các thao tác máy tính cơ bản! Trong bài học tiếp theo, chúng ta sẽ xem xét các khái niệm nâng cao hơn như tạo hợp đồng FIFO. Hãy nhớ tiếp tục khám phá và viết mã vui vẻ!

Disclaimer
* Crypto investment involves significant risks. Please proceed with caution. The course is not intended as investment advice.
* The course is created by the author who has joined Gate Learn. Any opinion shared by the author does not represent Gate Learn.