
Đây là phần thứ 3 trong loạt bài viết giáo dục về cách tạo hợp đồng thông minh bằng Python trên mạng chuỗi khối Ontology. Ở các bài trước chúng ta đã làm quen với
- .
Bây giờ bạn đã biết cách gọi API lưu trữ liên tục thích hợp khi phát triển hợp đồng thông minh bằng Python trên mạng Ontology, hãy chuyển sang tìm hiểu cách sử dụng API thời gian chạy (API thực thi hợp đồng). API thời gian chạy có 8 API liên quan cung cấp các giao diện chung để thực thi hợp đồng và giúp nhà phát triển truy xuất, chuyển đổi và xác thực dữ liệu.
Dưới đây là mô tả ngắn gọn về 8 dữ liệu API:

Chúng ta hãy xem xét kỹ hơn cách sử dụng dữ liệu 8 API. Trước đó, bạn có thể tạo hợp đồng mới trong công cụ phát triển hợp đồng thông minh Ontology và làm theo hướng dẫn bên dưới.
Cách sử dụng API thời gian chạy
Có hai cách để nhập khẩu API thời gian chạy: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Đường dẫn Ontology chứa các API mới được thêm vào. Các dòng bên dưới nhập dữ liệu API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI thông báo
Chức năng Thông báo sẽ phát sóng sự kiện trên toàn mạng. Trong ví dụ bên dưới, hàm Notify sẽ trả về chuỗi hex “hello word” và phát nó trên toàn mạng.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Bạn có thể thấy điều này trong nhật ký:

API GetTime
Hàm GetTime trả về dấu thời gian hiện tại, trả về thời gian Unix mà hàm được gọi. Đơn vị đo là thứ hai.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numAPI GetCurrentBlockHash
Hàm GetCurrentBlockHash trả về giá trị băm của khối hiện tại.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashTuần tự hóa và giải tuần tự hóa
Đây là một cặp chức năng tuần tự hóa và giải tuần tự hóa. Hàm Serialize chuyển đổi một đối tượng thành đối tượng bytearray và hàm Deserialize chuyển đổi một bytearray thành đối tượng ban đầu. Mẫu mã bên dưới chuyển đổi các tham số đến và lưu trữ chúng trong bộ lưu trữ liên tục của hợp đồng. Nó cũng lấy dữ liệu từ bộ lưu trữ liên tục của hợp đồng và biến nó thành đối tượng ban đầu.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
if operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
if operation == 'deserialize_from_bytearray':
key = args[0]
return deserialize_from_bytearray(key)
return False
def serialize_to_bytearray(data):
sc = GetContext()
key = "1"
byte_data = Serialize(data)
Put(sc, key, byte_data)
def deserialize_from_bytearray(key):
sc = GetContext()
byte_data = Get(sc, key)
data = Deserialize(byte_data)
return dataBase58ToĐịa chỉ và Địa chỉToBase58
Cặp chức năng dịch địa chỉ này. Hàm Base58ToAddress chuyển đổi địa chỉ được mã hóa base58 thành địa chỉ bytearray và addressToBase58 chuyển đổi địa chỉ bytearray thành địa chỉ được mã hóa base58.
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)Kiểm tra nhân chứng
Hàm CheckWitness(fromAcct) có hai chức năng:
- Xác minh xem người gọi hàm hiện tại có phải là từAcct hay không. Nếu có (nghĩa là xác minh chữ ký đã được thông qua), hàm sẽ trả về.
- Kiểm tra xem đối tượng gọi hàm hiện tại có phải là hợp đồng hay không. Nếu đó là một hợp đồng và chức năng được thực thi từ hợp đồng thì quá trình xác minh sẽ được thông qua. Tức là, hãy xác minh xem fromAcct có phải là giá trị trả về của GetCallingScriptHash() hay không. Hàm GetCallingScriptHash() có thể lấy giá trị băm hợp đồng của hợp đồng thông minh hiện tại.
GetCallingScriptHash():
Thêm về
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resThông tin thêm có thể được tìm thấy tại . Ở bài viết tiếp theo chúng tôi sẽ giới thiệu API gốcđể tìm hiểu cách chuyển tài sản trong hợp đồng thông minh Ontology.
Bài viết được dịch bởi các biên tập viên đặc biệt là đối với OntologyNga.
Bạn có phải là nhà phát triển? Tham gia cộng đồng công nghệ của chúng tôi tại . Ngoài ra, hãy xem Ontology, bạn có thể tìm thấy nhiều công cụ, tài liệu hơn và nhiều thứ khác ở đó.
Hoàn thành nhiệm vụ và nhận phần thưởng.
cho chương trình tài năng Ontology dành cho sinh viên
Bản thể học
- - - - -
Nguồn: www.habr.com
