ProHoster > Blog > administration > Comment écrire un contrat intelligent en Python sur le réseau Ontology. Partie 3 : API d'exécution
Comment écrire un contrat intelligent en Python sur le réseau Ontology. Partie 3 : API d'exécution
Il s'agit de la partie 3 d'une série de tutoriels sur la création de contrats intelligents en Python sur le réseau blockchain Ontology. Dans les articles précédents, nous avons vu
Maintenant que vous avez une idée de la façon d'appeler l'API de stockage persistant appropriée lors du développement d'un contrat intelligent avec Python sur le réseau Ontology, passons à l'apprentissage de l'utilisation API d'exécution (API d'exécution de contrat). L'API Runtime dispose de 8 API associées qui fournissent des interfaces communes pour l'exécution des contrats et aident les développeurs à obtenir, transformer et valider les données.
Vous trouverez ci-dessous une brève description de l'API data 8 :
Voyons de plus près comment utiliser ces 8 API. Avant cela, vous pouvez créer un nouveau contrat dans l'outil de développement de contrat intelligent Ontology SmartX et suivez les instructions ci-dessous.
Comment utiliser l'API d'exécution
Il existe deux façons d'importer API d'exécution : ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Le chemin d'ontologie contient des API nouvellement ajoutées. Les lignes ci-dessous importent les données de l'API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
Notifier l'API
La fonction Notifier diffuse l'événement sur tout le réseau. Dans l'exemple ci-dessous, la fonction Notify renverra la chaîne hexadécimale "mot bonjour" et la diffusera sur tout le réseau.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Vous pouvez le voir dans les journaux :
API GetTime
La fonction GetTime renvoie l'horodatage actuel, qui renvoie l'heure Unix à laquelle la fonction a été appelée. L'unité de mesure est la seconde.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
API GetCurrentBlockHash
La fonction GetCurrentBlockHash renvoie le hachage du bloc actuel.
Il s'agit d'une paire de fonctions de sérialisation et de désérialisation. La fonction Serialize convertit un objet en un objet bytearray et la fonction Deserialize convertit un bytearray en son objet d'origine. L'exemple de code suivant convertit les paramètres entrants et les stocke dans le stockage persistant du contrat. Il récupère également les données du stockage persistant du contrat et les convertit en objet d'origine.
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
Base58VersAdresse et AdresseVersBase58
Cette paire de fonctions de traduction d'adresse. La fonction Base58ToAddress convertit une adresse encodée en base58 en une adresse bytearray, et AddressToBase58 convertit une adresse bytearray en une adresse encodée base58.
La fonction CheckWitness(fromAcct) a deux fonctionnalités :
Vérifiez si l'objet appelant la fonction actuelle est fromAcct. Si oui (c'est-à-dire que la vérification de la signature a réussi), la fonction revient.
Vérifiez si l'objet appelant la fonction en cours est un contrat. S'il s'agit d'un contrat et que la fonction est exécutée à partir du contrat, la vérification est réussie. Autrement dit, vérifiez si fromAcct est la valeur de retour de GetCallingScriptHash(). La fonction GetCallingScriptHash() peut prendre la valeur de hachage du contrat du contrat intelligent actuel.
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Plus d'informations peuvent être trouvées à Guthub. Dans le prochain article, nous présenterons API nativepour apprendre à transférer des actifs dans les contrats intelligents Ontology.
Vous êtes développeur? Rejoignez notre communauté technologique sur Discorde. Aussi, jetez un oeil à Centre de développement Ontologie pour plus d'outils, de documentation, et plus encore.