
Questa hè a 3a parte in una seria d'articuli educativi nantu à a creazione di cuntratti intelligenti in Python nantu à a reta di blockchain di Ontology. In articuli precedenti avemu cunnisciutu
- .
Avà chì avete una idea di cumu chjamà l'API di almacenamiento persistente adattatu quandu si sviluppa un cuntrattu intelligente cù Python nantu à a reta di Ontologia, andemu à amparà à aduprà Runtime API (API di esecuzione di u cuntrattu). L'API Runtime hà 8 API cunnessi chì furniscenu interfacce cumuni per l'esecuzione di u cuntrattu è aiutanu i sviluppatori à ricuperà, trasfurmà è validà e dati.
Quì sottu hè una breve descrizzione di i dati 8 API:

Fighjemu un ochju più vicinu à cumu utilizà i dati 8 API. Prima di questu, pudete creà un novu cuntrattu in l'uttellu di sviluppu di cuntrattu intelligenti Ontology è seguitate e struzzioni sottu.
Cumu utilizà l'API Runtime
Ci hè dui manere di impurtà Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. A strada di l'Ontology cuntene l'API di novu aghjuntu. I linii sottu importanu i dati API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
A funzione Notify trasmette l'avvenimentu in tutta a reta. In l'esempiu sottu, a funzione Notify restituverà a stringa hex "hello word" è a trasmette in tutta a reta.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Pudete vede questu in i logs:

GetTime API
A funzione GetTime torna u timestamp currente, chì torna l'ora Unix in quale a funzione hè stata chjamata. L'unità di misura hè a seconda.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
A funzione GetCurrentBlockHash torna l'hash di u bloccu attuale.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerializà è deserializà
Questu hè un paru di funzioni di serializazione è deserializazione. A funzione Serialize cunverte un ughjettu in un ughjettu bytearray, è a funzione Deserialize cunverte un bytearray à l'ughjettu originale. L'esempiu di codice quì sottu cunverte i paràmetri entranti è li guarda in l'almacenamiento persistente di u cuntrattu. Hè ancu ricuperà e dati da l'almacenamiento persistente di u cuntrattu è a trasforma in l'ughjettu originale.
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 è AddressToBase58
Questa coppia di funzioni di traduzzione di indirizzu. A funzione Base58ToAddress cunverte un indirizzu codificatu base58 à un indirizzu bytearray, è AddressToBase58 cunverte un indirizzu bytearray à un indirizzu codificatu base58.
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)Verificate u Testimone
A funzione CheckWitness (fromAcct) hà duie funziunalità:
- Verificate se u chjamante di a funzione attuale hè daAcct. Se sì (vale à dì, a verificazione di a firma passata), a funzione torna.
- Verificate se l'ughjettu chì chjama a funzione attuale hè un cuntrattu. S'ellu hè un cuntrattu è a funzione hè eseguita da u cuntrattu, allura a verificazione hè passata. Questu hè, verificate se fromAcct hè u valore di ritornu di GetCallingScriptHash (). A funzione GetCallingScriptHash() pò piglià u valore hash di u cuntrattu di u cuntrattu intelligente attuale.
GetCallingScriptHash ():
Leghjite più
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resPiù infurmazione pò esse truvata à . In u prossimu articulu avemu da presentà API nativaper amparà cumu trasfiriri l'assi in i cuntratti intelligenti di Ontology.
L'articulu hè statu traduttu da l'editori in particulare per OntologyRussia.
Sò un sviluppatore? Unisci à a nostra cumunità tecnologica à . Inoltre, fate un ochju Ontologia per più arnesi, documentazione è più.
Chiudi u compitu - uttene una ricumpensa.
per u prugramma di talentu Ontology per i studienti
Ontologia
- - - - -
Source: www.habr.com
