Comment écrire un contrat intelligent avec Python sur l'ontologie? Partie 5: API native

image

Dans les précédents articles du didacticiel Python, j'ai présenté le contrat ontologique intelligent dans
Partie 1: Blockchain & Block API et
Partie 2: API de stockage
Partie 3: API d'exécution
Partie 4: API native et décrit comment utiliser les contrats intelligents pour le transfert ONT / ONG.

Aujourd'hui, nous allons parler de la façon d'utiliser l' API de mise à niveau pour mettre à niveau le contrat intelligent. Il existe 2 API: détruire et migrer .

Ils sont utilisés comme suit:

image

Voyons maintenant plus en détail comment utiliser ces 2 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, j'attacherai le lien vers le code source.

Comment utiliser l'API de mise à niveau


Comme d'habitude, vous devez importer les 2 fonctions comme suit avant de les utiliser.

from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Contract import Destroy 

Détruire l'API


L'API Destroy est utilisée pour détruire et supprimer un contrat intelligent sur la chaîne. Voici un exemple de code de l'API.

 from ontology.interop.System.Contract import Destroy from ontology.interop.System.Runtime import Notify def Main(operation, args): if operation == "destroy_contract": return destroy_contract() return False def destroy_contract(): Destroy() Notify(["The contract has been destoryed"]) return True 

Migrer l'API


L'API Migrate est utilisée pour la migration des contrats intelligents. Le contrat existant sera remplacé par le contrat nouvellement migré. Les données enregistrées par l'ancien contrat seront également migrées vers le nouveau contrat. L'ancien contrat sera supprimé après la migration.
Veuillez noter que les actifs du contrat intelligent ne seront pas migrés automatiquement, vous devez donc les transférer à l'avance. Sinon, vous ne pourrez pas récupérer vos actifs.

La liste des paramètres de la fonction Migrate est la suivante:

image

Voir ci-dessous l'exemple de code de la fonction Migrate:

 from ontology.interop.Ontology.Contract import Migrate from ontology.interop.System.Runtime import Notify from ontology.libont import AddressFromVmCode def Main(operation, args): if operation == "migrate_contract": if len(args) != 7: return False avm_code = args[0] need_storage = args[1] name = args[2] version = args[3] author = args[4] email = args[5] description = args[6] return migrate_contract(avm_code, need_storage, name, version, author, email, description) return False def migrate_contract(avm_code, need_storage, name, version, author, email, description): res = Migrate(avm_code, need_storage, name, version, author, email, description) if res: Notify(["Migrate successfully"]) new_contract_hash=AddressFromVmCode(avm_code) Notify(new_contract_hash) return True else: return False 

Vous pouvez suivre les étapes ci-dessous pour voir le résultat de l'exécution de l'exemple de code sur SmartX:

1. Copiez et collez le code ci-dessus dans SmartX et compilez avant de mettre les paramètres. Portez une attention particulière à deux problèmes lors de la saisie des paramètres:

  • Assurez-vous que avm_code n'existe pas sur la chaîne, sinon une erreur sera retournée;
  • La migration nécessite une limite de gaz élevée, vous devez donc ajuster la limite de gaz lors de l'exécution de la fonction.

image

2. Après le déploiement, vous pouvez obtenir le nouveau hachage de contrat à partir du tableau de bord. Dans cet exemple, le nouveau hachage de contrat est be4606c4663081b70f745ed9fc64d4c3b0d9c183.

image

Résumé


Dans cet article, nous avons présenté l'API de mise à niveau de la blockchain d'Ontology. Les développeurs peuvent utiliser cette API pour mettre à niveau les contrats intelligents. L'API Destroy est utilisée pour détruire les contrats intelligents sur la chaîne et l'API Migrate est pour la migration des contrats intelligents. Dans le prochain article, nous présenterons l'API statique et dynamique pour explorer comment implémenter l'appel statique et dynamique des contrats intelligents Ontology avec Python.

Trouvez le tutoriel sur GitHub ici .

Ê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/fr474970/


All Articles