
Aceasta este a treia parte din seria de articole instructive despre crearea de contracte inteligente pe Python în rețeaua blockchain Ontology. În articolele precedente, ne-am familiarizat cu
- .
Acum că aveți o idee despre cum să apelați API-ul corespunzător pentru stocarea permanentă în dezvoltarea contractelor inteligente utilizând Python în rețeaua Ontology, să trecem la utilizarea Runtime API (Contract Execution API). Runtime API are 8 API-uri asociate care oferă interfețe comune pentru executarea contractelor și ajută dezvoltatorii să obțină, să transforme și să verifice datele.
Iată o scurtă descriere a celor 8 API-uri:

Să examinăm mai în detaliu cum să utilizăm cele 8 API-uri. Înainte de aceasta, puteți crea un nou contract în instrumentul de dezvoltare a contractelor inteligente Ontology și să urmați instrucțiunile de mai jos.
Cum să utilizați Runtime API
Există două moduri de a importa Runtime API: ontology.interop.System.Runtime și ontology.interop.Ontology.Runtime. Calea Ontology include API-urile adăugate recent. Linile de mai jos importă aceste API-uri.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Funcția Notify transmite un eveniment în întreaga rețea. În exemplul de mai jos, funcția Notify va returna un șir hexazecimal "hello world" și îl va transmite în întreaga rețea.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Puteți vedea acest lucru în jurnale:

GetTime API
Funcția GetTime returnează timestamp-ul curent, care returnează timpul Unix la care funcția a fost apelată. Unitatea de măsură este – secundă.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # returnează un număr uintGetCurrentBlockHash API
Funcția GetCurrentBlockHash returnează hash-ul blocului curent.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize și Deserialize
Acestea sunt o pereche de funcții de serializare și deserializare. Funcția Serialize transformă un obiect într-un obiect bytearray, iar funcția Deserialize transformă bytearray în obiectul inițial. Exemplul de cod de mai jos efectuează transformarea parametrilor de intrare și îi salvează în stocarea permanentă a contractului. De asemenea, extrage datele din stocarea permanentă a contractului și le transformă în obiectul inițial.
din 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 și AddressToBase58
Această pereche de funcții convertește adresele. Funcția Base58ToAddress convertește o adresă codificată în base58 într-o adresă în formă de bytearray, iar AddressToBase58 convertește o adresă în formă de bytearray într-o adresă codificată în base58.
din 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)CheckWitness
Funcția CheckWitness(fromAcct) are două funcționalități:
- Verifică dacă obiectul care a apelat funcția curentă este fromAcct. Dacă da (adică, a trecut verificarea semnăturii), funcția returnează.
- Verifică dacă obiectul care a apelat funcția curentă este un contract. Dacă este un contract și funcția este apelată dintr-un contract, atunci verificarea a fost aprobată. Adică, verifică dacă fromAcct este egal cu rezultatul lui GetCallingScriptHash(). Funcția GetCallingScriptHash() poate obține valoarea hash-ului contractului actual al smart contract-ului.
GetCallingScriptHash():
Mai multe informații pe
din ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMai multe informații se pot găsi pe . În articolul următor, vom prezenta Native API, pentru a învăța cum să transferi active în smart contractele Ontology.
Articolul a fost tradus de redacția special pentru OntologyRussia.
Ești dezvoltator? Alătură-te comunității noastre tehnice pe . De asemenea, aruncă o privire pe Ontology, unde poți găsi mai multe instrumente, documentație și multe altele.
Finalizează sarcina - primește o recompensă.
pentru programul de talente Ontology pentru studenți
Ontology
— — — — —
Sursa: habr.com
