Développer des contrats intelligents pour l'Ethereum Blockchain –
Remix est un IDE Solidity utilisé pour écrire, compiler et déboguer du code Solidity. Solidity est un langage de programmation de haut niveau, orienté sur le contrat, pour la rédaction de contrats intelligents. Il a été influencé par des langages populaires tels que C ++, Python et JavaScript.
IDE est l'acronyme de Integrated Development Environment et est une application avec un ensemble d'outils conçus pour aider les programmeurs à exécuter différentes tâches liées au développement de logiciels. et le code de débogage.
Avant de commencer à utiliser Remix pour développer des contrats intelligents, assurez-vous de connaître certains concepts de base. En particulier, donnez ces articles à propos de blockchain et Ethereum une lecture.
Qu'est-ce qu'un Smart Contract / Dapp?
Un contrat intelligent est un accord sans confiance entre deux parties cela utilise la technologie blockchain, pour obliger les parties à respecter les termes, plutôt que de s'appuyer sur les méthodes traditionnelles telles que faire confiance à un intermédiaire ou utiliser des lois pour gérer les conflits.
En utilisant la blockchain Ethereum, vous pouvez créer des contrats intelligents avec le langage Solidité (entre autres). Ethereum n'est pas la seule plate-forme qui peut être utilisée pour créer des contacts intelligents, mais c'est le choix le plus populaire, car il a été conçu dès le départ pour soutenir la construction de ceux-ci
Dapp centralisée app lication et est une application web3 qui peut avoir un frontal écrit dans des langages traditionnels tels que JavaScript, HTML, CSS et un contrat intelligent (comme code back-end) qui fonctionne sur la blockchain. Donc, vous pouvez simplement penser à un Dapp comme frontal et au (x) contrat (s) intelligent (s) associé (s).
Contrairement au contrat intelligent déployé sur la blockchain elle-même, l'interface frontale d'un Dapp peut être hébergée sur un serveur centralisé comme Un CDN ou un stockage décentralisé comme Swarm .
Accéder à l'IDE Remix
Vous pouvez accéder à l'IDE Remix de différentes façons: en ligne, via un navigateur web comme Chrome, depuis une copie installée localement, ou de Mist (le navigateur Ethereum Dapp).
Utilisation de l'IDE Remix dans le navigateur
Vous pouvez accéder à l'IDE Remix à partir de votre navigateur Web sans installation particulière. Visitez https://remix.ethereum.org/ et vous recevrez un IDE complet avec un éditeur de code et divers panneaux pour compiler, exécuter et déboguer vos contrats intelligents. Vous aurez un exemple par défaut Ballot contrat avec lequel vous pouvez jouer
Démarrage de Remix IDE depuis Mist
Vous pouvez démarrer l'IDE Remix depuis Mist en cliquant sur le Développer puis Open Remix IDE . Le remix sera ouvert dans une nouvelle fenêtre. Si c'est la première fois que vous exécutez l'EDI, un simple exemple de contrat Ballot vous sera présenté
Pour vous familiariser avec Mist, veuillez consulter cet article . ] Exécution de votre propre copie de l'IDE Remix
Vous pouvez également exécuter votre propre copie de l'IDE Remix en exécutant les commandes suivantes:
npm install remix-ide -g
remix-ide
Vous devez avoir installé Node.js et npm. Consultez ce dépôt GitHub pour plus d'informations
Remix Panels
Après avoir vu comment ouvrir l'IDE Remix, voyons maintenant les différents panneaux qui composent l'EDI.
Explorateur de fichiers
L'explorateur de fichiers fournit une vue avec les fichiers créés stockés dans le stockage du navigateur. Vous pouvez renommer ou supprimer un fichier en cliquant dessus avec le bouton droit de la souris, puis en choisissant la bonne opération dans le menu contextuel.
Veuillez noter que l'explorateur de fichiers utilise le stockage local du navigateur par défaut, ce qui signifie que vous pouvez perdre tous vos fichiers si vous effacez ou si le système d'exploitation efface automatiquement le stockage. Pour un travail avancé, il est recommandé d'utiliser Remixd – un outil Node.js (disponible à partir de npm npm install -g remixd
) qui permet à l'IDE Remix d'accéder au système de fichiers de votre ordinateur. 19659003] Voyons maintenant les différentes actions que vous pouvez effectuer en utilisant les boutons en haut de l'explorateur
Création / ouverture de fichiers dans un remix
Vous pouvez créer un nouveau fichier dans le le stockage local du navigateur en utilisant le premier bouton avec l'icône +
en haut à gauche. Vous pouvez ensuite fournir un nom dans la boîte de dialogue ouverte et appuyer sur OK .
En utilisant le second bouton en haut à gauche, vous pouvez ouvrir un fichier Solidité existant de votre système de fichiers dans l'IDE Remix. Le fichier sera également stocké dans le stockage local du navigateur.
Publication des fichiers de l'explorateur en tant que GitHub Gists
En utilisant les troisième et quatrième boutons en haut à gauche, vous pouvez publier des fichiers de l'EDI comme GitHub public
Copier des fichiers dans une autre instance de Remix IDE
le cinquième bouton en haut à gauche, vous pouvez copier des fichiers du stockage local vers une autre instance de Remix en fournissant l'URL de l'instance.
Connexion au système de fichiers local
Le dernier bouton peut être utilisé pour connecter le remix IDE à votre système de fichiers local si vous utilisez l'outil Remixd.
Solidity Code Editor
L'éditeur de code Solidity fournit l'interface où vous pouvez écrire votre code avec de nombreuses fonctionnalités telles que coloration syntaxique, auto-recompling, auto -sauvegarde etc. Vous pouvez ouvrir plusieurs onglets et augmenter / diminuer la taille de la police en utilisant le bouton +/- dans le coin supérieur gauche
Terminal [19659005] La fenêtre du terminal sous l'éditeur intègre un interpréteur JavaScript et l'objet web3
. Vous pouvez exécuter du code JavaScript dans le contexte actuel, visualiser les actions effectuées à partir de l'EDI, visualiser toutes les transactions réseau ou transactions créées à partir de l'EDI Remix, etc. Vous pouvez également rechercher des données dans le terminal et effacer les journaux.
Panneau Onglets
Le panneau Onglets fournit plusieurs onglets pour travailler avec l'EDI:
l'onglet Compiler : utilisé pour compiler un contrat intelligent et la publication sur Swarm
l'onglet Run : utilisé pour envoyer des transactions à l'environnement configuré
l'onglet Settings : utilisé pour mettre à jour les paramètres comme la version du compilateur et de nombreux paramètres généraux pour l'éditeur
l'onglet Debugger : utilisé pour déboguer des transactions
l'onglet Analysis : utilisé pour obtenir des informations sur la dernière compilation
the ] Onglet : utilisé pour se connecter à la communauté Remix
Remix Execution Environments
L'EDI Remix fournit de nombreux environnements pour l'exécution des transactions:
JavaScript VM: une blockchain sandbox implémentée avec JavaScript dans le navigateur pour émuler un vrai blockchain.
Injecté Web3: un fournisseur qui injecte web3 tel que
Mist
etMetamask
qui vous connecte à votre blockchain privée .Web3 Provider: un noeud distant avec geth, parité ou n'importe quel client Ethereum. Peut être utilisé pour se connecter au réseau réel, ou à votre blockchain privée directement sans MetaMask au milieu
Utiliser Remix IDE pour compiler et déployer un Smart Contract
Pour démontrer ce que nous pouvons réaliser l'utilisation de Remix IDE, nous allons utiliser un exemple de contrat et nous verrons comment nous pouvons:
- compiler le contrat dans Remix IDE
- voir quelques avertissements émis par le compilateur lorsque les meilleures pratiques ne sont pas suivies [19659063] déployer le contrat sur le JavaScript EVM (Ethereum Virtual Machine)
- effectuer des transactions sur le contrat déployé
- voir exemple lit et écrit dans le terminal IDE.
Nous utiliserons l'exemple de contrat suivant de ce tutoriel qui implémente une tombola blockchain:
pragma solidity ^ 0.4.20;
contrat Blocksplit {
adresse [] acteurs publics;
mapping (adresse => booléen) public uniquePlayers;
adresse [] gagnants du public;
adresse charité publique = 0xc39eA9DB33F510407D2C77b06157c3Ae57247c2A;
function () externe payable {
play (msg.sender);
}
fonction play (adresse _participant) payable public {
require (msg.value> = 1000000000000000 && msg.value <= 100000000000000000);
require (uniquePlayers [_participant] == false);
players.push (_participant);
uniquePlayers [_participant] = true;
}
}
Le contrat déclare certaines variables, telles que:
- La variable de tableau
players
qui contient les adresses des participants au tirage au sort. - La correspondance
uniquePlayers
qui est utilisé pour sauvegarder des joueurs uniques afin que les joueurs ne participent pas plusieurs fois à partir de la même adresse. (Une adresse sera mappée à une valeur booléenne, vraie ou fausse, indiquant si le participant a déjà participé ou non.) - La variable de tableau
gagnants
qui contiendra les adresses des gagnants. 19659063] Lacharité
variable, qui contient une adresse codée en dur d'une organisation caritative où les profits iront.
Il déclare également:
- Une fonction de secours marquée
payable
qui permet au contrat intelligent d'accepter les paiements. - Une fonction
play ()
qui permet aux participants de: entrez la tombola en fournissant une adresse.
Vous pouvez lire plus de détails sur ce contrat à partir de ce tutoriel où tout le code est expliqué en détail.
Maintenant, allez-y et ouvrez l'IDE Remix de remix.ethereum.org .
Ensuite, créez un nouveau fichier en cliquant sur le bouton avec l'icône +
Une nouvelle boîte de dialogue apparaîtra Entrez un nom pour votre fichier ( blocksplit.sol
), puis appuyez sur OK :
[19659003] Un nouvel onglet s'ouvrira dans l'éditeur de code où vous pourrez commencer à écrire votre contrat. Il suffit donc de copier et coller le code du contrat précédent.
Commencez par compiler le contrat. De l'onglet Compiler cliquez sur Bouton Démarrer pour compiler
Nous recevons un message avec deux avertissements soulevés par l'analyse statique du code.
Si vous cliquez sur la boîte de message, vous serez redirigé vers l'onglet Analysis qui fournit plus d'informations sur les avertissements:
[19659003] Le premier avertissement est levé si les besoins en gaz des fonctions sont trop élevés, et le second est levé si les fonctions
require ()
ou assert ()
ne sont pas utilisées correctement.
Vous pouvez également utiliser les cases à cocher dans l'onglet Analysis pour déterminer quand vous voulez que le compilateur émette des avertissements.
[19659003] Ensuite, déployons le contrat avec notre machine virtuelle JavaScript. Passez à l'onglet Exécuter et sélectionnez JavaScript VM dans le menu déroulant
Ensuite, cliquez sur Déployer le bouton sous le nom du contrat
Une fois que le contrat est déployé avec succès sur la machine virtuelle JavaScript, une boîte s'ouvrira en bas de la Onglet
Sous le nom et l'adresse du contrat déployé, nous avons des boutons avec des couleurs rouge et bleu. Les boutons rouges renvoient aux actions qui provoquent une écriture dans la blockchain (dans notre cas les fonctions de repli et de jeu) et nécessitent une transaction, où les boutons bleus se réfèrent à la lecture de blockchain ( charité, joueurs, uniquePlayers et gagnants public variables que nous avons définies dans le code du contrat).
Vous verrez également un message similaire à la capture d'écran suivante dans le terminal IDE:
Pour l'instant, la seule variable qui détient une valeur est la charity variable, car l'adresse est codée en dur dans le code, donc si vous cliquez sur le bouton correspondant, vous obtiendrez la valeur de cette adresse.
Le contrat est construit pour permettre à un participant de participer au tirage au sort en envoyant simplement de l'éther à l'adresse (en utilisant une fonction de rappel payable) ou encore en appelant la fonction play ()
avec l'adresse du participant
faux comptes avec 100 éther chacun, que nous pouvons utiliser pour tester le contrat. Vous pouvez sélectionner un compte courant dans le menu déroulant avec le nom Compte sous la liste déroulante Environnement .
envoyer de l'argent au contrat, nous avons d'abord mis la variable Value (entre 0.001 et 0.1) et l'unité (ether) dans le menu déroulant. Ensuite, nous appelons la fonction de repli en cliquant simplement sur le bouton rouge correspondant
C'est tout. Nous avons envoyé de l'argent au contrat. L'adresse du compte sélectionné doit être ajoutée au tableau players
. Pour vérifier cela, il suffit de cliquer sur le bouton des joueurs bleus
Vous pouvez ajouter d'autres participants en sélectionnant un nouveau compte et répéter le précédent processus (pour vérifier si un compte est ajouté au tableau, entrez simplement l'index, de 0 à 4, pour ce compte dans la zone de texte à côté du bouton players ).
Si vous ajoutez un compte qui a déjà participé, vous devriez recevoir un avertissement dans le terminal et la transaction échouera avec un message du type:
Remix Alternatives
Il existe de nombreuses alternatives pour un développement et un déploiement faciles de contrats intelligents, tels que:
Truffle : annoncé comme le couteau suisse Ethereum et prétend être le cadre de développement le plus populaire pour Ethereum avec pour mission de vous faciliter la vie. Nous allons beaucoup travailler avec Truffle dans les prochains tutoriels
Embark : un framework qui vous permet de développer et de déployer facilement des applications décentralisées (DApps).
MetaMask : un pont qui vous permet de visiter le web distribué de demain dans votre navigateur aujourd'hui. Il vous permet d'exécuter Ethereum DApps directement dans votre navigateur sans exécuter un nœud Ethereum complet. Pour savoir comment développer avec MetaMask, cochez cette faq .
Dapp : Dapp est un outil de ligne de commande simple pour le développement de contrats intelligents.
différents plugins pour ajouter le support Solidity à IDEs populaires tels que ce plugin Visual Code et ce plugin Atom etc
Conclusion
Nous vous avons présenté l'IDE Remix pour développer des contrats intelligents pour la blockchain Ethereum . Vous trouverez des informations plus détaillées dans les docs .
Avec une introduction de base derrière vous, n'hésitez pas à plonger plus profondément et à expérimenter en changeant le code et en explorant les différentes fonctions et onglets proposés par l'éditeur. 19659123] Ahmed Bouchefra » class= »avatar avatar-96 wp-user-avatar wp-user-avatar-96 alignnone photo »/>
Source link