Prohoster > Blog > quản lý > Cách viết hợp đồng thông minh bằng Python trên mạng Ontology. Phần 1: Chuỗi khối & API khối
Cách viết hợp đồng thông minh bằng Python trên mạng Ontology. Phần 1: Chuỗi khối & API khối
Đây là phần đầu tiên trong loạt bài hướng dẫn tạo hợp đồng thông minh Python trên mạng chuỗi khối Ontology bằng công cụ phát triển hợp đồng thông minh. SmartX.
Trong bài viết này, chúng ta sẽ bắt đầu làm quen với API hợp đồng thông minh Ontology. API hợp đồng thông minh Ontology được chia thành 7 mô-đun:
Chuỗi khối & API khối,
API thời gian chạy,
API lưu trữ,
API gốc,
Nâng cấp API,
API công cụ thực thi và
API cuộc gọi tĩnh & động.
Blockchain & Block API là phần chính của hệ thống hợp đồng thông minh Ontology. API chuỗi khối hỗ trợ các hoạt động truy vấn chuỗi khối cơ bản, chẳng hạn như lấy chiều cao khối hiện tại, trong khi API khối hỗ trợ các hoạt động truy vấn khối cơ bản, chẳng hạn như truy vấn số lượng giao dịch cho một khối nhất định.
Bắt đầu nào!
Đầu tiên, tạo một hợp đồng mới trong SmartXvà sau đó làm theo các hướng dẫn dưới đây.
1. Cách sử dụng Blockchain API
Liên kết đến các chức năng hợp đồng thông minh giống với liên kết Python. Bạn có thể nhập các chức năng tương ứng nếu cần. Ví dụ: câu lệnh sau giới thiệu hàm GetHeight để lấy chiều cao khối hiện tại và hàm GetHeader để lấy tiêu đề của khối.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
Nhận chiều cao
GetHeight được sử dụng để lấy số thứ tự khối cuối cùng trong chuỗi khối, như trong ví dụ bên dưới. Trong ví dụ trước, chúng tôi sẽ bỏ qua chức năng Chính để thuận tiện, nhưng bạn có thể thêm nó nếu cần thiết.
from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeight
def Main(operation):
if operation == 'demo':
return demo()
return False
def demo():
height=GetHeight()
Notify(height) # print height
return height #return height after running the function
Nhận tiêu đề
GetHeader được sử dụng để lấy tiêu đề khối, tham số là số sê-ri của khối trong chuỗi khối. Ví dụ:
from ontology.interop.System.Runtime import Notify
from ontology.interop.System.Blockchain import GetHeader
def demo():
block_height=10
header=GetHeader(block_height)
Notify(header)
return header
Nhận giao dịchByHash
GetTransactionByHash được sử dụng để nhận giao dịch thông qua hàm băm giao dịch. Băm giao dịch được gửi đến Nhận giao dịchByHash làm tham số ở định dạng bytearray. Chìa khóa của chức năng này là chuyển đổi hàm băm giao dịch ở định dạng hex thành hàm băm giao dịch ở định dạng bytearray. Đây là một bước quan trọng. Nếu không, bạn sẽ gặp lỗi cho biết không có khối nào có hàm băm khối đó. Hãy lấy hàm băm giao dịch ở định dạng hex làm ví dụ để chuyển đổi nó sang định dạng bytearray. Một ví dụ trông như thế này:
Điều này có thể được thực hiện bằng cách sử dụng công cụ chuyển đổi String Byte Array do SmartX cung cấp. Cuối cùng, chuyển đổi mảng phụ kết quả thành một chuỗi tương tự:
Các nhà phát triển có thể sử dụng chức năng GetContract để nhận hợp đồng thông qua hàm băm của hợp đồng. Quá trình chuyển đổi hàm băm hợp đồng cũng giống như quá trình chuyển đổi hàm băm giao dịch đã đề cập ở trên.
GetBlock được sử dụng để lấy một khối. Có hai cách để có được một khối cụ thể.
1. Nhận khối theo chiều cao khối:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Nhận một khối bằng hàm băm khối:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Cách sử dụng Block API
Có ba chức năng khả dụng trong Block API: Nhận giao dịch, Nhận số lượng giao dịchVà GetTransactionBy Index. Chúng tôi sẽ phá vỡ chúng từng cái một.
Nhận số lượng giao dịch
GetTransactionCount được sử dụng để lấy số lượng giao dịch cho một khối nhất định.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
Nhận giao dịch
Các nhà phát triển có thể sử dụng chức năng GetTransactions để nhận tất cả các giao dịch trong một khối nhất định.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txs
GetTransactionBy Index
GetTransactionByIndex được sử dụng để nhận một giao dịch cụ thể trong một khối nhất định.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # index starts from 0.
return tx
Một hướng dẫn đầy đủ có thể được tìm thấy trên của chúng tôi GitHub.
bạt
Blockchain & Block API là một phần không thể thiếu của hợp đồng thông minh vì bạn có thể sử dụng chúng để yêu cầu dữ liệu blockchain và chặn dữ liệu trong hợp đồng thông minh. Trong các bài viết tiếp theo, chúng ta sẽ thảo luận về cách sử dụng phần còn lại của các API và tìm hiểu cách chúng tương tác với chuỗi khối Ontology.
Bài báo được dịch bởi các biên tập viên của Hashrate&Shares, đặc biệt là cho OntologyRussia. khóc
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 Discord
. Ngoài ra, hãy xem Trung tâm nhà phát triển trên trang web của chúng tôi, nơi bạn có thể tìm thấy các công cụ, tài liệu dành cho nhà phát triển, v.v.