ProHoster > ΠΠ»ΠΎΠ³ > Administrasi > Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API
Carane nulis kontrak pinter ing Python ing jaringan Ontologi. Part 3: Runtime API
Iki minangka bagean kaping 3 ing seri artikel pendidikan babagan nggawe kontrak cerdas ing Python ing jaringan blockchain Ontology. Ing artikel sadurunge kita kenal
Saiki sampeyan duwe ide babagan carane nelpon API panyimpenan terus-terusan sing cocog nalika ngembangake kontrak cerdas nggunakake Python ing jaringan Ontologi, ayo sinau babagan nggunakake Runtime API (API Eksekusi Kontrak). Runtime API nduweni 8 API sing gegandhengan sing nyedhiyakake antarmuka umum kanggo eksekusi kontrak lan mbantu pangembang njupuk, ngowahi, lan ngesyahke data.
Ing ngisor iki minangka katrangan ringkes babagan data 8 API:
Ayo goleki kanthi luwih rinci babagan cara nggunakake data 8 API. Sadurunge iki, sampeyan bisa nggawe kontrak anyar ing alat pangembangan kontrak pinter Ontologi SmartX lan tindakake pandhuan ing ngisor iki.
Carane nggunakake Runtime API
Ana rong cara kanggo ngimpor Runtime API: ontology.interop.System.Runtime ΠΈ ontologi.interop.Ontology.Runtime. Path Ontologi ngemot API sing mentas ditambahake. Garis ing ngisor iki ngimpor data API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Notifikasi API
Fungsi Notify nyiarake acara ing saindhenging jaringan. Ing conto ing ngisor iki, fungsi Notify bakal ngasilake string hex "hello word" lan nyebarake ing saindhenging jaringan.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Sampeyan bisa ndeleng iki ing log:
GetTime API
Fungsi GetTime ngasilake timestamp saiki, sing ngasilake wektu Unix ing ngendi fungsi kasebut diarani. Unit pangukuran minangka nomer loro.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
Fungsi GetCurrentBlockHash ngasilake hash saka blok saiki.
Iki minangka pasangan fungsi serialisasi lan deseralisasi. Fungsi Serialize ngowahi obyek menyang obyek bytearray, lan fungsi Deserialize ngowahi bytearray menyang obyek asli. Sampel kode ing ngisor iki ngowahi paramèter sing mlebu lan disimpen ing panyimpenan terus-terusan kontrak. Iki uga njupuk data saka panyimpenan terus-terusan kontrak lan ngowahi dadi obyek asli.
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 data
Base58ToAddress lan AddressToBase58
Pasangan iki fungsi terjemahan alamat. Fungsi Base58ToAddress ngowahi alamat sing dienkode base58 dadi alamat bytearray, lan AddressToBase58 ngowahi alamat bytearray dadi alamat sing dienkode base58.
Fungsi CheckWitness(sakaAcct) nduweni rong fungsi:
Verifikasi yen panelpon fungsi saiki sakaAcct. Yen ya (yaiku, verifikasi teken lulus), fungsi kasebut bali.
Priksa manawa obyek sing nelpon fungsi saiki minangka kontrak. Yen kontrak lan fungsi wis dileksanakake saka kontrak, banjur verifikasi liwati. Yaiku, verifikasi yen fromAcct minangka nilai bali saka GetCallingScriptHash (). Fungsi GetCallingScriptHash () bisa njupuk nilai hash kontrak saka kontrak pinter saiki.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Apa sampeyan pangembang? Gabung komunitas teknologi kita ing Discord. Uga, njupuk dipikir ing Pusat Pangembang Ontologi, sampeyan bisa nemokake luwih akeh alat, dokumentasi lan liya-liyane.