
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. .
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 və 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:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Birincisi, tranzaksiya hashını tərsinə çevirin:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Tərtibatçılar SmartX tərəfindən təqdim olunan Hex Number(kiçik endian)Nömrə çevirmə alətindən istifadə edərək bu addımı yerinə yetirə bilərlər.
Sonra nəticəni bytearray formatına çevirin:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}
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:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f
Aşağıda əməliyyatın hashindən istifadə edərək əməliyyat aparan GetTransactionByHash funksiyasının nümunəsi verilmişdir:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return tx
GetTransactionHeight
GetTransactionHeight tranzaksiya hesh vasitəsilə əməliyyat hündürlüyünü əldə etmək üçün istifadə olunur. Yuxarıdakı misaldan hash götürək:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return height
Müqavilə alın
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.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contract
GetBlock
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
Tam bələdçini saytımızda tapa bilərsiniz .
Sözündən sonra
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.
Siz tərtibatçısınız? texnoloji icmamıza qoşulun . Həmçinin, bir nəzər salın tərtibatçı alətləri, sənədləri və s. tapa biləcəyiniz vebsaytımızda.
Ontologiya
- /
- Teleqram /
- /
Mənbə: www.habr.com
