ProHoster > Blog > İdarə > Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. 1-ci hissə: Blockchain & Block API
Ontology şəbəkəsində Python-da ağıllı müqaviləni necə yazmaq olar. 1-ci hissə: Blockchain & Block API
Bu, ağıllı müqavilə inkişaf alətindən istifadə edərək Ontology blockchain şəbəkəsində Python smart müqavilələrinin yaradılması üzrə bir sıra dərsliklərin birinci hissəsidir. SmartX.
Bu yazıda Ontology smart contract API ilə tanışlığımıza başlayacağıq. Ontology smart contract API 7 modula bölünür:
Blockchain & Block API,
iş vaxtı API,
yaddaş API,
doğma API,
API təkmilləşdirin,
Execution Engine API və
Statik və Dinamik Zəng API.
Blockchain & Block API Ontology smart müqavilə sisteminin əsas hissəsidir. Blockchain API cari blok hündürlüyünü əldə etmək kimi əsas blokçeyn sorğu əməliyyatlarını dəstəkləyir, Block API isə verilmiş blok üçün əməliyyatların sayını sorğulamaq kimi əsas blok sorğu əməliyyatlarını dəstəkləyir.
Gəlin başlayaq!
Əvvəlcə yeni bir müqavilə yaradın SmartXvə sonra aşağıdakı təlimatlara əməl edin.
1. Blockchain API-dən necə istifadə etmək olar
Ağıllı müqavilə funksiyalarına keçidlər Python bağlantıları ilə eynidir. Lazım olduqda müvafiq funksiyaları daxil edə bilərsiniz. Məsələn, aşağıdakı ifadə cari blok hündürlüyünü əldə etmək üçün GetHeight funksiyasını və blokun başlığını əldə etmək üçün GetHeader funksiyasını təqdim edir.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight aşağıdakı nümunədə göstərildiyi kimi blokçeynində sonuncu blok sıra nömrəsini əldə etmək üçün istifadə olunur. Sonuncu misalda biz rahatlıq üçün Main funksiyasını buraxacağıq, lakin lazım gələrsə, onu əlavə edə bilərsiniz.
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
GetHeader
GetHeader blok başlığını əldə etmək üçün istifadə olunur, parametr blokçeyndəki blokun seriya nömrəsidir. Misal:
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
GetTransactionByHash
GetTransactionByHash əməliyyat hash vasitəsilə əməliyyat almaq üçün istifadə olunur. Əməliyyat hash göndərilir GetTransactionByHash bytearray formatında parametrlər kimi. Bu funksiyanın açarı hex formatında əməliyyat hashını bytearray formatında tranzaksiya hashına çevirməkdir. Bu mühüm addımdır. Əks halda, həmin blok hash ilə heç bir blok olmadığını göstərən xəta alacaqsınız. Onu bytearray formatına çevirmək üçün nümunə olaraq hex formatında əməliyyat hashını götürək. Bir nümunə belə görünür:
Bu, SmartX tərəfindən təmin edilən String Byte Array çevirmə alətindən istifadə etməklə edilə bilər. Nəhayət, ortaya çıxan bayt serialını oxşar sətirə çevirin:
Tərtibatçılar müqavilənin hash vasitəsilə müqavilə əldə etmək üçün GetContract funksiyasından istifadə edə bilərlər. Müqavilənin hash çevrilməsi prosesi yuxarıda qeyd olunan əməliyyat hash çevrilməsi prosesi ilə eynidir.
GetBlock blok əldə etmək üçün istifadə olunur. Müəyyən bir blok əldə etməyin iki yolu var.
1. Blok hündürlüyünə görə blok alın:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Blok hash ilə blok alın:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Block API-dən necə istifadə etmək olar
Block API-də üç mövcud funksiya var: GetTransactions, GetTransactionCountVə GetTransactionByIndex. Onları bir-bir parçalayacağıq.
GetTransactionCount
GetTransactionCount müəyyən blok üçün əməliyyatların sayını almaq üçün istifadə olunur.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return count
GetTransactions
Tərtibatçılar müəyyən blokda bütün əməliyyatları əldə etmək üçün GetTransactions funksiyasından istifadə edə bilərlər.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txs
GetTransactionByIndex
GetTransactionByIndex müəyyən bir blokda xüsusi əməliyyat almaq üçün istifadə olunur.
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
Blockchain & Block API ağıllı müqavilələrin əvəzsiz hissəsidir, çünki siz onlardan blockchain məlumatlarını tələb etmək və ağıllı müqavilələrdə məlumatları bloklamaq üçün istifadə edə bilərsiniz. Növbəti məqalələrdə biz qalan API-lərdən necə istifadə edəcəyimizi müzakirə edəcəyik və onların Ontology blockchain ilə necə qarşılıqlı əlaqədə olduğunu öyrənəcəyik.
Məqalə Hashrate&Shares redaktorları tərəfindən xüsusilə OntologyRussia üçün tərcümə edilmişdir. ağlamaq
Siz tərtibatçısınız? texnoloji icmamıza qoşulun Diskordur. Həmçinin, bir nəzər salın İnkişaf etdirici Mərkəzi tərtibatçı alətləri, sənədləri və s. tapa biləcəyiniz vebsaytımızda.