
Ceci est la troisième partie d'une série de tutoriels sur la création de contrats intelligents en Python sur le réseau de blockchain d'Ontology. Dans des articles précédents, nous nous sommes rencontrés
- Blockchain & Block API
- API de stockage
Maintenant que vous avez une idée de comment appeler l'API de stockage persistant appropriée lors du développement d'un contrat intelligent à l'aide de Python sur le réseau Ontology, apprenons à utiliser l'
API Runtime (Contract Execution API). L'API Runtime dispose de 8 API associées qui fournissent des interfaces communes pour l'exécution du contrat et aident les développeurs à recevoir, transformer et valider les données.
Voici une brève description des 8 données API:

Examinons 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
SmartX d' 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 d'ontologie contient les API récemment ajoutées. Les lignes ci-dessous importent les données API.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
API de notification
La fonction Notify diffuse l'événement à travers le réseau. Dans l'exemple ci-dessous, la fonction Notify renverra la chaîne hexadécimale «hello word» 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 renvoie l'heure Unix à laquelle la fonction a été appelée. L'unité est deuxième.
from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time
API GetCurrentBlockHash
La fonction GetCurrentBlockHash renvoie le hachage du bloc actuel.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash def demo(): block_hash = GetCurrentBlockHash() return block_hash
Sérialiser et désérialiser
Ce sont quelques fonctions de sérialisation et de désérialisation. La fonction Serialize convertit l'objet en un objet bytearray et la fonction Deserialize convertit le bytearray en l'objet d'origine. L'exemple de code suivant convertit les paramètres entrants et les stocke dans le stockage permanent du contrat. Il extrait également les données du stockage permanent 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
Base58ToAddress et AddressToBase58
Cette paire de fonctions de traduction d'adresses. La fonction Base58ToAddress convertit l'adresse codée de base58 en une adresse sous la forme de bytearray, et AddressToBase58 convertit l'adresse sous la forme de bytearray en l'adresse codée de 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 fonctions:
- Vérifiez si l'objet fromAcct appelle la fonction actuelle. Si oui (c'est-à-dire que la vérification de la signature a réussi), la fonction retourne.
- Vérifiez si l'objet appelant la fonction actuelle 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 la valeur de retour de GetCallingScriptHash (). La fonction GetCallingScriptHash () peut prendre la valeur de hachage du contrat du contrat intelligent actuel.
GetCallingScriptHash () :
Plus sur
Guthub 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 sur
Guthub . Dans le prochain article, nous présenterons l'
API native pour apprendre à transférer des actifs dans les contrats intelligents d'ontologie.
L'article a été traduit par Hashrate & Shares spécifiquement pour OntologyRussia.
Êtes-vous développeur? Rejoignez notre communauté technologique sur
Discord . Consultez
également le Centre de développement d' Ontology pour plus d'outils, de documentation et plus encore.
Tâches ouvertes pour les développeurs. Fermez la tâche - obtenez une récompense.
Postulez pour le programme de talent étudiant en ontologie
Ontologie
Site Web d'ontologie -
GitHub -
Discord -
Telegram Russian -
Twitter -
Reddit