
To je 3. del serije učnih člankov o ustvarjanju pametnih pogodb v Pythonu v blockchain omrežju Ontology. V prejšnjih člankih smo se seznanili z
- .
Zdaj, ko imate predstavo o tem, kako poklicati ustrezno API za trajno shranjevanje pri razvoju pametne pogodbe z Python v omrežju Ontology, preidimo k spoznavanju, kako uporabiti Runtime API (API za izvajanje pogodb). Runtime API ima 8 povezanih API-jev, ki zagotavljajo splošne vmesnike za izvajanje pogodb in pomagajo razvijalcem pridobivati, pretvarjati in preverjati podatke.
Spodaj je kratek opis teh 8 API-jev:

Poglejmo podrobneje, kako uporabiti teh 8 API-jev. Pred tem lahko ustvarite novo pogodbo v orodju za razvoj pametnih pogodb Ontology in sledite spodnjim navodilom.
Kako uporabiti Runtime API
Obstajata dva načina za uvoz Runtime API: ontology.interop.System.Runtime in ontology.interop.Ontology.Runtime. Ontology pot vsebuje nedavno dodane API-je. Spodnje vrstice uvozijo te API-je.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funkcija Notify prenaša dogodek po celotnem omrežju. V spodnjem primeru bo funkcija Notify vrnila hex-niz 'hello world' in ga poslala po celotnem omrežju.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")To lahko vidite v dnevnikih:

GetTime API
Funkcija GetTime vrne trenutno oznako časa, ki vrača Unix-čas, ko je bila funkcija poklicana. Enota merjenja je— sekunda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # vrne uint številkoGetCurrentBlockHash API
Funkcija GetCurrentBlockHash vrne hash trenutnega bloka.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize in Deserialize
To je par funkcij za serializacijo in deserializacijo. Funkcija Serialize pretvori objekt v objekt bytearray, funkcija Deserialize pa pretvori bytearray v prvotni objekt. Spodnji vzorec kode izvaja pretvorbo vhodnih parametrov in jih shranjuje v trajno shranjevanje pogodbe. Prav tako pridobiva podatke iz trajnega shranjevanja pogodbe in jih pretvarja v prvotni objekt.
iz ontology.interop.System.Runtime uvozimo GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
iz ontology.interop.System.Storage uvozimo Put, Get, GetContext
def Main(operacija, argumenti):
if operacija == 'serialize_to_bytearray':
podaci = argumenti[0]
return serialize_to_bytearray(podaci)
if operacija == 'deserialize_from_bytearray':
ključ = argumenti[0]
return deserialize_from_bytearray(ključ)
return False
def serialize_to_bytearray(podaci):
sc = GetContext()
ključ = "1"
byte_data = Serialize(podaci)
Put(sc, ključ, byte_data)
def deserialize_from_bytearray(ključ):
sc = GetContext()
byte_data = Get(sc, ključ)
podaci = Deserialize(byte_data)
return podaciBase58ToAddress in AddressToBase58
Ova dva funkcionalna para služe za pretvaranje adresa. Funkcija Base58ToAddress pretvara kodiranu adresu base58 u adresu u formi bytearray, dok AddressToBase58 pretvara adresu u formi bytearray u kodiranu adresu base58.
iz ontology.interop.Ontology.Runtime uvozimo Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)CheckWitness
Funkcija CheckWitness(fromAcct) ima dve funkcionalnosti:
- Verifikovati da li je objekat koji poziva trenutnu funkciju fromAcct. Ako jeste (tj. ako je prođena provera potpisa), funkcija se vraća.
- Proveriti da li je objekat koji poziva trenutnu funkciju ugovor. Ako je ovo ugovor i funkcija se izvršava iz ugovora, tada je verifikacija prošla. To jest, verifikovati da li je fromAcct povratna vrednost GetCallingScriptHash(). Funkcija GetCallingScriptHash() može da uzme vrednost heša ugovora trenutnog pametnog ugovora.
GetCallingScriptHash():
Više informacija na
iz ontology.interop.System.Runtime uvozimo CheckWitness
iz ontology.interop.Ontology.Runtime uvozimo Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resViše informacija može se pronaći na . U sledećem članku predstavićemo Native API, kako bi ste savladali prenos sredstava u pametnim ugovorima Ontology.
Članak je prevodila redakcija specijalno za OntologyRussia.
Da li ste programer? Pridružite se našoj tehničkoj zajednici na . Takođe, posetite Ontology, gde možete pronaći više alata, dokumentaciju i još mnogo toga.
Zatvorite zadatak — dobijte nagradu.
za program talenata Ontology za studente
Ontology
— — — — —
Izvor: habr.com
