ProHoster > Blog > Amministrazione > Cumu scrive un cuntrattu intelligente in Python nantu à a reta di Ontology. Parte 3: Runtime API
Cumu scrive un cuntrattu intelligente in Python nantu à a reta di Ontology. Parte 3: Runtime API
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 SmartX è 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, GetCurrentBlockHash
Notify 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 num
GetCurrentBlockHash API
A funzione GetCurrentBlockHash torna l'hash di u bloccu attuale.
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 data
Base58ToAddress è 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.
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.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Più infurmazione pò esse truvata à Guthub. 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 Hashrate & Shares in particulare per OntologyRussia.
Sò un sviluppatore? Unisci à a nostra cumunità tecnologica à Discord. Inoltre, fate un ochju Centru di sviluppatori Ontologia per più arnesi, documentazione è più.