Cryptomonnaie

Construire un pont Etheruem – Partie 1 – Bouzaiene Chemseddine

Construire un pont Etheruem - Partie 1 - Bouzaiene Chemseddine


La blockchain fait partie de ces technologies qui retiennent beaucoup l'attention ces dernières années en raison des crypto-monnaies et du battage publicitaire qui les entoure. De plus en plus de développeurs sont intéressés par cette nouvelle technologie et ont commencé à construire leurs propres projets basés sur une chaîne de blocs, ce qui explique pourquoi nous avons besoin d'un environnement de chaîne de blocs convivial. Ethereum Blockchain est l’un des plus populaires. Il fournit un ensemble d’outils qui facilite la tâche des débutants, même pour les débutants. Il possède son propre langage de programmation orienté objet: Solidity. La communauté des chaînes de blocs, des petites entreprises aux grandes entreprises, apporte un soutien considérable à l'amélioration continue du travail du système. Mais comme tout le reste, il y a des inconvénients, puisque Ethereum est une Blockchain publique et que de nombreuses entreprises, voire même des particuliers, en dépendent, un des problèmes majeurs est l’effet sur la vitesse de traitement de la transaction. En fait, vous pouvez affirmer que le nombre de transactions vérifiées par seconde est relativement faible, ce qui entraîne souvent de nombreuses heures d’attente pour traiter la demande de l’utilisateur. nous devrions également mentionner les frais d'essence qui peuvent être assez coûteux. Certains de ces problèmes pourraient être résolus en compromettant un certain niveau de décentralisation, en migrant vers une blockchain privée. De cette façon, les transactions de traitement et de traitement seront beaucoup plus rapides, plus sûres et les frais d’essence seront considérablement réduits.

Dans ce tutoriel, nous vous expliquerons comment construire un pont Ethereum avec un microservice Nodejs en guise d'oracle pour connecter deux blockchains public et privé. Mais, tout d'abord, voyons pourquoi nous avons besoin d'un pont Ethereum et discutons c'est des cas d'utilisation.

Le pont Ethereum est nécessaire lorsque nous devons utiliser le marché potentiel d’ETHER, la confidentialité et la rapidité d’une blockchain Ethereum configurable privée, comme la mise en œuvre d’un système à double jeton, prenons un exemple. Disons que nous voulons construire un jeu simple; une application décentralisée sur la blockchain Ethereum. nous aurons trop d'interactions dans le jeu et pour chaque interaction, le joueur doit attendre 15 secondes en moyenne pour valider la transaction. Chaque fois, il devra payer de l'essence, ce qui finira par coûter trop cher aux joueurs.

Une solution consiste à utiliser une blockchain privée. De cette façon, le joueur peut jouer au jeu gratuitement, sans gaz et avec un temps de blocage presque instantané. Une fois le jeu terminé et le moment de régler les paiements, le pont interagira avec la blockchain publique et ajoutera ou récupérera de l’argent sur le compte de chaque joueur en fonction du résultat du jeu.

Le flux Dapp

Dans notre cas, pour simplifier les choses, nous allons déployer deux contrats intelligents sur les chaînes de blocs Ethereum et les relier à l'aide d'un Oracle construit avec NodeJs. Le contrat smart blockchain privé sera composé de deux fonctions principales: l’une qui enregistrera chaque interaction de l’utilisateur avec le Dapp et la seconde servira à retirer de l’argent à la fin du jeu et le contrat intelligent de la blockchain publique sera composé d’une fonction cela changera le solde du joueur après avoir reçu son résultat du pont Ethereum, c'est simple, non? Je sais que cela peut sembler compliqué pour le moment, mais restez avec nous et vous obtiendrez la photo, passons maintenant à la technique.

Les outils dont nous aurons besoin:

  • ganache
  • Nœud JS
  • Truffe
  • Métamasque
  • Compilateur Solidity
  • N'importe quel éditeur de code

La blockchain Ethereum privée parfaite que vous pouvez utiliser pour exécuter des tests, exécuter des commandes et inspecter des états tout en contrôlant le fonctionnement de la chaîne.

vous pouvez considérer la ganache comme votre Blockchain personnelle; elle fait partie de l’écosystème de la truffe où vous pouvez développer des applications décentralisées (Dapps), déployer vos contrats et les tester. Comme l'écriture dans la blockchain nécessite des frais d'essence, Ganache vous donne dix comptes contenant de faux éthers que vous pouvez utiliser pour payer vos tests. comme il n’ya qu’une blockchain locale, vous n’avez pas besoin de payer de l’argent réel; par conséquent, de faux éthers feront l'affaire.

Installation:

Télécharger Ganache https://github.com/trufflesuite/ganache/releases/tag/v2.1.0

$ chmod a + x Ganache-2.1.0.AppImage

$ ./ganache-1.3.0-x86_64.AppImage

NodeJS sera notre environnement de développement pour Oracle et Truffle nécessite NodeJS v8.9.4 ou version ultérieure (au moment de la rédaction), la prochaine étape consistera donc à installer NodeJS à partir du référentiel de distribution Ubuntu 18.04.

Installation:

$ sudo apt update

$ sudo apt installer nodejs npm

Une fois que npm est installé, vous pouvez installer Truffle avec cette commande. Truffle constituera notre environnement de développement pour les contrats intelligents:

$ sudo npm installer -g truffe

Metamask est un outil fondamental et très puissant pour le développement d'éthereum. En bref, il vous permet de transformer votre navigateur chrome classique en un système à chaîne, ce qui vous permet d'exécuter Ethereum Dapps directement sur votre navigateur sans avoir à exécuter un nœud complet Ethereum. ce sera fondamentalement un pont non seulement vers la blockchain principale d'Ethereum, mais également vers de nombreux autres réseaux de tests de blockchain, notamment Ganache et Ropsten, sur lesquels nous allons travailler tout au long de ce tutoriel. Vous pouvez également créer votre propre blockchain et vous y connecter. cette extension est très simple à installer et à utiliser, ce tutoriel vous guidera à travers elle. Assurez-vous de sauvegarder votre phrase de départ Metamask dans un endroit sûr.

Lien comment configurer MetaMask

Nous utiliserons le langage de programmation Solidity pour notre contrat à puce Ethereum. Solidity est le langage utilisé pour le développement d'Ethereum. Il s'agit d'un langage de haut niveau, orienté objet, comme de nombreux autres langages que vous avez pu utiliser. Si vous avez des connaissances en javascript, la solidité ne sera pas si différente, mais même si vous ne le connaissez pas, vous trouverez ici un moyen amusant et amusant d’apprendre la solidité. CryptoZombies

installez le compilateur en utilisant cette commande:

npm install -g solc

Nous utiliserons Visual Studio Code comme éditeur. N'hésitez pas à télécharger des extensions qui faciliteront un peu la tâche. Certains de mes favoris personnels sont Solidity, Plus joli pour formater votre code.

1- Créer la structure du dossier:

Créez un dossier Bridge sous ce dossier, créez trois dossiers.

Oracle / Privé / Public

Pont

├── Oracle // ce dossier contiendra l'API du pont

├── Privé // ce dossier contiendra le contrat Truffe Private Smart

└── Public // ce dossier contiendra le contrat Truffe Public Smart

2- Ajouter l'adresse ganache RPC SERVER (IP) à la métamasque:

3 - Créer un compte Infura:

  • inscrivez-vous à Infura ici
  • enregistrer votre clé API Infura

Pour déployer la chaîne de blocs privée Dapp dans cet exemple, il s’agit simplement d’un contrat intelligent qui enregistre la transaction. Commencez par lancer un nouveau projet de truffe, puis installez le projet de truffe dans le dossier privé à l’aide de cette commande.

$ truffle init

Une fois que nous aurons créé un projet truffé, nous disposerons de quelques dossiers et fichiers que nous voudrons personnaliser.

Voyons donc cette architecture élément par élément, nous allons d’abord remarquer le dossier contrats

contrats: c’est là que nous allons rédiger nos contrats intelligents, mais qu’est-ce exactement un contrat intelligent? Comme son nom l’indique, les contrats intelligents ressemblent aux contrats réels, mais dans ce cas, ils sont complètement numériques. C’est là que nous pouvons trouver toute la logique commerciale de notre application, c’est-à-dire, essentiellement, où nous allons écrire tout le code qui écrira ou lira depuis la blockchain d’Ethereum. la meilleure façon de les comprendre pourrait être à travers les mots du cofondateur de ethereum-Blockchain lui-même, Vitalik Buterin, ici

migrations: si vous connaissez le développement Web et les frameworks tels que dotNet, vous avez probablement créé des migrations pour modifier votre base de données. Dans notre cas, il s’agit de fichiers javascript qui nous permettent de déployer nos contrats intelligents sur la blockchain d’Ethereum, car nous créons une transaction sur la blockchain, ce qui en modifie l’état, de la même manière que notre base de données. Ainsi, au fur et à mesure que nous rédigerons ou modifierons du code, nous créerons de nouvelles migrations pour suivre l’évolution de notre projet. C’est donc essentiellement un ensemble d’étapes que nous avons suivies lors de la construction de notre application, nous permettant d’avoir un historique des modifications apportées. nous exécutons ces migrations simplement via la ligne de commande.

$ truffe migrer

plus de détails sur les migrations ici

truffle-config.js (ou truffle.js): ce fichier est destiné à exécuter vos configurations personnelles, telles que le réseau sur lequel vous déploierez votre projet…

Dossier de construction:

Une fois vos contrats compilés, vous trouverez des artefacts dans le dossier build / contracts (qui seront créés s'il n'existait pas lorsque vous avez créé le projet pour la première fois), tels que migrations.json et YourSmartContract.json .. qui contiennent des informations importantes. (Abi ..) qui nous permettra de déployer notre application avec succès, nous ne devrions donc pas modifier ces fichiers nous-mêmes, ils seront automatiquement écrasés à mesure que le projet change.

Dossier de test:

truffle offre un moyen de faciliter le test de vos contrats en fournissant des outils tels que le cadre de test Mocha et Chai pour les assertions afin d'exécuter les tests et de s'assurer que tout fonctionne correctement.

Créez maintenant un nouveau fichier dans le dossier Contracts, nommez-le PrivateQueue.sol et copiez-y ce code de contrat intelligent.

Nous devons maintenant configurer le fichier truffle-config et ajouter un nouveau fichier de migration dans le dossier migrations.

lors de chaque migration, l'objet deployer doit être passé en tant que premier paramètre de la fonction module.exports (), ce qui est essentiel pour déployer avec succès notre contrat intelligent.

ceci sera expliqué plus en détail dans la documentation de la truffe que vous trouverez ici.

Puisque nous allons travailler sur une blockchain privée, nous devons ensuite définir le réseau avec lequel nous allons interagir. Nous allons d’abord configurer notre réseau privé, notre réseau local, Ganache. Dans le fichier truffle-config.js (ou truffle.js en fonction de votre projet), nous commençons par déclarer le premier réseau à l'intérieur des crochets du réseau, nous devons indiquer le numéro de port, l'identifiant du réseau qui sera inscrit sur la barre supérieure. de votre interface Ganache, l’adresse de l’hôte sera notre hôte local.

Pour pouvoir exécuter notre migration, nous devons spécifier chaque fois le réseau que nous voulons exécuter. Nous pouvons le faire en ajoutant simplement son nom après la migration de truffle de la manière suivante:

$ truffle migrate - réseau privé

Maintenant que notre contrat intelligent est déployé sur la blockchain, nous pouvons procéder à la vérification des fichiers de construction, mais commençons par expliquer ce qui vient de se passer.

Truffle a commencé par la compilation de PrivateQueue.sol et Migrations.sol dans le dossier contracts du dossier de construction. Nous aurions pu faire cette étape d’abord en utilisant la commande «truffle compile». Comme nous ne l’avons pas fait, “truffle migrate” l’a fait pour nous.

Ensuite, il a déployé les 2 contrats sur le réseau ganache. Nous avons reçu les adresses de transaction et de contrat pour chaque contrat déployé. Le nombre de transactions a pu être vérifié en ganache.

Mais pourquoi exactement déployons-nous ce contrat intelligent migration.sol et payons-nous le gaz pour cela? pour le dire simplement parce que le contrat intelligent de migration tient compte du nombre de contrats intelligents déployés sur la blockchain. Ainsi, lorsque nous mettons à niveau un contrat intelligent ou en ajoutons un nouveau, nous n'avons pas à redéployer tous les contrats. déployer

Maintenant que tout est configuré pour la blockchain privée afin de vérifier que notre contrat intelligent est déployé, nous pouvons vérifier l'interface de ganache et nous remarquerons que de nouveaux blocs ont été créés et que le solde du compte a diminué en raison des frais de déploiement que nous avons payés.

Nous allons maintenant passer à la configuration de la blockchain publique et le contrat intelligent dans ce guide utilisera Ropsten testnet.

Répétez le même processus de construction du contrat intelligent de blockchain privé:

1- passez truffle init cmd sous le dossier public

2- créer un nouveau fichier "PublicQueue" sous le dossier contracts copier le code ci-dessus init

3-ajouter un nouveau fichier de migration 2_public_migration.js sous migrations

4-avant de déployer le contrat intelligent, nous devons préparer le fichier de configuration de la truffe. Cette fois, nous allons déployer vers la blockchain publique de Ropsten, de sorte que la configuration est différente.

5 -Déploiement du contrat:

Nous devons garder à l'esprit qu'écrire dans la blockchain coûte toujours des frais d'essence. Pour déployer notre contrat intelligent, nous devons payer pour que nos transactions passent, mais comme nous travaillons sur Testnet et non sur le réseau principal Ethereum, nous ne le ferons pas. avoir besoin d'argent réel.

Afin de déployer sur le réseau Ropsten, nous pouvons simplement obtenir de faux éthers en fournissant simplement votre compte Ropsten à l'adresse Metamask ici, ce qui vous donnera les éthers pour payer vos frais d'essence.

Une fois que votre contrat intelligent et vos migrations sont prêts à être compilés et déployés, exécutez la commande truffle migrate et précisez votre réseau:

$ truffle migrate - réseau ropsten

Pour vérifier si votre transaction est réussie, vous pouvez simplement copier votre adresse de transaction et voir si elle existe sur Etherscan. N'oubliez pas de passer à la blockchain Ropsten.

5 - Maintenant, passez cette commande dans le dossier public de la blockchain:

$ truffle migrate - réseau ropsten

Maintenant, après le déploiement de nos deux contrats intelligents, nous établirons très prochainement le pont qui relie les deux contrats intelligents dans le prochain article.

Afficher plus

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Articles similaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page
Fermer