WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Sécurisation d’un réseau bancaire avec la technologie blockchain.


par Kawter et Chaimaa BOUDGHENE STAMBOULI et BOUDJEMAA
Université Abou Bekr Belkaid de Tlemcem - Master 2 réseaux et télécommunications 2020
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

IV.9.4 Création du bloc genesis :

Une autre chose que nous devrions ajouter à notre structure de données blockchain est le bloc genesis. Mais qu'est-ce qu'un bloc de genèse ? Eh bien, un bloc de genèse est simplement le premier bloc d'une chaîne de blocs.

À l'intérieur de la fonction constructeur blockchain tapons la ligne de code suivante : this.createNewBlock(1405, '0', '0');

Dans le code précédent, nous avons passé la valeur nonce à 1405, previousBlockHash à 0 et la valeur de hachage à 0. Ce ne sont que des valeurs arbitraires ; vous pouvez ajouter la

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

valeur que vous souhaitez ajouter. Maintenant, enregistrons le fichier et testons le bloc genesis dans le fichier test.js. Comme le montre la capture d'écran suivante :

Figure IV- 80: Créations du bloc genesis

Dans la capture d'écran précédente, pour le tableau de chaînes, on peut voir que nous avons un bloc à l'intérieur de la chaîne. Ce bloc est notre bloc de genèse et il a un nonce de 1405, un hachage de 0 et un précédent Blockhash de 0. Dorénavant, toutes nos chaînes de blocs auront un bloc de genèse.

IV.8.6 Création d'une API Express

Dans cette section, nous allons créer une API de liste de tâches RESTful (c'est-à-dire des points de terminaison qui créeront une tâche, obtiendront ou liront la liste de toutes les tâches, liront une tâche particulière, supprimeront une tâche et mettront à jour une tâche). À l'aide d'Express et couvrir quelques bonnes pratiques de développement. On découvre comment toutes les pièces fonctionnent ensemble lorsqu'on crée un projet.

IV.8.6.1 Configuration du serveur

Installons express et nodmon, express sera utilisé pour créer le serveur tandis que nodmon nous aidera à garder une trace des modifications de notre application en regardant les fichiers modifiés et redémarrer automatiquement le serveur.

IV.8.6.1.1 Installation d'express

Nous pouvons maintenant installer Express on exécute cette commande :

#npm i express

IV.8.6.1.2 Crée le fichier serveur.js

Au début du code est importé le express module et créé une app. Après avoir créé un itinéraire basé sur la méthode HTTP. Les objets reset req sont fournis par le noeud, ce qui équivaut à une requête HTTP et à une réponse. Pour terminer, je dis à l'instance créée d'écouter sur le port 3000

Figure IV- 81: Création de fichier serveur.js

[125]

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[126]

IV.8.6.1.3 Démarrer le serveur express

Si tout s'est bien passé, rendez-vous sur localhost : 3000

Figure IV- 82: Démarrage du serveur express

Passons à chrome et allons au port localhost 3000, voici notre `Hello Word '

Figure IV- 83: Exécution du serveur

Ce fichier est aussi simple que possible lors de la définition d'une application Express. Nous avons créé un objet d'application et l'avons exporté pour utilisation.

IV.8.6.1.4 Configuration des itinéraires

Le routage consiste à déterminer comment une application répond à une demande client pour un point de terminaison spécifique, qui est un URI (ou chemin) et une méthode de demande HTTP spécifique (GET, POST, etc.).

§ L'URI (ou chemin) de la demande que nous voulons capturer.

§ Une fonction de gestionnaire (qui accepte un objet de demande et de réponse comme arguments).

IV.8.6.1.5 Quelle méthode HTTP devrions-nous utiliser ?

Lors de la construction d'une API REST, chaque méthode HTTP correspond à une action contre une ressource servie par l'API.

§ GET : récupérer l'objet d'une ressource particulière ou répertorier tous les objets

§ POST : créer un nouvel objet de ressource

§ PATCH : effectuer une mise à jour partielle de l'objet d'une ressource particulière

§ PUT : écrase complètement l'objet d'une ressource particulière

§ DELETE : supprime l'objet d'une ressource particulière

Nous pouvons commencer à définir notre API en spécifiant les itinéraires pour une seule ressource.

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[127]

IV.8.6.2 Construire les fondations d'API

Dans cette section, nous allons continuer à construire notre API blockchain. Puis nous allons commencer par construire les trois points de terminaison suivants dans notre API :

§ Le premier point de terminaison est / blockchain, ce qui nous permet d'aller chercher notre blockchain entière afin que nous puissions regarder les données qui s'y trouvent.

§ Le deuxième point de terminaison est / transaction, qui nous permet de créer une nouvelle transaction.

§ Le troisième critère est / le mine, qui nous permettent d'exploiter un nouveau bloc en utilisant la méthode ProofOfWork que nous avons faite dans la dernière section.

Dans le fichier api.js, définissons ces points de terminaison comme suit :

Figure IV- 84: Interface d'applications Blockchain

Maintenant, une autre chose que nous voulons faire est apportez quelques modifications à la méthode listen :

app.listen(3000, function(){console.log('listening on port 3000...') ;

 

À l'intérieur de cette fonction, nous allons simplement imprimer l'écoute sur la chaîne du port 3000. La raison pour laquelle nous faire est juste pour que lorsque notre port est en cours d'exécution, nous verrons ce texte. Allons allez sur notre terminal et on lance notre fichier api.js encore :

Comme nous pouvons le voir, la capture d'écran précédente nous montre que nous écoutons le port 3000. Chaque fois que nous voyons ce texte, nous savons que, nos serveurs fonctionnent.

IV.8.6.2.1 Installation de Postman et de l'analyseur de corps

La première chose qui nous va faire est d'installer un nouveau package appeler nodemon. Dans notre répertoire programmation_BC dans notre terminal, nous écrirons la commande suivante :

[128]

#npm i nodemon --save

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

Après cela, nous apportons une modification dans l'un de nos fichiers et l'enregistrons. Cette bibliothèque nodemon redémarrer automatiquement notre serveur pour nous, afin que nous ne devions pas aller et venir du terminal à notre code pour redémarrer le serveur chaque fois que nous faisons un changement.

Donc, nous allons ouvrir notre fichier package.json. Où il est écrit "scripts", nous allons ajouter un nouveau script :

Figure IV- 85: Automatisation de ce processus

Chaque fois que l'un de ces fichiers JS sont modifiés et enregistrés, nous voulons nodemon pour redémarrer notre fichier dev/api.js pour nous. Sauvegarder le fichier package.json. Maintenant, chaque fois que nous faisons un changement à l'intérieur de notre dossier de développement et l'enregistrer, le serveur se redémarrera tous seul. Testons cela.

Allons à notre terminal. Notre serveur devrait maintenant utiliser nodemon après cette commande

Figure IV- 86: Exécution de nodemon

Nous verrons que notre serveur redémarre tous seul, on va faire une petite modification sur le texte Hello world

app.get('/', function (req, res) {res.send('Hello World!!!'); });

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[129]

Ceci est juste un outil que nous utilisons pour rendre le développement un peu plus facile pour nous.

Maintenant, un autre outil que nous voulons utiliser est appelé Postman. L'outil Postman nous permet d'appeler n'importe quels points de terminaison, ainsi que d'envoyer des données à ces points de terminaison avec nos demandes.

IV.8.6.2.2 L'utilisation de Postman

Téléchargez l'application. Une fois que nous avons téléchargé l'application, nous pouvons effectuer un petit essai de la façon dont nous pouvons utiliser cette application Postman pour atteindre notre point de terminaison / transaction.

Pour tester que le point de terminaison / transaction est travailler, renvoyons quelque chose le résultat. Dans notre point de terminaison / transaction, nous avons ajouté la ligne suivante

app.post('/transaction', function(req,res) {res.send('It works!!!');

 

Et maintenant, quand nous atteignons ce point, nous devrions obtenir le texte It works!!! Cliquons sur Envoyer et nous obtiendrons la sortie, comme indiqué dans la capture d'écran suivante :

Figure IV- 87: Tester le point de terminaison / transaction

Maintenant, la plupart du temps, nous frappons un message dans notre API, nous allons vouloir lui envoyer des données. Par exemple, lorsque nous atteignons le endpoint / transaction, nous souhaitons créer une nouvelle transaction. Par conséquent, nous devons envoyer les données de transaction, telles que le montant de la transaction, l'expéditeur et le destinataire. Nous pouvons le faire en utilisant Postman, et c'est plus simple. Ce que nous allons faire ici, c'est envoyer des informations dans le corps de notre demande de publication. Vous pouvez le faire en cliquant sur l'onglet Corps comme le montre la figure suivante :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[130]

Figure IV- 88: Envoi des données de transaction à partir du postman

Nous pouvons également voir que nous avons fait un JSON objet et y mettre des données. On a ajouté le montant comme 10 bitcoins, le l'adresse de l'expéditeur et l'adresse du destinataire.

Pour tester si nous recevons ou non toutes ces informations à l'intérieur de notre endpoint, nous allons écrire l'ensemble du corps de la demande. Le req.body est simplement l'information que nous avons créée dans l'objet JSON:

Figure IV- 89: Configuration de req.body

Maintenant, pour que $ {req.body.amount} fonctionne, nous besoin d'installer une autre bibliothèque afin de accéder à ces informations. Revenons en notre terminal ; nous allons quitter le processus et nous allons installer un package appeler body-parser :

Figure IV- 90: Installation de body-parser

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[131]

Maintenant, redémarrons notre serveur avec npm start. Lorsqu'il s'agit d'utiliser l'analyseur de corps, nous voulons simplement l'importer en haut de notre fichier après la ligne où nous application importée.

Figure IV- 91: Importation de fichier body-parser

Maintenant que nous utilisons l'analyseur corporel, nous devrait pouvoir accéder au montant. Enregistrons le fichier api.js et essayons d'envoyer la demande.

Figure IV- 92: Envoi de la demande

Ça a marché ! Nous avons renvoyé la chaîne, qui indique que le montant de la transaction est 10 bitcoins. Dans notre terminal, nous pouvons voir que l'ensemble informations concernant le montant, l'expéditeur, et le destinataire s'affiche :

Figure IV- 93: Réception de la chaine envoyée

IV.8.6.2.3 Construire le /blockchain endpoint

Dans cette section, nous allons interagir avec notre endpoint / blockchain. Cela signifie que nous devra importer notre blockchain de notre Fichier blockchain.js comme ça :

Figure IV- 94: Importation de fichier blockchain.js

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[132]

Tout ce que ce endpoint va faire est de renvoyer toute notre blockchain à celui qui a appelé ce point de terminaison. Pour ce faire, nous allons ajouter une ligne qui enverra la réponse :

Figure IV- 95: Renvoie de la blockchain

Croyez-le ou non, c'est tout ce que nous allons faire pour ce endpoint.

§ Test de /blockchain endpoint :

Maintenant, nous pouvons tester si ce endpoint fonctionne en l'utilisant dans notre navigateur :

Figure IV- 96: Récupération de la chaine blockchain Comme nous pouvons le voir, nous récupérons notre blockchain.

IV.8.6.2.4 Construire la /transaction endpoint

Dans notre / transaction endpoint, nous allons ajouter la ligne suivante :

Figure IV- 97: Créer un nouvel objet de ressource s'appelle transaction

Le résultat sera enregistré dans blockIndex, et c'est ce que nous allons renvoyer à celui qui appelle ce point de terminaison. Nous vous le renverrons sous forme de note : Le résultat sera enregistré dans blockIndex, et c'est ce que nous allons renvoyer à celui qui appelle ce point de terminaison. Nous vous le renverrons sous forme de note.

Comme vous pouvez le voir, la note nous indiquera à quel bloc la transaction sera ajoutée. Nous avons utilisé l'interpolation de chaîne pour passer le valeur blockIndex. Enregistrons ce fichier et testons ce point de terminaison à l'aide de Postman.

§ Test de /transaction endpoint :

Passons maintenant à Postman et appliquons des paramètres similaires à ceux que nous avons définis précédemment :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[133]

Figure IV- 98: Création des données Testons ce point de terminaison :

Figure IV- 99: Test du point de terminaison /transaction

Comme nous pouvons le voir, lorsque nous avons cliqué sur Envoyer bouton sur Postman, nous avons obtenu la sortie La transaction sera ajoutée dans le bloc 2. La raison pour laquelle nous avons le bloc 2 ici est qu'un bloc avait déjà été créé lorsque nous avons lancé notre blockchain, qui a créé la genèse bloquer. Par conséquent, cette transaction a ajouté au bloc 2.

Une autre façon que nous pouvons tester pour nous assurer que ce point de terminaison a fonctionné correctement est en appuyant sur notre / blockchain endpoint.

Figure IV- 100: Réception de la chaine dans le navigateur

Comme nous pouvons le voir, l'objet entier est notre tout blockchain - la première partie est notre chaîne qui a le bloc de genèse, et la deuxième partie est notre transaction en attente, que nous venons d'établi. Notre / transaction endpoint fonctionne à la perfection.

[134]

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

IV.8.6.2.5 Construire /mine endpoint

Construisons le point final pour notre API blockchain : le point final de la mine, cela minez et créez un nouveau bloc :

Figure IV- 101: Construire /mine endpoint

Ce qui se passe ici est joli impressionnant. Comme nous pouvons le voir, il y a beaucoup de calculs différents qui entrent dans la création de ce nouveau bloc, et nous sommes en mesure de faire tous ces calculs en utilisant notre structure de données blockchain. Il s'agit d'une structure de données assez puissante, et notre blockchain peut désormais exploiter des nouveaux blocs en utilisant proofOfWork.

Nous allons également faire de notre récompense 12,5 bitcoins. En tant qu'adresse d'expéditeur, nous avons mis la valeur 00. De cette façon, chaque fois nous examinons les transactions sur notre réseau, nous savons que si une transaction est fabriquée à partir de l'adresse 00, c'est une récompense minière. Maintenant, tout ce dont nous avons besoin est l'adresse d'un destinataire, nodeAddress. Nous devons envoyer 12,5 bitcoins à celui qui a extrait un nouveau bloc - mais comment on trouve ça ? Eh bien, nous allons envoyer cette récompense au noeud actuel que nous sommes sur, qui est tout ce fichier API que nous sommes travaillé sur. Nous pouvons traiter cette API entière comme noeud de réseau dans la blockchain bitcoin.

Pour créer une adresse pour ce noeud, nous sommes va importer une nouvelle bibliothèque appelée uuid en utilisant notre terminal :

#npm i uuid

Importons maintenant notre nouvelle bibliothèque uuid aux sections supérieures de notre fichier api.js :

Figure IV- 102: Importation de la bibliothèque UUID

Cette bibliothèque crée une chaîne aléatoire pour nous, et nous allons utiliser cette chaîne comme adresse de ce noeud de réseau. NodeAddress que nous allons obtenir est aléatoire chaîne qui est garantie d'être unique, car nous ne voulons pas avoir deux noeuds avec la même adresse.

Nous testerons maintenant notre / mine endpoint, ainsi que notre / transaction et / blockchain, pour vous assurer qu'ils tous fonctionnent et interagissent correctement.

§ Chapitre IV Sécuriser un réseau bancaire avec la blockchain

Test de /mine endpoint :

Ouvrons un onglet et frappons notre / mine endpoint. Cela devrait exploiter et créer un nouveau bloqué pour nous :

[135]

Figure IV- 103: Test de /mine endpoint

Nous avons obtenu notre note qui dit que le nouveau bloc a été extrait avec succès. Nous avons également récupéré notre nouveau bloc et nous pouvons voir toutes les données qui se trouvent sur notre bloc. Il contient un hachage, et il a également le hachage du bloc précédent, qui est le bloc de genèse, et une transaction en elle. Vous pourriez penser, nous n'avons pas créé une transaction, alors d'où vient cette transaction viens d'où ? Cette transaction est en fait la récompense minière que nous mettons dans notre endpoint, qui a la récompense minière de 12,5 bitcoins transaction. Il ressemble à notre point d'extrémité minier a bien fonctionné.

§ Test de /blockchain endpoint :

Pour tester et nous assurer que nous avons créé ce nouveau bloc, nous pouvons retourner à notre / blockchain endpoint et actualisons la page :

Figure IV- 104: Test de /blockchain endpoint

Ça a marché. Nous avons maintenant deux blocs dans notre chaîne : l'un est le bloc de genèse et l'autre est celui que nous venons de créer. Le deuxième bloc a également la transaction en elle.

Minons des autres blocs pour tester cela à nouveau. Rendez-vous sur notre endpoint / mine et actualisez la page à nouveau :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[136]

Figure IV- 105: Miner plusieurs blocs

Comme nous le voyez, nous avons les trois blocs. Le bloc 3 est celui que nous venons de créer, et il contient notre transaction de récompense minière. Une plus de chose à noter est que notre précédent BlockHash s'aligne réellement avec le hachage de notre bloc 2. C'est aider à sécuriser notre blockchain.

§ Test de /transaction endpoint :

Créons maintenant quelques transactions avec notre / point de terminaison de transaction. Pour cela, rendez-vous sur Postman, assurez-vous que les paramètres sont les comme précédemment, et procédez comme suit changements :

Figure IV- 106: Test de /transaction endpoint

Cette transaction a été ajoutée à bloc 4 parce que nous avons déjà trois blocs dans notre chaîne. Maintenant, allons-y et récupérons notre toute la blockchain à nouveau. Cette fois, nous devrions attendre à obtenir la même blockchain et deux transactions en attente que nous venons d'établi. Rafraîchissons la page et voyons la production :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

Figure IV- 107: Exécution du Test de /transaction endpoint

On remarque que celui-ci comporte trois blocs et trois transactions en attente. Maintenant, si nous nous dirigeons vers notre point d'extrémité / mine et actualiser le page, ces trois transactions en attente seront ajoutées au bloc 4 :

Figure IV- 108: Minage réussi

Maintenant, si nous revenons à notre / endpoint blockchain et le rafraîchir, nous verrons que les deux transactions en attente ont disparu et qu'ils ont été ajoutés au bloc 4 :

Figure IV- 109: Fin de minage

[137]

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[138]

Comme nous pouvons le voir, le bloc 4 a les trois transactions, et on a une seule transaction en attente. Cela a bien fonctionné. Si on mine un autre bloc la transaction en attente disparu et qu'il a été ajouté au bloc 5.

IV.8.6.3 Création d'un réseau décentralisé

La façon dont notre blockchain fonctionne en ce moment est que nous avons une blockchain unique, et le seul moyen d'y accéder est via l'API. Ce serveur est très centralisé, ce qui n'est pas avantageux car l'API est en contrôle total de la blockchain et des données qui s'y ajoute. Toute la technologie blockchain est hébergée sur un réseau décentralisé.

Nous allons construire un réseau de blockchain décentralisé en créant diverses instances de l'API. Chacune de ces instances de l'API va être un noeud de réseau dans notre réseau de blockchain. Tous ces noeuds fonctionneront ensemble pour héberger notre blockchain. Dans cette partie de programmation, nous couvrirons les points suivants :

§ Apprendre à créer et tester plusieurs noeuds.

§ Ajout de currentNodeUrl à notre réseau.

§ Ajout des nouveaux noeuds finaux pour le réseau décentralisé.

§ Construction / node-and-broadcast-node endpoint.

§ Création et test / register-nodeendpoint.

§ Ajout et test du / register-nodes-bulk endpoint.

Donc, commençons par créer notre réseau décentralisé.

IV.8.6.3.1 Création de plusieurs noeuds et l'ajout du currentNodeUrl

La première chose que nous devrons faire pour créer notre réseau décentralisé est d'apporter des modifications à notre fichier api.js.

Etape01 : Pour configurer le réseau décentralisé, nous devrons exécuter le fichier api.js plusieurs fois. Chaque fois que nous exécutons le fichier, nous voulons qu'il agisse comme un noeud de réseau. Faisons-le en exécutant le fichier sur différents ports chaque fois que nous exécutons. Nous devons faire un port variable. Pour ce faire, nous ajoutons la ligne suivante au début du code dans notre dev / api.js :

#const port = process.argv[2];

Etape02 : Accédez au fichier package.json et apportez des modifications à la commande de démarrage. Ce que nous allons faire ici, c'est aller à la fin de notre commande et passer une variable pour le numéro de port sur lequel nous voulons exécuter le noeud de réseau. Dans notre exemple, nous voulons exécuter notre

#"start": "nodemon --watch dev -e js dev/networkNode.js 3001"

Noeud de réseau pour qu'il s'exécute sur le port numéro 3001. Par conséquent, passez 3001 comme variable à la fin de la commande de démarrage :

Quelle est la variable process.argv ? Cette variable fait simplement référence à la commande de démarrage que nous exécutons pour démarrer notre serveur. La première et

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[139]

le deuxième élément de la commande sont constitués de « nodemon --watch dev -e js dev/networkNode.js », et le troisième élément de la commande est la variable « 3001 ».

Etape03 : Nous voulons utiliser la variable de port. Par conséquent, dans le fichier dev / api.js, allons en bas, où nous avons mentionné le code d'écoute du port 3000 et faisons la modification suivante :

#app.listen(port, function() { console.log(`Listening on port ${port}...`); });

 

Etape04 : Exécutons le fichier api.js. Dans la fenêtre du terminal, saisissez npm start. En tapant cette commande, le serveur doit commencez à écouter le port 3001, comme nous pouvons l'observer dans la capture d'écran suivante :

Figure IV- 110: Exécution de npm start

IV.8.6.3.2 Exécution de multiples noeuds d'api.js

La prochaine chose que nous voudrons faire est d'exécuter plusieurs noeuds de api.js. Pour cela, nous allons ajouter quelques commandes supplémentaires au fichier package.json.

Etape01 : Pour commencer, dans le fichier package.json, nous devons changer la commande "start" en "node_1". Maintenant, lorsque nous exécutons cette commande, il va démarrer notre premier noeud, qui est sur le port 3001.

Etape02 : Au lieu de taper npm start, tapez npm run node_1. Avec l'aide de cette commande, exécutez notre node_1 sur le port 3001.

Etape03 : Dans notre package.json, en tant que troisième paramètre de chacune de nos commandes, nous allons ajouter l'URL du noeud. Par conséquent, notre premier noeud a L'URL http: // localhost: 3001. Il est probable que pour notre deuxième noeud, http: // localhost: 3002. De même, vous pouvez ajouter URL des noeuds restants, comme indiqué dans la capture d'écran suivante :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[140]

Figure IV- 111: Exécution de multiples noeuds d'api.js

Etape04 : Pour notre réseau décentralisé, nous voulons exécuter deux ou trois de ces noeuds en même temps. Pour faire ça, dupliquons la commande "node_1" : "nodemon -watch dev -e js dev / api.js 3001 http://localhost:3001" quatre fois et ensuite modifions ces commandes comme montré dans la capture d'écran suivante :

Figure IV- 112: Modifications dans le fichier package.json

Nous avons maintenant un noeud de réseau en cours d'exécution sur le port 3001 et l'autre noeud de réseau en cours d'exécution sur le port 3002. Suivez un processus similaire pour exécuter les noeuds de réseau restants sur les ports restants.

IV.9.6.3.3 Test des multiples noeuds

Maintenant, nous pourrions avoir tous les cinq noeuds du réseau en cours d'exécution. Ce que nous avons actuellement cinq noeuds de notre API en cours d'exécution, mais elles ne sont pas connectées entre eux. Pour vérifier que ces noeuds de réseau ne sont pas connectés, nous pouvons effectuer quelques tests :

Etape01 : La première transaction que nous voulons faire va être à notre noeud de réseau, qui est hébergé sur le port 3001. Alors, allons-y dans le corps et tapons les données de transaction, comme indiqué dans la capture d'écran suivante :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[141]

Figure IV- 113: Configuration des données de la transaction

Maintenant que nous avons envoyé la transaction donnée aux noeuds du réseau, vérifions-le. Allez dans le navigateur et allez sur localhost : 3001 / blockchain, puis appuyez sur Entrée. On aura à observer un similaire réponse, comme indiqué dans la suite capture d'écran :

Figure IV- 114: Récupération de la chaine de bloc

De la capture d'écran précédente, nous pouvons observer que nous avons une seule transaction en attente pour 3001 bitcoins. C'est l'une des transactions que nous venons d'ajoutée.

Etape02 : Maintenant, dans l'autre onglet, si nous allons à localhost : 3002 / blockchain, nous verrons que aucune transaction en attente, car nous n'avons envoyé aucune transaction à ce noeud de réseau :

Figure IV- 115: Création d'une transaction en attente

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[142]

Etape03 : on fait les mêmes démarches de l'etape1 pour la création d'une transaction sur localhost :3003, Ensuite, si nous allons sur localhost: 3003 / blockchain, nous verrons que nous avons une transaction ici pour un montant de 3003 bitcoins

Si nous devions aller à localhost : 3004 / blockchain et localhost : 3005 / blockchain, il ne devrait pas y avoir les transactions là-bas que nous n'avons envoyé aucune transaction vers ces noeuds de réseau.

IV.8.6.3.4 L'ajoute d'un currentNodeUrl

Passons maintenant au fichier blockchain.js, et à la partie où nous définissons le const, nous allons taper ce qui suit :

#constcurrentNodeUrl = process.argv[3];

Avec cette commande, nous devrions avoir accès à l'URL du noeud actuel en utilisant la variable currentNodeUrl.

Maintenant, nous devons assigner le currentNodeUrl à notre structure de données de la blockchain. Nous le faisons en tapant la ligne de code suivante à l'intérieur de notre fonction Blockchain {} :

#this.networkNodes = [];

# this.currentNodeUrl = currentNodeUrl;

Dans les autres sections, nous remplirons ce tableau avec les URL des noeuds de tous les autres noeuds de notre réseau afin que chaque noeud soit au courant de tous les autres noeuds à l'intérieur de notre réseau blockchain.

IV.8.6.3.5 Aperçu des nouveaux endpoints

IV.8.6.3.5.1 Création de / register-and broadcast-nodeendpoint

Le / registre-node sera le prochain point de terminaison que nous ajouterons à notre réseau. Ceci est défini comme suit :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[143]

Figure IV- 116: Configuration du register node

Nous allons faire cette demande en important une nouvelle bibliothèque. Allons-y vers le terminal pour importer la bibliothèque. Dans le terminal, tapons la commande suivante :

Figure IV- 117: Importation de la bibliothèque request-promise

Jusqu'à présent, nous avons enregistré le nouveau noeud avec le noeud de réseau actuel sur lequel nous sommes et nous avons diffusé le nouveau noeud à tous les autres noeuds de notre réseau. La dernière étape que nous avons effectuée à l'intérieur de ce point de terminaison est de renvoyer une réponse à celui qui l'a appelé.

o Explication comment le registre et noeud de diffusion fonctions :

Nous voulons enregistrer un nouveau noeud avec notre réseau, le noeud final d'enregistrement et de diffusion est le premier point que nous voulons atteindre. La première chose qui nous faisons à l'intérieur de ce point de terminaison prend le newNodeUrl et l'enregistre avec le noeud actuel en le poussant dans notre tableau networkNodes.

La prochaine étape que nous devons faire est de diffuser ce newNodeUrl au reste des noeuds de notre réseau. Nous le faisons à l'intérieur de la boucle forEach. Tout ce qui se passe à l'intérieur de cette boucle est que nous faisons une demande à chacun des autres noeuds de notre réseau. Nous faisons cette demande au point d'extrémité de noeud de registre. Une fois toutes ces demandes terminées sans aucune erreur, nous pouvons supposer que le newNodeUrl a été enregistré avec succès avec tous nos autres noeuds de réseau.

IV.8.6.3.5.2 Construire et tester le / register-nodeendpoint

Maintenant que nous avons construit le / register-and -broadcast-node final, il est temps de passer à certaines choses qui sont un peu moins complexes. Dans cette section, commençons la construction du register-nodeendpoint. Ça va être très simple par rapport au point final que nous avons construit dans la partie précédente.

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[144]

Ce noeud final registre-node est l'endroit où chaque noeud dans le réseau va recevoir la diffusion qui est envoyée par le endpointregister-and-broadcast-node ; ce point registre-node doit faire s'inscrire le nouveau noeud avec le noeud qui reçoit la demande. Pour commencer à créer le endpointregister-node, procédons comme suit :

Figure IV- 118: Construit le / register-and -broadcast-node

§ Test de register-node

Testons-le / register-nodeendpoint pour s'assurer qu'il fonctionne correctement et pour mieux comprendre son fonctionnement.

§ Installation de la bibliothèque request

Maintenant, pour tester le endpoint que nous venons de créer, il est nécessaire d'installer la bibliothèque request selon la version de la bibliothèque de request-promise disponible. Pour installer la bibliothèque de requêtes, allons simplement sur notre terminal, et à l'intérieur nous exécutez la commande suivante :

Figure IV- 119: Installation de la bibliothèque request

§ Test

Pour commencer, nous allons taper http: // localhost: 3001 / register-node dans la barre d'adresse, comme illustre la capture d'écran ci-dessous :

Figure IV- 120: Test de register-node

Ensuite, à l'intérieur de la zone de texte, créons un objet et ajoutons le code suivant :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[145]

Figure IV- 121: Ajout de node url

Pour vérifier cela, allons à Postman et cliquons sur le bouton Envoyer. Nous obtiendrons la réponse Nouveau noeud enregistré avec succès. Maintenant, passons à notre navigateur et tapons localho st: 3001 / blockchain dans la barre d'adresse, puis appuyons nous sur Entrée. Nous verrons une sortie similaire à ce qui est montré dans la capture d'écran suivante :

Figure IV- 122: Obtention de la réponse Nouveau noeud enregistré avec succès

Puisque nous venions d'enregistrer notre deuxième noeud avec notre noeud actuel sur localhost: 3001, nous avons l'URL de notre deuxième noeud à l'intérieur de cet tableau.

IV.8.6.3.5.3 Construire le / register-nodes-bulk endpoint

Le prochain endpoint que nous allons construire s'appelle register-nodes-bulk. Ces trois points sur lesquels nous avons travaillé pour créer notre réseau de blockchain décentralisé.

Le register-nodes-bulk accepte des données contenant les URL de chaque noeud déjà présent dans le réseau. Ensuite, nous allons simplement enregistrer tous ces noeuds de réseau avec le nouveau noeud. Le nouveau noeud est le noeud sur lequel le register-nodes-bulk est atteint.

Pour créer le endpointregister-nodes-bulk, nous devrons faire l'hypothèse que toutes les URL de noeuds qui sont actuellement dans notre réseau sont transmises en tant que données et que nous pouvons les accéder via la propriété req.body.allNetworkNodes. C'est parce que nous envoyons les données allNetworkNodes lorsque nous appelons cela

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[146]

endpoint dans le bloc Promise.all (regNodesPromise). Ici, nous envoyons allNetworkNodes au endpointregister-nodes-bulk. Cela nous donnera accès aux données allNetworkNodes à l'intérieur du endpoint. Ajoutons la ligne de code suivante à notre endpointregister-nodes-bulk.

Figure IV- 123: Construire le / register-nodes-bulk endpoint

Fondamentalement, tout ce que nous déclarons dans la déclaration if est que pendant que nous parcourons chaque noeud de réseau que nous ajoutons, si ce noeud n'est pas déjà présent dans notre réseau de noeuds de réseau et si cela le noeud n'est pas l'URL de notre noeud actuel, alors nous voulons ajouter le networkNodeUrl à notre tableau networkNodes. Une fois que nous avons terminé la boucle forEach, nous aurons enregistré tous les noeuds du réseau qui sont déjà présents à l'intérieur de notre réseau blockchain. Tout ce que nous avons à faire à ce stade est de renvoyer une réponse, comme suit.

§ Test des / register-nodes-bulk :

Nous allons tester notre register-nodes-bulk endpoint pour nous assurer que cela fonctionne correctement. Cela nous permettra de comprendre comment cela fonctionne :

Etape01 : Nous allons diriger vers Postman. Ici, nous allons tapper le localhost: 3001 / register-nodes-bulk. Lorsque nous testons ce endpoint, nous nous attendons à recevoir des données, qui est le tableau allNetworkNodes.

Etape02 : dans l'onglet corps de Postman, avec l'option raw et JSON (application / json) format sélectionné pour le texte, nous ajoutons les lignes de code suivantes au corps :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[147]

Figure IV- 124: Test des / register-nodes-bulk

Lorsque nous exécutons cette demande maintenant, nous devrons enregistrer ces trois URL avec notre noeud qui s'exécute localhost: 3001. Voyons voir si ça marche. Cliquons sur le bouton Send et nous recevrons une réponse qui indique l'enregistrement en bulk réussi comme le montre la capture d'écran suivante :

Figure IV- 125: Recevoir une réponse qui indique l'enregistrement en bulk réussi

Maintenant, si nous nous dirigeons vers le navigateur, nous pouvons vérifier que cela a fonctionné. Dans la barre d'adresse, tapons localhost: 3001 / blockchain puis appuyons sur Entrée. Nous arriverons à observer les trois URL qui ont été ajoutées à l'intérieur du tableau networkNodes, car ce sont enregistrées en bulk :

Chapitre IV Sécuriser un réseau bancaire avec la blockchain

[148]

Figure IV- 126: Ajout réussie de trois url

Donc, il ressemble que notre endpointregister-node-bulk fonctionne comme il se doit.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Là où il n'y a pas d'espoir, nous devons l'inventer"   Albert Camus