
C'est la 3Úme partie d'une série d'articles pédagogiques sur la création de contrats intelligents en Python dans le réseau blockchain Ontology. Dans les articles précédents, nous avons découvert
- .
Maintenant que vous avez une idée de la maniÚre d'appeler l'API appropriée pour le stockage permanent lors du développement d'un contrat intelligent avec Python dans le réseau Ontology, passons à l'apprentissage de comment utiliser API d'exécution (API d'exécution de contrat). L'API Runtime possÚde 8 API connexes qui fournissent des interfaces communes pour exécuter le contrat et aident les développeurs à obtenir, transformer et vérifier des données.
Voici un bref aperçu de ces 8 API :

Examinons plus en détail comment utiliser ces 8 API. Avant cela, vous pouvez créer un nouveau contrat dans l'outil de développement de contrats intelligents Ontology et suivre les instructions ci-dessous.
Comment utiliser l'API Runtime
Il existe deux façons d'importer l'API Runtime : ontology.interop.System.Runtime et ontology.interop.Ontology.Runtime. Le chemin Ontology contient les API récemment ajoutées. Les lignes ci-dessous importent ces API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashAPI Notify
La fonction Notify diffuse un événement à travers le réseau. Dans l'exemple ci-dessous, la fonction Notify renverra une chaßne hexadécimale "hello world" et la transmettra à travers 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 retourne le temps Unix auquel 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 numAPI GetCurrentBlockHash
La fonction GetCurrentBlockHash renvoie le hachage du bloc actuel.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSérialiser et Désérialiser
Ce sont deux fonctions de sérialisation et de désérialisation. La fonction Serialize transforme un objet en un objet bytearray, tandis que la fonction Deserialize transforme un bytearray en l'objet initial. L'exemple de code ci-dessous effectue la transformation des paramÚtres d'entrée et les sauvegarde dans le stockage permanent du contrat. Il extrait également les données du stockage permanent du contrat et les transforme en objet initial.
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 et AddressToBase58
Cette paire de fonctions convertit des adresses. La fonction Base58ToAddress convertit une adresse encodée en base58 en une adresse sous forme de bytearray, tandis que AddressToBase58 convertit une adresse sous forme de bytearray en une adresse encodée en 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)CheckWitness
La fonction CheckWitness(fromAcct) a deux fonctionnalités :
- Vérifier si l'objet appelant la fonction actuelle est fromAcct. Si oui (c'est-à -dire si la vérification de signature est réussie), la fonction retourne.
- Vérifier si l'objet appelant la fonction actuelle est un contrat. Si c'est un contrat et que la fonction est exécutée depuis un contrat, alors la vérification est réussie. C'est-à -dire, vérifier si fromAcct est la valeur renvoyée par GetCallingScriptHash(). La fonction GetCallingScriptHash() peut prendre la valeur du hachage du contrat du contrat intelligent actuel.
GetCallingScriptHash() :
Pour en savoir plus sur
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resPlus d'informations peuvent ĂȘtre trouvĂ©es sur . Dans l'article suivant, nous prĂ©senterons API natif, pour apprendre Ă transfĂ©rer des actifs dans des contrats intelligents Ontology.
L'article a été traduit par la rédaction spécialement pour OntologyRussia.
Vous ĂȘtes dĂ©veloppeur ? Rejoignez notre communautĂ© technique sur . De plus, jetez un coup d'Ćil Ă Ontology, oĂč vous pouvez trouver plus d'outils, de la documentation et bien plus encore.
Fermez la tĂąche â recevez une rĂ©compense.
au programme des talents Ontology pour les étudiants.
Ontology
â â â â â
Source : habr.com
