
Présentation
Plus tôt, j'ai présenté le contrat ontologique intelligent dans
Partie 1: Blockchain & Block API et
Partie 2: API de stockageMaintenant, lorsque vous avez une idée de la façon d'appeler l'API appropriée pour le stockage persistant lors du développement d'un contrat intelligent Python sur Ontology, passons à l'
API Runtime (Contract Execution API). 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, convertir et valider les données. Voici une brève description de ces 8 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 Ontology
SmartX et suivre les instructions ci-dessous. Comme d'habitude, à la fin de l'article, je fournirai un lien vers le code source.
Comment utiliser l'API Runtime
Il existe 2 chemins pour importer l'API Runtime,
ontology.interop.System.Runtime et
ontology.interop.Ontology.Runtime . Le chemin de l'ontologie contient les API nouvellement ajoutées. Les lignes suivantes importent ces 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 des événements sur l'ensemble du réseau. Dans l'exemple suivant, la fonction
Notify renverra une chaîne hexadécimale «hello world» et la diffusera à l'ensemble du 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
Il s'agit d'une paire de fonctions de sérialisation et de désérialisation. La fonction
Sérialiser sérialise un objet dans un objet tableau d'octets et la fonction
Désérialiser désérialise le tableau d'octets dans l'objet d'origine. L'exemple de code suivant implémente la sérialisation des paramètres entrants et les stocke dans le stockage persistant du contrat. Il extrait également les données du stockage persistant du contrat et les désérialise.
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
Il s'agit d'une paire de fonctions de conversion d'adresse. La fonction
Base58ToAddress convertit l'adresse codée en base58 en une adresse de forme de tableau d'octets et AddressToBase58 convertit l'adresse en forme de tableau d'octets en une 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 fonctionnalités:
- Vérifiez si l'appelant de la fonction actuelle est fromAcct. Si oui (c.-à-d. Vérification de signature réussie), la fonction retourne.
- Vérifiez si l'appelant de 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 est la valeur de retour de GetCallingScriptHash (). La fonction GetCallingScriptHash () peut obtenir la valeur de hachage du contrat du contrat intelligent actuel.
GetCallingScriptHash () :
Compilateur Python d'ontologie
from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Retrouvez le tutoriel complet
ici .
Résumé
Dans cet article, j'ai présenté l'
API Runtime de la blockchain Ontology, qui est très importante dans le contrat intelligent Python Ontology. Dans le prochain article, nous examinerons l'
API native pour explorer comment transférer des actifs dans des contrats intelligents Ontology.
Ceci est un tutoriel officiel publié plus tôt sur le blog d' Ontology Medium
Êtes-vous développeur? Assurez-vous que vous avez rejoint notre communauté technologique sur
Discord . Jetez également un œil au
Developer Center sur notre site Web, où vous pouvez trouver des outils de développement, de la documentation et plus encore.
Trouvez l'ontologie ailleurs
Site Web d'ontologieGithub /
discordeTélégramme
anglais /
russeTwitter /
Reddit