Maison > interface Web > js tutoriel > Créer et déployer un contrat intelligent avec OpenZepplin et Solidity en moins de quelques minutes

Créer et déployer un contrat intelligent avec OpenZepplin et Solidity en moins de quelques minutes

Linda Hamilton
Libérer: 2024-11-10 03:51:02
original
464 Les gens l'ont consulté

Je suis développeur depuis plus de 10 ans maintenant. J'ai eu la chance de devenir un committer Apache et PPMC, de parler chez Google, d'écrire un livre pour Manning Publications et quelques autres choses. Comme le marché du travail n'est pas formidable et que les gens ont du mal à trouver un bon travail, je commence à voir des opportunités commerciales dans la blockchain, plus particulièrement - je vois de grandes opportunités pour aider les autres à créer leur propre entreprise. J'aimerais partager quelques choses techniques que j'ai apprises au cours des dernières semaines.

J'ai travaillé sur la compréhension des avantages et des inconvénients des applications distribuées (DApps). Il existe de nombreux outils parmi lesquels vous pouvez choisir pour commencer à les créer. Dans cet article, je vous propose une approche avisée pour créer, déployer et interagir localement avec des contrats intelligents. Pas d'outils Web, uniquement une ligne de commande.

Prérequis :

J'utilise Node 18.17, cependant, cela devrait fonctionner avec une version ultérieure de Node.

Installez le nœud 18.17, si vous ne l'avez pas déjà

$ nvm install 18.17
Copier après la connexion
Copier après la connexion
Copier après la connexion

Tout d’abord, créez votre dossier et CD-y

$ mkdir hello-world && cd hello-world
Copier après la connexion
Copier après la connexion
Copier après la connexion

Initialiser le projet

$ npm init -y
Copier après la connexion
Copier après la connexion

Installer Hardhat localement dans notre projet

$ npm install --save-dev hardhat
Copier après la connexion
Copier après la connexion

Note à propos de npx

npx est utilisé pour exécuter les exécutables installés localement dans votre projet. Il est recommandé d'installer Hardhat localement dans chaque projet afin de pouvoir contrôler la version projet par projet.

Mise en place d'un projet

$  npx hardhat init
Need to install the following packages:
  hardhat@2.22.15
Ok to proceed? (y) 

You should see the option show up.  Select “ Create an empty hardhat.config.js”
Copier après la connexion
Copier après la connexion

Building and deploying a smart contract with OpenZepplin and Solidity in less than minutes

Vous verrez cela lors d'une création réussie.

✔ What do you want to do? · Create an empty hardhat.config.js
✨ Config file created ✨
Copier après la connexion
Copier après la connexion

Pour vérifier que tout a été exécuté comme prévu, vous devriez maintenant voir deux champs dans votre répertoire actuel.

Voir ce qui a été créé dans votre répertoire

$ ls -lta
package.json
hardhat.config.js
Copier après la connexion
Copier après la connexion

Construisez votre premier contrat

Lorsque vous utilisez Hardhat, vous pouvez stocker les fichiers sources Solidity (.sol) dans un répertoire de contrats. Nous allons écrire notre premier contrat intelligent simple, appelé Storage : il permettra aux utilisateurs de stocker une valeur qui pourra être récupérée ultérieurement. Il s'agit d'une variante d'un autre contrat de démarrage avec Hardhat. Je travaille manuellement sur le processus afin que nous comprenions toutes les pièces en mouvement.

Créez le dossier des contrats et ouvrez le fichier pour le modifier

$ mkdir contracts &&  vim contracts/Storage.sol
Copier après la connexion
Copier après la connexion

Ajoutez ce qui suit au fichier Storage.sol

// contracts/Storage.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Storage {
    uint256 private _value;
    // Emitted when the stored value changes
    event ValueChanged(uint256 value);
    // Stores a new value in the contract
    function store(uint256 value) public {
        _value = value;
        emit ValueChanged(value);
    }
    // Reads the last stored value
    function retrieve() public view returns (uint256) {
        return _value;
    }
}
Copier après la connexion

Après avoir écrit ce qui précède dans le fichier, fermez vim avec :wq ou :x

Compiler la solidité

La machine virtuelle Ethereum (EVM) ne peut pas exécuter directement le code Solidity : nous devons d'abord le compiler dans le bytecode EVM. Notre contrat Storage.sol utilise Solidity 0.8, nous devons donc d'abord configurer Hardhat pour utiliser une version solc appropriée. Nous spécifions une version solc Solidity 0.8 dans notre hardhat.config.js.

$ nvm install 18.17
Copier après la connexion
Copier après la connexion
Copier après la connexion

Exécutez la commande

$ mkdir hello-world && cd hello-world
Copier après la connexion
Copier après la connexion
Copier après la connexion

Mise en place du déploiement

Nous allons créer un script pour déployer notre contrat de stockage. Nous enregistrerons ce fichier sous scripts/deploy.js.

$ npm init -y
Copier après la connexion
Copier après la connexion
$ npm install --save-dev hardhat
Copier après la connexion
Copier après la connexion

Nous utilisons des ethers dans notre script, nous devons donc l'installer ainsi que le plugin @nomicfoundation/hardhat-ethers.

$ npm install --save-dev @nomicfoundation/hardhat-ethers ethers
Nous devons ajouter dans notre configuration que nous utilisons le plugin @nomicfoundation/hardhat-ethers.

Notre configuration de casque de sécurité devrait maintenant ressembler à ceci ;

$  npx hardhat init
Need to install the following packages:
  hardhat@2.22.15
Ok to proceed? (y) 

You should see the option show up.  Select “ Create an empty hardhat.config.js”
Copier après la connexion
Copier après la connexion

Mettre en place une blockchain locale

Nous avons besoin d'un environnement dans lequel nous pouvons déployer nos contrats. La blockchain Ethereum (souvent appelée « mainnet », pour « réseau principal ») nécessite de dépenser de l'argent réel pour l'utiliser, sous forme d'Ether (sa monnaie native). Cela en fait un mauvais choix lorsque vous essayez de nouvelles idées ou de nouveaux outils.

Pour résoudre ce problème, un certain nombre de « testnets » (pour « réseaux de test ») existent : cependant, vous devrez toujours vous occuper de la gestion des clés privées, des temps de blocage de 12 secondes ou plus et obtenir cet Ether gratuit.

Pendant le développement, il est préférable d'utiliser une blockchain locale. Il fonctionne sur votre machine, vous fournit tout l’éther dont vous avez besoin et extrait les blocs instantanément.

Créer une instance locale

✔ What do you want to do? · Create an empty hardhat.config.js
✨ Config file created ✨
Copier après la connexion
Copier après la connexion

Déployer le contrat intelligent

Déployez votre contrat intelligent

$ ls -lta
package.json
hardhat.config.js
Copier après la connexion
Copier après la connexion

Interagir depuis la console

Avec notre contrat de stockage déployé, nous pouvons commencer à l'utiliser immédiatement.
Nous utiliserons la console Hardhat pour interagir avec notre contrat de stockage déployé sur notre réseau localhost.

Nous devons préciser l'adresse de notre contrat de stockage que nous avons affiché dans notre script de déploiement.

Il est important que nous définissions explicitement le réseau auquel Hardhat doit connecter notre session de console. Si nous ne le faisons pas, Hardhat utilisera par défaut un nouveau réseau éphémère, sur lequel notre contrat de stockage ne sera pas déployé.

$ mkdir contracts &&  vim contracts/Storage.sol
Copier après la connexion
Copier après la connexion

Envoi d'opérations

La première fonction, store, reçoit une valeur entière et la stocke dans le stockage du contrat. Parce que cette fonction modifie l'état de la blockchain, nous devons envoyer une transaction au contrat pour l'exécuter.
Nous enverrons une transaction pour appeler la fonction store avec une valeur numérique :

$ nvm install 18.17
Copier après la connexion
Copier après la connexion
Copier après la connexion

État de requête

L'autre fonction s'appelle retrieve et renvoie la valeur entière stockée dans le contrat. Il s'agit d'une requête sur l'état de la blockchain, nous n'avons donc pas besoin d'envoyer de transaction :

$ mkdir hello-world && cd hello-world
Copier après la connexion
Copier après la connexion
Copier après la connexion

Étant donné que les requêtes lisent uniquement l'état et n'envoient pas de transaction, il n'y a pas de hachage de transaction à signaler. Cela signifie également que l'utilisation des requêtes ne coûte aucun Ether et peut être utilisée gratuitement sur n'importe quel réseau.

Conclusion

Nous avons créé un contrat intelligent minimal et l'avons déployé sur une instance de blockchain locale pour démontrer comment nous pouvons écrire et lire des valeurs à partir de la blockchain. Si vous avez trouvé cet article utile, n'hésitez pas à l'aimer et/ou à le partager.

N'hésitez pas à commenter avec des suggestions ou des corrections que vous jugez appropriées. J'écris ces articles avant et après le travail, je les publie le plus vite possible.

Merci !

Référence :
Documents sur le casque

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal