Bài học 2

Lưu trữ giá trị trong hợp đồng

Xin chào và chào mừng trở lại! Trong bài học đầu tiên, chúng tôi đã giới thiệu cho bạn SmartPy và Tezos bằng cách tạo một hợp đồng thông minh rất cơ bản. Trong bài học này, chúng ta sẽ tìm hiểu sâu hơn về một trong những thành phần thiết yếu nhất của bất kỳ hợp đồng thông minh Tezos nào: Lưu trữ.

Lưu trữ là gì?

Trong hợp đồng thông minh Tezos, Lưu trữ giống như bộ nhớ của hợp đồng. Đây là nơi lưu giữ tất cả các dữ liệu liên quan đến hợp đồng. Về cơ bản, nó hoạt động như trạng thái hợp đồng của chúng tôi, lưu trữ các giá trị tồn tại trong các giao dịch khác nhau và cho phép hợp đồng thông minh 'ghi nhớ' thông tin. Chính khả năng này cho phép chúng tôi xây dựng các ứng dụng phi tập trung phức tạp và hấp dẫn trên chuỗi khối Tezos.

Hiểu sâu về lưu trữ

Trước khi đi sâu vào mã của bài học này, hãy chia nhỏ khái niệm lưu trữ thêm một chút. Việc lưu trữ hợp đồng là trạng thái tồn tại giữa các lệnh gọi hàm. Nếu bạn xuất phát từ nền tảng lập trình truyền thống, bạn có thể coi đó là 'trạng thái toàn cầu' của hợp đồng. Đó là thứ cho phép người dùng tương tác liên tục với hợp đồng theo thời gian.

Bây giờ, chúng ta hãy xem mã hợp đồng của chúng tôi cho bài học này:

Python 
 import smartpy as sp 

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

 @sp.entrypoint 
 def thay thế(self, params): 
 self.data.storedValue = params.value 

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

 @sp.entrypoint 
 def chia(self , params): 
 khẳng định params.divisor > 5 
 self.data.storedValue /= params.divisor 


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

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 kịch bản = sp.test_scenario(main)
        script.h1("Cửa hàng Value") 
 kịch bản += c1 
 c1.replace(value=15) 
 kịch bản.p("Một số tính toán").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            valid=False, ngoại lệ="WrongCondition: params.divisor > 5" 
 ) 
 script.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 script.verify(c1.data.storedValue == 8)

Chạy và phân tích mã

Trong ví dụ về hợp đồng lưu trữ, chúng tôi có một số điểm nhập - replace, doubledivide. Sau khi triển khai hợp đồng này, người dùng có thể gọi các điểm vào này để tương tác với hợp đồng.

Đối với các điểm vào replacedivide , người dùng phải cung cấp các tham số trong giao dịch. Đối với replace, cần có một value tham số và đối với divide, cần có divisor tham số.

Khi bạn chạy hợp đồng này trên SmartPy IDE, ở phía bên phải, bạn sẽ thấy phần trình bày trực quan về hoạt động và lưu trữ của hợp đồng. Bạn thực sự có thể mô phỏng tương tác của người dùng ở đây. Đây là hướng dẫn từng bước:

  1. Triển khai hợp đồng của bạn bằng cách nhấp vào nút Deploy .

  2. Sau khi triển khai, bạn sẽ thấy hợp đồng được thể hiện trong Contracts. Nhấn vào nó.

  3. Bây giờ bạn sẽ thấy các điểm vào cho hợp đồng được liệt kê.

  4. Để gọi replace, hãy nhập giá trị cho params.value vào trường, sau đó nhấp vào nút replace .

  5. Để gọi double, chỉ cần nhấp vào nút double .

  6. Để gọi divide, hãy nhập giá trị cho params.divisor vào trường rồi bấm vào nút divide .
    Mỗi tương tác này sẽ tạo ra một hoạt động mới được liệt kê trong hợp đồng và bạn có thể xem trạng thái cập nhật của bộ nhớ hợp đồng sau mỗi hoạt động.

Trong hợp đồng này, chúng tôi nhấn mạnh khái niệm lưu trữ bằng dòng self.data.storedValue = value. Ở đây, self.data đề cập đến việc lưu trữ hợp đồng của chúng tôi. Đây là nơi chúng tôi lưu giữ trạng thái hợp đồng của mình: một tham số duy nhất có tên là storedValue.

Chúng tôi cũng có một số điểm vào trong hợp đồng này. Điểm vào về cơ bản là các chức năng công cộng cho phép các bên bên ngoài tương tác với hợp đồng. Ở đây, điểm vào của chúng tôi cho phép sửa đổi storedValue theo nhiều cách khác nhau. Chúng ta có thể thay thế nó bằng một giá trị mới, nhân đôi nó hoặc chia nó cho một ước số nhất định.

Tiếp theo, hãy xem xét kịch bản thử nghiệm mà chúng tôi đã thiết lập. Chúng tôi tạo một phiên bản hợp đồng của mình với giá trị ban đầu 12 cho storedValue. Sau đó, chúng tôi gọi các điểm vào để sửa đổi giá trị của storedValue theo nhiều cách khác nhau và xác thực kết quả.

Tại sao lưu trữ lại quan trọng?

Khả năng lưu trữ và cập nhật các giá trị trong kho lưu trữ của hợp đồng là nền tảng để xây dựng hợp đồng thông minh Tezos. Nó cho phép duy trì dữ liệu qua các tương tác khác nhau với hợp đồng. Cho dù đó là duy trì số dư trong hợp đồng mã thông báo, lưu trữ thông tin người dùng trong ứng dụng phi tập trung hay giữ trạng thái của trò chơi trên blockchain, lưu trữ là tính năng cốt lõi hỗ trợ các chức năng này.

Bộ lưu trữ trong hợp đồng thông minh có thể chứa các giá trị đơn giản như số nguyên, chuỗi và boolean hoặc các cấu trúc dữ liệu phức tạp hơn như danh sách, bản đồ và các đối tượng được xác định tùy chỉnh. Điều này cho phép chúng tôi xây dựng các chuyển đổi trạng thái và logic phức tạp trong hợp đồng của mình.

Trong bài học tiếp theo, chúng ta sẽ tiếp tục xây dựng dựa trên các khái niệm cốt lõi này, giới thiệu các phép tính phức tạp hơn trong hợp đồng thông minh và bắt đầu làm việc với các loại dữ liệu nâng cao hơn trong bộ lưu trữ hợp đồng của chúng ta. Vì vậy, hãy chú ý theo dõi và ghi nhớ: luyện tập tạo nên sự hoàn hảo. Đừng ngần ngại thử nghiệm mã, sửa đổi và quan sát kết quả!

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 2

Lưu trữ giá trị trong hợp đồng

Xin chào và chào mừng trở lại! Trong bài học đầu tiên, chúng tôi đã giới thiệu cho bạn SmartPy và Tezos bằng cách tạo một hợp đồng thông minh rất cơ bản. Trong bài học này, chúng ta sẽ tìm hiểu sâu hơn về một trong những thành phần thiết yếu nhất của bất kỳ hợp đồng thông minh Tezos nào: Lưu trữ.

Lưu trữ là gì?

Trong hợp đồng thông minh Tezos, Lưu trữ giống như bộ nhớ của hợp đồng. Đây là nơi lưu giữ tất cả các dữ liệu liên quan đến hợp đồng. Về cơ bản, nó hoạt động như trạng thái hợp đồng của chúng tôi, lưu trữ các giá trị tồn tại trong các giao dịch khác nhau và cho phép hợp đồng thông minh 'ghi nhớ' thông tin. Chính khả năng này cho phép chúng tôi xây dựng các ứng dụng phi tập trung phức tạp và hấp dẫn trên chuỗi khối Tezos.

Hiểu sâu về lưu trữ

Trước khi đi sâu vào mã của bài học này, hãy chia nhỏ khái niệm lưu trữ thêm một chút. Việc lưu trữ hợp đồng là trạng thái tồn tại giữa các lệnh gọi hàm. Nếu bạn xuất phát từ nền tảng lập trình truyền thống, bạn có thể coi đó là 'trạng thái toàn cầu' của hợp đồng. Đó là thứ cho phép người dùng tương tác liên tục với hợp đồng theo thời gian.

Bây giờ, chúng ta hãy xem mã hợp đồng của chúng tôi cho bài học này:

Python 
 import smartpy as sp 

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

 @sp.entrypoint 
 def thay thế(self, params): 
 self.data.storedValue = params.value 

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

 @sp.entrypoint 
 def chia(self , params): 
 khẳng định params.divisor > 5 
 self.data.storedValue /= params.divisor 


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

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 kịch bản = sp.test_scenario(main)
        script.h1("Cửa hàng Value") 
 kịch bản += c1 
 c1.replace(value=15) 
 kịch bản.p("Một số tính toán").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            valid=False, ngoại lệ="WrongCondition: params.divisor > 5" 
 ) 
 script.verify(c1.data.storedValue == 50) 
 c1.divide(divisor=6) 
 script.verify(c1.data.storedValue == 8)

Chạy và phân tích mã

Trong ví dụ về hợp đồng lưu trữ, chúng tôi có một số điểm nhập - replace, doubledivide. Sau khi triển khai hợp đồng này, người dùng có thể gọi các điểm vào này để tương tác với hợp đồng.

Đối với các điểm vào replacedivide , người dùng phải cung cấp các tham số trong giao dịch. Đối với replace, cần có một value tham số và đối với divide, cần có divisor tham số.

Khi bạn chạy hợp đồng này trên SmartPy IDE, ở phía bên phải, bạn sẽ thấy phần trình bày trực quan về hoạt động và lưu trữ của hợp đồng. Bạn thực sự có thể mô phỏng tương tác của người dùng ở đây. Đây là hướng dẫn từng bước:

  1. Triển khai hợp đồng của bạn bằng cách nhấp vào nút Deploy .

  2. Sau khi triển khai, bạn sẽ thấy hợp đồng được thể hiện trong Contracts. Nhấn vào nó.

  3. Bây giờ bạn sẽ thấy các điểm vào cho hợp đồng được liệt kê.

  4. Để gọi replace, hãy nhập giá trị cho params.value vào trường, sau đó nhấp vào nút replace .

  5. Để gọi double, chỉ cần nhấp vào nút double .

  6. Để gọi divide, hãy nhập giá trị cho params.divisor vào trường rồi bấm vào nút divide .
    Mỗi tương tác này sẽ tạo ra một hoạt động mới được liệt kê trong hợp đồng và bạn có thể xem trạng thái cập nhật của bộ nhớ hợp đồng sau mỗi hoạt động.

Trong hợp đồng này, chúng tôi nhấn mạnh khái niệm lưu trữ bằng dòng self.data.storedValue = value. Ở đây, self.data đề cập đến việc lưu trữ hợp đồng của chúng tôi. Đây là nơi chúng tôi lưu giữ trạng thái hợp đồng của mình: một tham số duy nhất có tên là storedValue.

Chúng tôi cũng có một số điểm vào trong hợp đồng này. Điểm vào về cơ bản là các chức năng công cộng cho phép các bên bên ngoài tương tác với hợp đồng. Ở đây, điểm vào của chúng tôi cho phép sửa đổi storedValue theo nhiều cách khác nhau. Chúng ta có thể thay thế nó bằng một giá trị mới, nhân đôi nó hoặc chia nó cho một ước số nhất định.

Tiếp theo, hãy xem xét kịch bản thử nghiệm mà chúng tôi đã thiết lập. Chúng tôi tạo một phiên bản hợp đồng của mình với giá trị ban đầu 12 cho storedValue. Sau đó, chúng tôi gọi các điểm vào để sửa đổi giá trị của storedValue theo nhiều cách khác nhau và xác thực kết quả.

Tại sao lưu trữ lại quan trọng?

Khả năng lưu trữ và cập nhật các giá trị trong kho lưu trữ của hợp đồng là nền tảng để xây dựng hợp đồng thông minh Tezos. Nó cho phép duy trì dữ liệu qua các tương tác khác nhau với hợp đồng. Cho dù đó là duy trì số dư trong hợp đồng mã thông báo, lưu trữ thông tin người dùng trong ứng dụng phi tập trung hay giữ trạng thái của trò chơi trên blockchain, lưu trữ là tính năng cốt lõi hỗ trợ các chức năng này.

Bộ lưu trữ trong hợp đồng thông minh có thể chứa các giá trị đơn giản như số nguyên, chuỗi và boolean hoặc các cấu trúc dữ liệu phức tạp hơn như danh sách, bản đồ và các đối tượng được xác định tùy chỉnh. Điều này cho phép chúng tôi xây dựng các chuyển đổi trạng thái và logic phức tạp trong hợp đồng của mình.

Trong bài học tiếp theo, chúng ta sẽ tiếp tục xây dựng dựa trên các khái niệm cốt lõi này, giới thiệu các phép tính phức tạp hơn trong hợp đồng thông minh và bắt đầu làm việc với các loại dữ liệu nâng cao hơn trong bộ lưu trữ hợp đồng của chúng ta. Vì vậy, hãy chú ý theo dõi và ghi nhớ: luyện tập tạo nên sự hoàn hảo. Đừng ngần ngại thử nghiệm mã, sửa đổi và quan sát kết quả!

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.