Comment rédiger votre premier contrat intelligent?



Apprenez les bases du développement de contrats intelligents et commencez à rédiger votre premier contrat intelligent. Vous saurez également tester le contrat intelligent.

dans le , vous avez appris ce que sont les contrats intelligents, les différents langages de contrats intelligents et comment configurer un environnement de développement de contrats intelligents. Dans cet article, vous apprendrez à créer votre premier contrat intelligent. Je vais utiliserRemix IDE pour développer et tester un contrat intelligent.

Les sujets ci-dessous sont traités dans ce didacticiel de développement de contrats intelligents:





Construire votre contrat intelligent

Un contrat intelligent de bon de commande simple sera développé dans le cadre de cette série de blogs. Au fur et à mesure que cette série progresse et que de nouveaux concepts de langage de programmation Solidity sont introduits, le contrat intelligent de bon de commande évoluera et s'améliorera.



Structure du contrat intelligent

Le contrat intelligent de solidité, par essence, est une collection de

  • Les données - qui maintient l'état actuel du contrat
  • fonction - qui appliquent la logique de transition de l'état du contrat

Les contrats intelligents de solidité suivent une structure standard. Tout contrat intelligent commence par la déclaration suivante



Directive Pragma

Le mot clé «pragma» peut être utilisé pour activer certaines fonctionnalités ou vérifications du compilateur. L'instruction ci-dessous définit que le fichier source (contrat intelligent) ne sera pas compilé avec le compilateur antérieur à 0.4.0 et la version du compilateur après 0.6.0. Cette déclaration garantit qu'aucun comportement involontaire n'est introduit lorsqu'une nouvelle version du compilateur est introduite.

solidité pragma> = 0.4.0<=0.6.0 

Déclaration de contrat

Le contrat est déclaré à l'aide du mot-clé «contrat». Cela déclare un contrat vide qui est identifié par le nom «PurchaseOrder».

contrat PurchaseOrder {}

Stockage des données pertinentes dans le contrat

Chaque contrat ou en termes génériques, chaque programme peut nécessiter le stockage de certaines données. L'ajout de données au programme lui confère un niveau de flexibilité. Le passage des valeurs codées en dur dans le programme aux valeurs fournies par l'utilisateur est une caractéristique importante. Les variables vous permettent de stocker les données, d'étiqueter les données, de récupérer les données et de manipuler les données.

Développement de contrats intelligents: introduction de variables

En solidité, les variables sont de deux types

  1. Type de valeur: Ces types de variables sont passés par valeur, c'est-à-dire qu'elles sont toujours copiées lorsqu'elles sont utilisées comme arguments de fonction ou dans des affectations. Par exemple: entiers, adresse booléenne, etc.
  2. Types de référence: Ces types de variables sont de types complexes et sont passés par référence, ces variables ne rentrent pas dans 256 bits et doivent être gérées avec soin car leur copie est coûteuse.

Ajout de données à Smart Contract

Ajoutons une variable de données au contrat. Pour chaque bon de commande, il doit y avoir une certaine quantité de produit qui lui est associée. Ajoutons une variable product_quantity qui sera de type de données entier ou nombre.

comment installer php 7 sur windows 10

La variable que nous introduisons maintenant est un entier non signé et est représentée par uint256, 256 signifie ici le stockage de 256 bits.

  • U - non signé (ce qui signifie que ce type ne peut représenter que des entiers positifs, pas des entiers positifs et négatifs)
  • INT - entier
  • Taille de 256 à 256 bits
  • la valeur minimale que vous pouvez attribuer à uint256 est 0
  • la valeur maximale que vous pouvez attribuer à uint256 est 2 ^ 256-1 [un très grand nombre]

La quantité de produit n'est qu'une valeur positive et l'hypothèse actuelle est que nous allons répondre à une très grande valeur pour la quantité de produit.

La variable «product_quantity» déclarée fait partie de l'état du contrat et est donc conservée ou stockée dans l'espace du contrat. Actuellement, cette variable prend la valeur par défaut 0.

contrat PurchaseOrder {uint256 product_quantity}

Définition du constructeur

Le constructeur est appelé lorsque le contrat est déployé. Le constructeur initialise le contrat avec certaines valeurs. Dans le scénario actuel, la quantité de produit est définie sur 100, lorsque le contrat est déployé. Un constructeur paramétré peut également être créé en passant une variable et en initialisant product_quantity à l'aide de la valeur transmise.

Le point clé à noter ici est le modificateur d'accès «public» associé au constructeur. Le mot clé public spécifie que n'importe qui peut accéder à cette fonction, ce n'est pas une fonction restreinte.

constructeur () public {product_quantity = 100}

Ajout de fonctions

Ajoutons maintenant une fonction pour rendre notre programme interactif. Les fonctions sont des capacités contrôlées qui peuvent être ajoutées à un programme. Toute fonction est précédée d'une fonction mot-clé. Dans l'ensemble, voici à quoi ressemble la déclaration de fonction' fonction ».

Obtenir la fonction

L'une des exigences les plus courantes, pour tout programme, est de lire la valeur stockée. Dans le contrat suivant, nous allons devoir lire la valeur 'product_quantity'. Afin de fournir cette capacité, une fonction de lecture ou une fonction d'obtention est ajoutée. Dans cette fonction, nous n'effectuons aucune manipulation de la valeur stockée, nous récupérons simplement la valeur stockée.

Décomposons maintenant notre fonction get (get_quantity)

Non. Mot-clé Valeur
un get_quantity (){aucun paramètre n'est passé}
2 Publique{tout le monde peut accéder à la fonction}
3 vue{signifie que la fonction lit uniquement l'état du contrat, ne modifie pas l'état du contrat, donc la vue}
4 renvoie une variable de type uint256 {défini ce qui est retourné par la fonction}
function get_quantity () public view renvoie (uint256) {return product_quantity}

Fonctions du poseur

La lecture des données est nécessaire et nous l'avons accomplie dans la dernière section, mais la plupart des scénarios nécessitent également la capacité d'écrire / mettre à jour les données. Cette capacité spécifique est fournie par l'ajout d'une fonction de réglage. Cette fonction prend une valeur de l'utilisateur sous la forme d'un paramètre d'entrée. En utilisant la valeur fournie à la fonction par l'utilisateur, la valeur de la variable «product_quantity» est écrite / mise à jour.

Décomposons maintenant notre fonction set (update_quantity)

Ajout d'une fonction pour mettre à jour la valeur de la quantité de produit

Non. Mot-clé Valeur
un update_quantity (valeur uint256){la valeur du paramètre de type uint256 est passée}
2 Publique{tout le monde peut accéder à la fonction}
3 Non requis car l'état est mis à jour par les fonctions
4 renvoie une variable de type uint256 (définit ce qui est retourné par la fonction)
function update_quantity (valeur uint256) public {product_quantity = product_quantity + value}

En branchant tout cela, voici à quoi devrait ressembler le contrat global.

solidité pragma> = 0.4.0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Déployer le contrat intelligent

code python décimal à binaire

Il est temps de tester le contrat intelligent. Afin de tester ce contrat intelligent, nous utiliserons Remix en ligne IDE .

Remix est un terrain de jeu en ligne pour contrat intelligent ethereum . Remix est entièrement basé sur un navigateur. Remix vous fournit un IDE en ligne (environnement de développement intégré) où vous pouvez rédiger vos contrats intelligents. Remix vous offre une capacité de compilation de solidité en ligne. Le contrat intelligent dans Remix IDE peut être compilé en utilisant une version de compilateur spécifique de manière transparente.

Remix offre également la possibilité de tester rapidement le contrat intelligent.

Remix fournit un ensemble d'outils complet pour démarrer le développement du contrat intelligent et tester unitaire le contrat intelligent, sans effectuer aucune installation sur votre machine locale. C'est d'une utilité énorme pour commencer avec la solidité car les développeurs doivent simplement se concentrer sur l'écriture d'un contrat intelligent, plutôt se soucier de l'infrastructure.

Avec Remix IDE, tout ce dont vous avez besoin est un navigateur et une connexion Internet pour démarrer le développement de contrats intelligents. Développement rapide, test et validation d'une idée de contrat intelligent.

Remix a récemment mis à jour son interface utilisateur.

Remix-UI-Smart-Contracts-Edureka

Cliquez sur l'icône du fichier comme surligné dans l'image ci-dessus, l'explorateur de fichiers s'ouvrira.

tri par algorithme c ++
  1. En cliquant sur l'icône plus, un nouveau fichier peut être créé, nommez le fichier PurchaseOrder.sol
  2. Cela créera un fichier vide nommé PurchaseOrder.sol, cliquez et ouvrez ce fichier.
  3. Copions-coller l'ensemble du contrat dans le PurchaseOrder.sol.
  4. Cliquez sur la deuxième icône, dans le menu de gauche juste en dessous de l'icône du fichier, l'option du compilateur de solidité devrait apparaître.
  5. Sous l'étiquette du compilateur, sélectionnez la version du compilateur. La version actuellement sélectionnée est 0.5.8.
  6. Après la sélection de la version du compilateur, cliquez sur «Compile PurchaseOrder.sol». Cela compilera le contrat intelligent.

7. Une fois le contrat intelligent compilé avec succès, cliquez sur le bouton «Détails de la compilation» et les détails suivants devraient apparaître. Après compilation, deux informations clés sont mises à disposition

    • ABI - Interface binaire d'application. Il s'agit d'un fichier json qui détaille toutes les méthodes exposées dans le contrat intelligent ainsi que les métadonnées des méthodes. Plus d'informations à ce sujet seront discutées dans les blogs suivants.
    • Bytecode- Code d'opération EVM (machine virtuelle Ethereum), la logique de contrat intelligent est convertie en bytecode lors de la compilation.

8. Afin de tester le contrat intelligent, le contrat intelligent doit être déployé. Pour déployer le contrat intelligent, cliquez sur l'icône suivante dans le menu de gauche, sous l'icône de compilation. L'écran suivant va apparaitre. Afin de tester le contrat intelligent, le contrat intelligent doit être déployé. Pour déployer le contrat intelligent, cliquez sur l'icône suivante dans le menu de gauche, sous l'icône de compilation. L'écran suivant va apparaitre.

Option de déploiement

L'écran de déploiement offre plusieurs choix, examinons-les un par un.

  • Environnement: cela peut être considéré comme une option similaire au choix d'acheter un ordinateur portable d'Amazon, Flipkart, Newegg (tous ces produits sont des détaillants en ligne), vous choisissez où vous souhaitez acheter, en fonction de vos besoins. De même, dans le cas de Remix, nous avons une option où déployer le contrat intelligent et tester le contrat intelligent. La liste déroulante à côté de l'étiquette d'environnement propose trois sélections
    • JavaScript VM - un nœud unique Ethereum local est lancé dans la mémoire du navigateur et fournit 5 comptes de test préfinancés qui peuvent être utilisés pour la transaction (déploiement, appel de fonctions)
    • Fournir Web3 injecté - Cela repose sur MetaMask. Metamask est comme un courtier ou un intermédiaire, ce qui permet aux applications Web d'interagir avec le contrat intelligent. Metamask offre la capacité de gérer les identités et de signer les transactions à envoyer au réseau ethereum.rdParty vous aide à déterminer le réseau blockchain sur lequel le contrat intelligent sera déployé.
    • Fournisseur Web3 - si vous exécutez un nœud Ethereum local et que le point de terminaison RPC est disponible, cette option peut être utilisée. Le contrat intelligent sera déployé sur le nœud Ethereum local.
  • Comptes: ces informations sont renseignées en fonction de l'environnement sélectionné. Par exemple. JavaScript VM fournit 5 comptes de test préfinancés. Dans le cas du fournisseur Web3 et du Web3 injecté, ne fournissez pas de comptes de test préfinancés.
  • Limite de gaz: Ceci définit la quantité maximale de gaz que l'initiateur est prêt à dépenser pour toute transaction. C'est l'endroit pour se prémunir contre la boucle infinie et l'épuisement de tous les fonds du compte en cas de condition de boucle infinie.
  • Valeur: valeur qu'il peut être nécessaire d'envoyer lors du déploiement du contrat intelligent. Ceci est une valeur facultative.

Afin de déployer le contrat, sélectionnez l'option JavaScript VM, sélectionnez le premier compte dans la liste déroulante des comptes, notez le solde du compte (100 éther).

Assurez-vous que le nom du contrat intelligent qui apparaît est PurchaseOrder, cliquez sur déployer. Actions clés qui se produiront

  1. Le solde du compte passe de 100 éther à 99,999999 éther, le montant déduit est le coût de transaction pour le déploiement du contrat intelligent.
  2. Dans le cadre du contrat déployé, une nouvelle vignette pour le contrat intelligent apparaîtra, qui fournira également l'adresse du nouveau contrat intelligent quelque chose comme ceci (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Dans la fenêtre de la console, les informations suivantes apparaîtront
    1. Hachage de transaction - identifie de manière unique le déploiement du contrat
    2. Coût de transaction
    3. Adresse du contrat

Interagir avec le contrat déployé

  1. Dans le cadre du contrat déployé, les deux méthodes d'interaction suivantes sont disponibles update_quantity et get_quantity.
  2. Ces deux méthodes d'interaction sont les méthodes publiques définies dans le contrat «Bon de commande».
  3. La méthode «update_quantity» de la quantité de mise à jour nécessite un paramètre d'entrée, d'où la zone de saisie.
  4. Get quantité La méthode «get_quantity» récupère la valeur de product_quantity.
  5. Vérifions ce qui se passe lorsque get_quantity est appelé, la valeur de retour 100 est affichée, qui a été initialisée dans le constructeur. Cela ne provoque pas de transaction
  6. Appelons update_quantity et fournissons 30 comme entrée. Cela provoque une transaction

En un mot, toute opération qui provoque une opération d'écriture dans l'état du contrat (c'est-à-dire modifie les variables du contrat) entraînera une transaction.

Toute opération qui lit simplement l'état du contrat ne provoque pas de transaction.

Conclusion du développement de contrats intelligents

Avec cela, nous venons de créer notre premier contrat intelligent, ne faisant qu'effleurer la surface de la solidité. Nous venons de voir ce qu'il faut pour tester le contrat intelligent, du déploiement du contrat intelligent au lancement des transactions.

Dans le prochain blog qui est une continuation de la série de développement de contrats intelligents, nous allons nous attarder plus profondément sur les fondamentaux de la solidité, en approfondissant le déploiement de contrats intelligents.

Sur ce, je conclus ceci Contrat intelligent blog de développement. J'espère que vous avez apprécié la lecture de ce blog et que vous l'avez trouvé instructif.

jeSi vous souhaitez apprendre les contrats intelligents, construire une carrière dans le domaine de la blockchain et acquérir une expertise en programmation Ethereum, inscrivez-vous au live-online ici, cela vient avec un support 24 * 7 pour vous guider tout au long de votre période d'apprentissage.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de «Développement de contrats intelligents» et nous vous répondrons au plus tôtst.