Déploiement d'un réseau IBAX
Dans cette section, nous vous montrerons comment déployer votre propre réseau blockchain.
Un exemple de déploiement
Un réseau blockchain sera déployé avec les trois nœuds suivants à titre d'exemple.
Trois nœuds du réseau :
- Le nœud 1 est le premier nœud du réseau blockchain, qui peut générer de nouveaux blocs et envoyer des transactions à partir des clients qui y sont connectés ;
- Le nœud 2 est un autre nœud honorable, qui peut générer de nouveaux blocs et envoyer des transactions à partir des clients qui y sont connectés ;
- Le nœud 3 est un nœud gardien, qui ne peut pas générer de nouveaux blocs, mais peut envoyer des transactions à partir des clients qui y sont connectés.
Configurations des trois nœuds à déployer :
- Chaque nœud utilise sa propre instance du système de base de données PostgreSQL ;
- Chaque nœud utilise sa propre instance du service Centrifugo ;
- Le côté serveur de github-backend est déployé sur le même hôte que les autres composants backend.
Les adresses et ports d'échantillon utilisés par les nœuds sont décrits dans le tableau suivant :
Nœud | Composant | IP et port |
1 | PostgreSQL | 127.0.0.1:5432 |
1 | Centrifugo | 192.168.1.1:8000 |
1 | go-ibax (TCP service) | 192.168.1.1:7078 |
1 | go-ibax (API service) | 192.168.1.1:7079 |
2 | PostgreSQL | 127.0.0.1:5432 |
2 | Centrifugo | 192.168.1.2:8000 |
2 | go-ibax (TCP service) | 192.168.1.2:7078 |
2 | go-ibax (API service) | 192.168.1.2:7079 |
3 | PostgreSQL | 127.0.0.1:5432 |
3 | Centrifugo | 192.168.1.3:8000 |
3 | go-ibax (TCP service) | 192.168.1.3:7078 |
3 | go-ibax (API service) | 192.168.1.3:7079 |
Phase de déploiement
Votre propre réseau blockchain doit être déployé en plusieurs étapes:
Déploiement du serveur
Déployer le premier nœud
Le premier nœud est spécial car il est essentiel pour lancer le réseau blockchain. Le premier bloc de la blockchain est généré par le premier nœud, et tous les autres nœuds téléchargent la blockchain à partir de celui-ci. Le propriétaire du premier nœud est le créateur de la plateforme.
Dépendances et paramètres de l'environnement
sudo
Toutes les commandes de Debian 9 doivent être exécutées en tant qu'utilisateur non root. Cependant, certaines commandes système nécessitent des permissions de super utilisateur pour être exécutées. Par défaut, sudo n'est pas installé sur Debian 9, vous devez l'installer d'abord.
- Devenez un super utilisateur.
- Mettez à jour votre système.
- Installer sudo.
- Ajoutez votre utilisateur au groupe sudo.
- Après le redémarrage, les modifications prennent effet.
Golang
Installez Go selon les Documents Officiels (opens new window).
- Téléchargez la dernière version stable de Go (> 1.10.x) depuis le site officiel de Golang (opens new window) ou via la ligne de commande :
- Utilisez tar pour extraire l'archive tar dans le répertoire
/usr/local
.
- Ajoutez
/usr/local/go/bin
aux variables d'environnement PATH (qui se trouvent dans /etc/profile
ou $HOME/.profile
).
- Exécutez le fichier
source
pour que les modifications prennent effet, par exemple :
- Supprimer les fichiers temporaires.
PostgreSQL
- Installez PostgreSQL (> v.10) et psql:
Centrifugo
- Téléchargez Centrifugo V.1.8.0 depuis GitHub (opens new window) ou via la ligne de commande :
- Supprimer les fichiers temporaires.
Structure du répertoire
Pour le système Debian 9, il est recommandé de stocker tous les logiciels utilisés par la plateforme blockchain dans un répertoire séparé.
Le répertoire /opt/backenddir
est utilisé ici, mais vous pouvez utiliser n'importe quel répertoire. Dans ce cas, veuillez modifier toutes les commandes et les fichiers de configuration en conséquence.
- Créez un répertoire pour la plateforme blockchain :
- Faites de votre utilisateur le propriétaire du répertoire.
- Créez des sous-répertoires pour Centrifugo, go-ibax et les données du nœud. Toutes les données du nœud sont stockées dans un répertoire nommé
nodeX
, où X
est le numéro du nœud. Selon le nœud à déployer, node1
est le Nœud 1, node2
est le Nœud 2, et ainsi de suite.
Créer une base de données
- Changer le mot de passe utilisateur postgres au mot de passe par défaut 123456. Vous pouvez définir votre propre mot de passe, mais vous devez le modifier dans le fichier de configuration du nœud config.toml.
- Créez une base de données d'état actuel pour le nœud, par exemple chaindb :
- Créez le fichier de configuration Centrifugo :
Vous pouvez définir votre propre secret, mais vous devez également le modifier dans le fichier de configuration du nœud config.toml.
Installer go-ibax
- Téléchargez github-backend depuis GitHub :
- Copiez le fichier binaire go-ibax dans le répertoire
/opt/backenddir/go-ibax
. Si vous utilisez l'espace de travail Go par défaut, les fichiers binaires se trouvent dans le répertoire $HOME/go/bin
.
- Créez le fichier de configuration pour le Node 1 :
- Générer les clés du Node 1, y compris les clés publique et privée du nœud et du compte :
- Générer le premier bloc :
Remarque
Si vous souhaitez créer votre propre réseau blockchain, vous devez utiliser l'option --test=true
. Sinon, vous ne pourrez pas créer de nouveau compte.
- Initialiser la base de données.
###Initialiser le premier serveur de nœuds
Pour démarrer le premier serveur de nœuds, vous devez démarrer les deux services suivants :
Si vous n'avez pas réussi à créer des services (opens new window) avec ces fichiers, vous pouvez exécuter les fichiers binaires à partir de différents terminaux.
- Exécutez centrifugo :
- Exécutez go-ibax:
Déployer d'autres nœuds
Bien que le déploiement de tous les autres nœuds (Nœud 2 et Nœud 3) soit similaire au premier, il existe trois différences :
- Vous n'avez pas besoin de générer le premier bloc. Mais il doit être copié depuis le répertoire de données du nœud 1 vers le nœud actuel ;
- Le nœud doit télécharger les blocs depuis le nœud 1 en configurant l'option
--nodesAddr
; - Le nœud doit utiliser ses propres adresses et ports.
Noeud 2
Suivez les instructions opérationnelles indiquées ci-dessous :
- Dépendances et paramètres d'environnement
- Créer une base de données
- Centrifugo
- Installer go-ibax
- Créer le fichier de configuration pour le Node 2 :
- Copiez le premier fichier de bloc vers le Node 2. Par exemple, vous pouvez effectuer cette opération sur le Node 2 via scp :
- Générer les clés de Node 2, y compris les clés publique et privée du nœud et du compte :
- Initialiser la base de données.
- Exécutez centrifugo:
- Exécutez go-ibax:
En conséquence, le nœud télécharge le bloc à partir du premier nœud. Comme ce nœud n'est pas un nœud de vérification, il ne peut pas générer un nouveau bloc. Le nœud 2 sera ajouté ultérieurement à la liste des nœuds de vérification.
Noeud 3{#node-3}
Suivez les instructions opérationnelles indiquées ci-dessous :
Dépendances et paramètres d'environnement
Créer une base de données
Centrifugo
Installer go-ibax
Créer le fichier de configuration pour le nœud 3 :
- Copiez le premier fichier de bloc vers le Node 3. Par exemple, vous pouvez effectuer cette opération sur le Node 3 via scp :
- Générer la clé du Node 3, comprenant les clés publique et privée du nœud ainsi que du compte :
- Initialiser la base de données.
- Exécutez centrifugo:
- Exécutez go-ibax:
En conséquence, le nœud télécharge le bloc à partir du premier nœud. Comme ce nœud n'est pas un nœud de vérification, il ne peut pas générer un nouveau bloc. Le client peut être connecté au nœud et peut envoyer des transactions au réseau.
Déploiement front-end
Seulement après avoir installé GNOME GUI sur Debian 9 (Stretch) 64-bit Official Release, le client Govis peut être construit avec le gestionnaire de paquets yarn
.
Prérequis logiciels
- Téléchargez la version LTS 8.11 de Node.js depuis le site officiel de Node.js ou via la ligne de commande :
- Installer Node.js:
- Téléchargez la version 1.7.0 de Yarn à partir du dépôt Github (opens new window) de Yarn ou via la ligne de commande :
- Installer Yarn:
Créez une application Weaver
- Téléchargez la dernière version de Weaver depuis github-frontend via git :
- Installer les dépendances de Weaver via Yarn:
Ajoutez le fichier de configuration pour le réseau blockchain.
- Créez un fichier settings.json qui contient des informations sur la connexion du nœud :
- Modifiez le fichier settings.json dans n'importe quel éditeur de texte et ajoutez les paramètres requis dans ce format :
Exemples de fichiers settings.json pour les trois nœuds :
Construire une application de bureau Weaver
- Utilisez yarn pour construire la version de bureau :
- La version de bureau sera empaquetée dans le format de suffixe AppImage.
Après la construction, votre application peut être utilisée, mais sa configuration de connexion ne peut pas être modifiée. Si ces paramètres doivent être modifiés, une nouvelle version de l'application doit être construite.
Construire une application web Weaver
- Créez une application web.
Après la construction, les fichiers redistribuables seront placés dans le répertoire /build. Vous pouvez utiliser n'importe quel serveur web de votre choix pour le déploiement, et le fichier settings.json doit également être placé dans ce répertoire. Notez que si les paramètres de connexion sont modifiés, il n'est pas nécessaire de reconstruire l'application. Au lieu de cela, modifiez le fichier settings.json et redémarrez le serveur web.
- À des fins de développement ou de test, vous pouvez construire le serveur web de Yarn :
Après cela, votre application web Weaver sera disponible à l'adresse suivante : http://localhost:5000
.
Créez le compte créateur
Créez un compte pour le propriétaire du premier nœud. Ce compte est le créateur de la nouvelle plateforme blockchain et a un accès administrateur.
Lancez Weaver;
Importez le compte existant en utilisant les données suivantes:
- Chargez la sauvegarde de la clé privée du propriétaire du nœud située dans le fichier
/opt/backenddir/node1/PrivateKey
.
Remarque
Il y a deux fichiers de clé privée dans ce répertoire. Le fichier PrivateKey
est utilisé pour créer le compte du propriétaire du nœud. Le fichier NodePrivateKey
est la clé privée du nœud lui-même et doit être gardé secret.
- Après vous être connecté à votre compte, puisqu'aucun rôle n'a été créé pour le moment, veuillez sélectionner l'option Sans rôle.
Importer des applications, des rôles et des modèles
À l'heure actuelle, la plateforme blockchain est dans un état vierge. Vous pouvez la configurer en ajoutant des rôles, des modèles et des frameworks d'application qui prennent en charge les fonctions de base de l'écosystème.
- Clonez le dépôt de l'application ;
Accédez à Développeur > Importer dans Weaver;
Importez les applications dans l'ordre suivant:
Accédez à Admin> Rôle, et cliquez sur Installer le rôle par défaut ;
Quittez le système via le menu du fichier de configuration dans le coin supérieur droit ;
Connectez-vous au système en tant qu'administrateur ;
Accédez à Accueil> Vote> Liste des modèles, et cliquez sur Installer le modèle par défaut.
Ajoutez le premier nœud à la liste des nœuds
Accédez à Développeur> Paramètres de la plateforme, et cliquez sur le paramètre first_nodes;
Spécifiez les paramètres du premier nœud du réseau blockchain.
- public_key - La clé publique du nœud se trouve dans le fichier
/opt/backenddir/node1/NodePublicKey
.
Ajoutez d'autres nœuds d'honneur
Ajouter des membres dans le groupe de rôle de consensus
Par défaut, seuls les membres du groupe de rôle Consensus peuvent participer au vote nécessaire pour ajouter d'autres nœuds principaux. Cela signifie qu'avant d'ajouter un nouveau nœud principal, les membres de l'écosystème doivent être assignés au rôle.
Dans cette section, le compte du créateur est désigné comme le seul membre du groupe de rôle Consensus. Dans un environnement de production, ce rôle doit être attribué aux membres de la plateforme qui exercent la gouvernance.
Accédez à Accueil > Rôle et cliquez sur Consensus ;
Cliquez sur Assigner pour attribuer le compte du créateur au rôle.
Créez le compte propriétaire pour les autres nœuds.
Exécutez Weaver;
Importez le compte existant en utilisant les données suivantes:
- Chargez la sauvegarde de la clé privée du propriétaire du nœud située dans le fichier
/opt/backenddir/node2/PrivateKey
.
Après vous être connecté au compte, puisqu'aucun rôle n'a été créé à ce moment-là, veuillez sélectionner l'option Sans rôle.
Accédez à Accueil> Informations personnelles, et cliquez sur le titre des informations personnelles;
Ajoutez les détails du compte (titre des informations personnelles, description, etc.).
Attribuer le propriétaire du nœud au rôle de Validateur.
- Opérations par le nouveau propriétaire du nœud :
- Accédez à Accueil> Vérificateur ;
- Cliquez sur Créer une demande et remplissez le formulaire de candidature du vérificateur ;
- Cliquez sur envoyer la demande.
- Opérations par le créateur :
- Connectez-vous avec un rôle de consensus (Consensus) ;
- Accédez à Accueil> Vérificateur ;
- Cliquez sur l'icône "Lecture" pour commencer le vote selon la demande du candidat ;
- Accédez à Accueil > Vote, et cliquez sur Mettre à jour le statut du vote ;
- Cliquez sur le nom du vote et votez pour le propriétaire du nœud.
En conséquence, le compte du propriétaire du nouveau nœud est attribué au rôle de validateur, et le nouveau nœud est ajouté à la liste des nœuds principaux.