Comment écrire un contrat intelligent avec Python sur l'ontologie? Partie 2: API de stockage

image
Ceci est un tutoriel officiel publié plus tôt sur le blog d' Ontology Medium
Excité de le publier pour les lecteurs Habr. N'hésitez pas à poser des questions connexes et à suggérer un meilleur format pour le matériel didactique

Préface


Plus tôt, dans la partie 1, nous avons présenté l' API Blockchain et Block du contrat intelligent d'Ontology. Aujourd'hui, nous allons discuter de l'utilisation du deuxième module: API de stockage . L'API de stockage dispose de cinq API associées qui permettent l'ajout, la suppression et les modifications du stockage persistant dans les contrats intelligents de la chaîne de blocs. Voici une brève description des cinq API:

image

Examinons de plus près comment utiliser ces cinq API. Créez d'abord un nouveau contrat SmartX , puis suivez les étapes ci-dessous. Comme d'habitude, à la fin de l'article, nous fournirons le lien GitHub du code source.

2 Comment utiliser l'API de stockage


2.1 GetContext et GetReadOnlyContext


GetContext & GetReadOnlyContext obtient le contexte dans lequel le contrat intelligent actuel s'exécute. La valeur de retour est l'inverse du hachage de contrat intelligent actuel. Comme son nom l'indique, GetReadOnlyContext obtient le contexte du mode en lecture seule. Dans l'exemple ci-dessous, la valeur de retour est l'inverse du hachage du contrat affiché dans le coin supérieur droit.

image

2.2 Mettre


La fonction Put est chargée de stocker les données sur la blockchain sous la forme d'un dictionnaire. Comme indiqué, Put accepte trois paramètres. GetContext obtient le contexte du contrat intelligent en cours d'exécution, la clé est la valeur de clé qui doit stocker des données et la valeur est la valeur des données qui doivent être stockées. Veuillez noter que si la valeur de clé est déjà en mémoire, la fonction mettra à jour sa valeur correspondante.

image

2.3 Obtenir


La fonction Get est responsable de la lecture des données dans la blockchain existante via la valeur de clé. Dans l'exemple ci-dessous, vous pouvez remplir la valeur de clé dans le panneau de paramètres à droite pour exécuter la fonction et lire les données correspondant à la valeur de clé dans la blockchain:

image

2.4 Supprimer


La fonction de suppression est responsable de la suppression des données dans la blockchain via la valeur de clé. Dans l'exemple ci-dessous, vous pouvez remplir la valeur de clé pour exécuter la fonction dans le panneau de paramètres à droite et supprimer les données correspondant à la valeur de clé dans la blockchain:

image

3 Exemple de code API de stockage


Le code suivant donne un exemple détaillé de l'utilisation de cinq API: GetContext; Obtenez Mettez; Effacer et GetReadOnlyContext . Vous pouvez essayer d'exécuter ces API sur SmartX .

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext from ontology.interop.System.Runtime import Notify def Main(operation,args): if operation == 'get_sc': return get_sc() if operation == 'get_read_only_sc': return get_read_only_sc() if operation == 'get_data': key=args[0] return get_data(key) if operation == 'save_data': key=args[0] value=args[1] return save_data(key, value) if operation == 'delete_data': key=args[0] return delete_data(key) return False def get_sc(): return GetContext() def get_read_only_sc(): return GetReadOnlyContext() def get_data(key): sc=GetContext() data=Get(sc,key) return data def save_data(key, value): sc=GetContext() Put(sc,key,value) def delete_data(key): sc=GetContext() Delete(sc,key) 

Postface


Le stockage de la blockchain est le cœur de l'ensemble du système de blockchain. L'utilisation de l'API de stockage Ontology est très simple et conviviale pour les développeurs.

D'autre part, le stockage est au centre des pirates, comme la menace de sécurité que nous avons mentionnée dans un article précédent: attaque par injection de stockage , les développeurs doivent accorder une attention particulière à la sécurité du code lors de l'écriture de code lié au stockage.

Trouvez le tutoriel détaillé sur GitHub ici .

Dans le prochain article, nous verrons comment utiliser l' API Runtime . Restez à l'écoute!



Ê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'ontologie
Github / discorde
Télégramme ( anglais / russe )
Twitter / Reddit /

Source: https://habr.com/ru/post/fr470720/


All Articles