
Kini ang ika-3 nga bahin sa usa ka serye sa mga artikulo sa edukasyon sa paghimo og mga smart nga kontrata sa Python sa Ontology blockchain network. Sa miaging mga artikulo atong nasinati
- .
Karon nga adunay ka ideya kung giunsa pagtawag ang angay nga padayon nga pagtipig nga API kung nagpalambo usa ka intelihente nga kontrata gamit ang Python sa network sa Ontology, magpadayon kita sa pagkat-on kung giunsa ang paggamit Runtime API (Contract Execution API). Ang Runtime API adunay 8 ka may kalabutan nga mga API nga naghatag og komon nga mga interface alang sa pagpatuman sa kontrata ug nagtabang sa mga developers sa pagkuha, pagbag-o, ug pag-validate sa datos.
Sa ubos usa ka mubo nga paghulagway sa 8 nga datos sa API:

Atong tan-awon pag-ayo kon unsaon paggamit ang 8 API data. Sa wala pa kini, makahimo ka og bag-ong kontrata sa Ontology smart contract development tool ug sunda ang mga instruksyon sa ubos.
Giunsa paggamit ang Runtime API
Adunay duha ka paagi sa pag-import Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Ang dalan sa Ontology naglangkob sa bag-ong gidugang nga mga API. Ang mga linya sa ubos nag-import sa datos sa API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashPahibalo sa API
Ang Notify function nagsibya sa panghitabo sa tibuok network. Sa pananglitan sa ubos, ibalik sa function sa Notify ang hex string nga "hello word" ug i-broadcast kini sa tibuok network.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Makita nimo kini sa mga log:

GetTime API
Ang GetTime function nagbalik sa kasamtangan nga timestamp, nga nagbalik sa Unix nga oras diin ang function gitawag. Ang yunit sa pagsukod mao ang ikaduha.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Ang GetCurrentBlockHash function nagbalik sa hash sa kasamtangan nga block.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize ug Deserialize
Kini usa ka pares sa serialization ug deserialization function. Ang Serialize function nag-convert sa usa ka butang ngadto sa usa ka bytearray nga butang, ug ang Deserialize function nag-convert sa usa ka bytearray ngadto sa orihinal nga butang. Ang sample sa code sa ubos nagbag-o sa umaabot nga mga parameter ug nagtipig niini sa padayon nga pagtipig sa kontrata. Gikuha usab niini ang datos gikan sa padayon nga pagtipig sa kontrata ug gibag-o kini sa orihinal nga butang.
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 dataBase58ToAddress ug AddressToBase58
Kini nga parisan sa paghubad sa adres naglihok. Ang Base58ToAddress function nag-convert sa base58 nga naka-encode nga adres ngadto sa usa ka bytearray nga adres, ug ang AddressToBase58 nag-convert sa usa ka bytearray nga adres ngadto sa base58 nga naka-encode nga adres.
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)Susihon ang Saksi
Ang CheckWitness(fromAcct) function adunay duha ka gamit:
- Tinoa kung ang nagtawag karon nga function gikan saAcct. Kung oo (nga mao, gipasa ang pag-verify sa pirma), ang function mobalik.
- Susiha kung ang butang nga nagtawag sa kasamtangan nga function usa ka kontrata. Kung kini usa ka kontrata ug ang function gipatuman gikan sa kontrata, nan ang pag-verify gipasa. Kana mao, pamatud-i kung gikan saAcct ang pagbalik nga kantidad sa GetCallingScriptHash(). Ang GetCallingScriptHash() function mahimong makakuha sa contract hash value sa kasamtangang smart contract.
GetCallingScriptHash():
Magbasa pa sa
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resDugang nga impormasyon makita sa . Sa sunod nga artikulo atong ipaila Lumad nga APIaron mahibal-an kung giunsa pagbalhin ang mga kabtangan sa mga kontrata sa Ontology.
Ang artikulo gihubad sa mga editor ilabi na alang sa OntologyRussia.
Ikaw ba usa ka developer? Apil sa among tech nga komunidad sa . Usab, tan-awa ang Ontology, makit-an nimo ang daghang mga himan, dokumentasyon ug daghan pa didto.
Kompletoha ang buluhaton ug makakuha usa ka ganti.
alang sa Ontology talent program alang sa mga estudyante
Ontology
- - - - -
Source: www.habr.com
