Fermer

juillet 3, 2018

Utilisation de Puppeth, le gestionnaire de réseau privé Ethereum –19 minutes de lecture



Nous avons déjà écrit sur Geth l'un des nœuds les plus populaires d'Ethereum

 Télécharger l'écran

Lorsque vous installez Geth avec des outils d'aide, il est livré avec un outil pratique appelé Puppeth, que vous pouvez utiliser pour maintenir et installer divers outils d'aide pour la gestion et le déploiement de votre blockchain privée. Puppeth peut également être installé indépendamment si vous avez installé Go, avec la commande suivante:

 go get github.com/ethereum/go-ethereum/cmd/puppeth

Jetons un coup d'oeil à l'outil.

Note: ce tutoriel vous demandera d'avoir deux machines distantes à votre disposition. Que ce soit une machine virtuelle comme Homestead Improved ou un serveur réel sur votre réseau, ou une combinaison des deux, n'a pas d'importance. Nous allons passer en revue la procédure d'installation avec les VM dans ce tutoriel.

Note: en raison d'un bogue dans Puppeth cette approche pourrait ne pas fonctionner si vos machines virtuelles (voir ci-dessous) sont trop petites. Faites des machines virtuelles plus grandes (plus de RAM) ou attendez un correctif si ce n'est pas une option

Bootstrapping

Nous suivrons ce processus pour que deux machines virtuelles soient opérationnelles. Nous avons besoin de deux machines parce que nous allons exécuter deux nœuds Ethereum, chacun sur sa propre adresse IP

Note: Ceci est une limitation de Puppeth, car il n'est pas possible de déployer un nœud d'étanchéité sur la même machine.

Si vous ne savez pas ce qu'est Vagrant, et quels outils nous utilisons ici, nous vous recommandons de lire cette introduction à Vagrant qui le décompose d'une manière conviviale pour les débutants. [19659012] mkdir mon_projet; cd mon_projet
git clone https://github.com/swader/homestead_improved hi_puppeth1
git clone https://github.com/swader/homestead_improved hi_puppeth2

Modifier l'adresse IP du deuxième clone en accédant au dossier hi_puppeth2 et en modifiant le champ adresse IP pour qu'il soit 192.168.10.11 au lieu de ] 192.168.10.10 .

Ensuite, ouvrez quelques ports sur les machines virtuelles en modifiant la section finale de Homestead.yaml de chaque clone, comme suit:

  ports:
     - envoyer: 8545
       à: 8545
     - envoyer: 30301
       à: 30301
     - envoyer: 30302
       à: 30302
     - envoyer: 30303
       à: 30303
     - envoyer: 30304
       à: 30304
     - envoyer: 30305
       à: 30305
     - envoyer: 30306
       à: 30306

N'oubliez pas d'ajouter ces hôtes virtuels dans le fichier / etc / hosts de votre machine hôte. Sinon, les machines virtuelles ne seront pas accessibles par leur nom de domaine!

 192.168.10.10 homestead.test
192.168.10.11 puppethnode.test

Remarque: modifiez les adresses IP si les adresses de vos machines virtuelles diffèrent.

Enfin, exécutez errant; vagabond ssh pour démarrer chaque machine et SSH dedans. Souvenez-vous de lancer deux onglets séparés pour pouvoir garder les deux machines ouvertes et ouvertes.

Prérequis

Maintenant, installons le logiciel requis sur chaque machine .

Puppeth exécute pour vous des applications auxiliaires et des nœuds Ethereum dans des conteneurs Docker, nous avons donc besoin de Docker. Il est également utile d'installer Geth lui-même.

 sudo add-apt-repository -y ppa: ethereum / ethereum
sudo apt-get mise à jour
sudo apt-get install 
    apt-transport-https 
    ca-certificats 
    boucle 
    logiciel-propriétés-commun 
    éthereum
    docker.io 
    docker-compose

Tous les autres prérequis seront extraits par Puppeth via le docker lui-même, mais nous devons nous assurer que l'utilisateur actuel est autorisé à utiliser les commandes Docker en premier:

 sudo usermod -a -G docker $ USER

Sur la machine hôte (en dehors des machines virtuelles), nous devrions créer de nouveaux comptes Ethereum dans le dossier où nous exécutons notre projet.

Si vous utilisez les machines virtuelles comme suggéré ci-dessus, cela peut être dans myproject si myproject est le dossier parent qui contient hi_puppeth1 et hi_puppeth2 .

 mkdir node1 node2
geth --datadir node1 compte nouveau
geth --datadir node2 compte nouveau

Notez les adresses générées par ce processus:

 $ mkdir node1 node2
$ geth --datadir node1 compte nouveau
INFO [05-20|10:27:20] Nombre maximal de pairs ETH = 25 LES = 0 total = 25
Votre nouveau compte est verrouillé avec un mot de passe. S'il vous plaît donner un mot de passe. Ne pas oublier ce mot de passe.
Phrase de passe:
Répétez phrase secrète:
Adresse: {aba88be2dc16eaed464e3991eed5a1eaa5e7b11b}
$ geth --datadir node2 compte nouveau
INFO [05-20|10:27:35] Nombre maximal de pairs ETH = 25 LES = 0 total = 25
Votre nouveau compte est verrouillé avec un mot de passe. S'il vous plaît donner un mot de passe. Ne pas oublier ce mot de passe.
Phrase de passe:
Répétez phrase secrète:
Adresse: {655a6ea9950cdf9f8a8175fda639555f17277bdf}

Nous avons besoin de deux comptes car au moins deux signataires sont nécessaires dans une blockchain Preuve d'autorité (plus de détails plus loin)

Puppeth

Maintenant que nos VMs tournent et que nos comptes sont initialisé, voyons ce que Puppeth offre. Avec les serveurs / VM distants en cours d'exécution, dans un nouvel onglet de votre machine hôte, exécutez Puppeth avec puppeth .

La première chose à demander est le nom du réseau. Ceci est utile pour identifier différentes chaînes de blocs si vous en exécutez plusieurs sur votre machine locale. Nous allons utiliser "puptest" ici.

 Veuillez spécifier un nom de réseau à administrer (pas d'espaces ou de traits d'union, s'il vous plaît)
> puptest

Sweet, vous pouvez définir cela via --network = puptest la prochaine fois!

INFO [05-20|10:32:15] Administration du nom de réseau Ethereum = puptest
WARN [05-20|10:32:15] Aucune configuration précédente trouvée path = / Users / swader / .puppeth / puptest

Maintenant, connectons-nous à nos serveurs "distants" afin que Puppeth les ait dans la liste et puisse y faire des opérations.

Suivre un nouveau serveur distant

Cette option vous permet de vous connecter au serveur où votre blockchain- les services connexes seront en cours d'exécution. Sélectionnez l'option 3, puis entrez les valeurs comme suit:

 Veuillez entrer l'adresse du serveur distant:
> vagrant@192.168.10.10
Quel est le mot de passe de décryptage pour /Users/swader/.ssh/id_rsa? (ne sera pas répercuté)
>

L'authenticité de l'hôte '192.168.10.10:22 (192.168.10.10:22)' ne peut être établie.
L'empreinte digitale de la clé SSH est 38: 53: d3: c2: 85: cf: 77: 54: a5: 54: 26: 3b: 93: 5b: 6f: 09 [MD5]
Êtes-vous sûr de vouloir continuer à vous connecter (oui / non)? Oui
Quel est le mot de passe de connexion pour errant à 192.168.10.10:22? (ne sera pas répercuté)
>
INFO [05-20|10:39:53] Démarrage de l'intégrité du serveur distant-check server=vagrant@192.168.10.10
+ ----------------------- + --------------- + --------- + -------- + ------- +
| SERVER | ADRESSE | SERVICE | CONFIG | VALUE |
+ ----------------------- + --------------- + --------- + -------- + ------- +
| vagrant@192.168.10.10 | 192.168.10.10 | | | |
+ ----------------------- + --------------- + --------- + -------- + ------- +

Puppeth demandera la phrase secrète de votre clé SSH juste au cas où SSH est utilisé pour se connecter au serveur. Sinon, il demandera le mot de passe SSH (comme dans l'exemple ci-dessus). Le mot de passe SSH par défaut pour l'utilisateur vagabond sur la machine virtuelle en question est vagabond .

La sortie à la fin fait écho à l'état "de santé" du serveur distant. Comme il n'a pas de services en cours d'exécution, il affichera simplement l'adresse IP. Vous pouvez voir le même résultat en sélectionnant l'option 1: Afficher les statistiques du réseau .

Répétez le processus pour l'autre VM, les deux apparaissent donc dans l'écran d'état de santé.

New Genesis

To Démarrez notre blockchain, nous devrions configurer un nouveau fichier de genèse. Un fichier genesis est un fichier à partir duquel le premier bloc (genesis) est construit et sur lequel chaque bloc suivant se développe

Sélectionnez l'option 2, Configurez new genesis et remplissez les options comme ceci: [19659004] Quel moteur de consensus utiliser? (par défaut = clique)
 1. Ethash – preuve de travail
 2. Clique – preuve d'autorité
> 2

Combien de secondes les blocs doivent-ils prendre? (par défaut = 15)
> 10

Quels comptes sont autorisés à sceller? (obligatoire au moins un)
> 0xaba88be2dc16eaed464e3991eed5a1eaa5e7b11b
> 0x655a6ea9950cdf9f8a8175fda639555f17277bdf
> 0x

Quels comptes devraient être pré-financés? (conseillé au moins un)
> 0x655a6ea9950cdf9f8a8175fda639555f17277bdf
> 0xaba88be2dc16eaed464e3991eed5a1eaa5e7b11b
> 0x

Indiquez votre chaîne / ID de réseau si vous voulez un identifiant explicite (par défaut = aléatoire)
>
INFO [05-20|11:25:55] Nouveau bloc de genèse configuré

Vous pouvez trouver la différence entre PoW et PoA ici . Le PoW gaspille beaucoup de puissance de calcul et n'est pas pratique à utiliser sur une machine locale, nous allons donc choisir le PoA ici. Nous réduisons le temps de blocage à 10 secondes afin que nos transactions confirment plus rapidement, et nous ajoutons les adresses que nous avons générées précédemment comme scelleurs autorisés et comme pré-financés. Être des chasseurs signifie qu'ils sont autorisés à créer de nouveaux blocs. Comme il n'y a pas de récompense minière dans PoA, nous les préfinançons avec un éther presque infini afin que nous puissions tester nos transactions avec ces comptes.

Le fichier genesis est maintenant généré, et à des fins de sauvegarde, vous pouvez l'exporter vers un externe. déposer si vous le souhaitez en sélectionnant à nouveau l'option 2.

Déployons maintenant des composants blockchain!

Déploiement de composants réseau

Puppeth déploie ces composants dans des conteneurs dockers séparés en utilisant l'outil docker-composer . Docker en tant qu'outil sort du cadre de ce post, mais vous n'avez pas besoin de le connaître pour l'utiliser de toute façon. Commençons par le premier composant, Ethstats

Ethstats

L'installation d'Ethstats installe et exécute une version locale de sur le site ethstats.net . Sélectionnez la première option

 Avec quel serveur voulez-vous interagir?
 1. vagrant@192.168.10.10
 2. Connectez un autre serveur
> 1

Quel port les ethstats devraient-ils écouter? (par défaut = 80)
> 8081

Autoriser le partage du port avec d'autres services (y / n)? (par défaut = oui)
>
INFO [05-20|11:43:32] Déploiement du serveur proxy inverse nginx = 192.168.10.10 port = 8081
Bâtiment nginx
Étape 1/1: FROM jwilder / nginx-proxy
 ---> e143a63bea4b
Construit avec succès e143a63bea4b
Recréer puptest_nginx_1

Proxy déployé, quel domaine affecter? (par défaut = 192.168.10.10)
> homestead.test

Quel devrait être le mot de passe secret de l'API? (ne doit pas être vide)
> internet2
Conteneurs orphelins trouvés (puptest_nginx_1) pour ce projet. Si vous avez supprimé ou renommé ce service dans votre fichier de composition, vous pouvez exécuter cette commande avec le drapeau --remove-orphans pour le nettoyer.
Construire des ethstats
Étape 1/2: FROM puppeth / ethstats: dernière

Nous sélectionnons le premier serveur précédemment ajouté. Ensuite, nous ajoutons un port sur lequel déployer ce logiciel, puis nommons le domaine par lequel nous allons accéder à l'application. Enfin, nous générons un simple "secret" pour accéder à l'API de l'application. Docker prend alors le relais et construit le logiciel pour nous

Le résultat final devrait être une autre sortie d'écran de santé, mais cette fois la table aura une autre entrée: elle affichera aussi l'application ethstats avec sa configuration details:

 INFO [05-20|11:44:23] Démarrage de l'état de santé du serveur distant-check server=vagrant@192.168.10.10
+ ----------------------- + --------------- + --------- - + ----------------------- + ---------------- +
| SERVER | ADRESSE | SERVICE | CONFIG | VALUE |
+ ----------------------- + --------------- + --------- - + ----------------------- + ---------------- +
| vagrant@192.168.10.10 | 192.168.10.10 | ethstats | Adresses bannies | [] |
| | | | Secret de connexion | internet2 |
| | | | Adresse du site | homestead.test |
| | | | Port d'écoute du site Web | 8081 |
| | | | --------------------- | -------------- |
| | | nginx | Port d'écoute partagé | 8081 |
+ ----------------------- + --------------- + --------- - + ----------------------- + ---------------- +

En visitant l'URL homestead.test: 8081 dans le navigateur devrait montrer un écran comme le suivant:

 Ethstats local

Cette application est actuellement inutile: nous avons besoin Déployer au moins un nœud pour que cette application commence à montrer quelque chose!

Bootnode

Déployons un nœud d'amorçage

Un nœud d'amorçage est un nœud servant de premier point de connexion à travers lequel un nœud Ethereum se connecte à d'autres nœuds. Il s'agit essentiellement d'un relais d'informations qui aident les nœuds à se connecter.

Choisissez l'option 2 pour déployer le nœud d'amorçage. Encore une fois, déployez sur le même serveur distant et choisissez des valeurs par défaut, puis donnez un nom au nœud pour la table "stats de santé":

 Avec quel serveur voulez-vous interagir?
 1. vagrant@192.168.10.10
 2. vagrant@192.168.10.11
 3. Connectez un autre serveur
> 1

Où les données doivent-elles être stockées sur la machine distante?
> / home / vagabond / mychain

Quel port TCP / UDP écouter? (par défaut = 30303)
>

Combien de pairs pour permettre la connexion? (par défaut = 512)
>

Combien de pairs de lumière pour permettre la connexion? (par défaut = 256)
>

Quel devrait être le nom du noeud sur la page de statistiques?
> butin

Docker va construire le noeud et l'exécuter. L'emplacement où stocker les données sur la machine distante est arbitraire. Nous avons choisi le répertoire personnel de l'utilisateur vagabond .

Si vous revisitez la page ethstats maintenant ( homestead.test: 8081 ), vous remarquerez que ] booty est dans la liste des nœuds!

 Booty est listé

Note: Si ce n'est pas le cas et que votre bootnode est hors ligne dans la vérification, redémarrez le serveur distant (avec la VM, c'est refouler le vagabond ) et ensuite vérifier à nouveau .

Sealnode

Un nœud de phoque est un nœud qui peut servir de mineur de nouveaux blocs. Déployons cela ensuite:

 Avec quel serveur voulez-vous interagir?
 1. vagrant@192.168.10.10
 2. vagrant@192.168.10.11
 3. Connectez un autre serveur
> 1

Où les données doivent-elles être stockées sur la machine distante?
> / home / vagabond / mychainsealer

Quel port TCP / UDP écouter? (par défaut = 30303)
> 30301

Combien de pairs pour permettre la connexion? (par défaut = 50)
>

Combien de pairs de lumière pour permettre la connexion? (par défaut = 0)
>

Quel devrait être le nom du noeud sur la page de statistiques?
> scellant

Veuillez coller la clé JSON du signataire:
> { "Adresse": "655a6ea9950cdf9f8a8175fda639555f17277bdf", "crypto": { "chiffre": "aes-128-ctr", "cryptogramme": "9278db9216e3c58380864bb53edcec245c5bc919a51733333410fe4b22818914", "cipherparams": { "iv": "ca6579d08e97c25f46e127e026bafadb"}, » kdf ":" scrypt "," kdfparams ": {" dklen ": 32," n ": 262144," p ": 1," r ": 8," sel ":" 93e5f080d76e50c0e08add15d3fdd9b143295d0ccaeec9dae89446e0478ba4a1 "}," mac ":" 28fcdaaf6008d82a0fe22ac60de3398f12a47e471a21618b2333fe15d8d6c9c3 "}," id ":" 20ae40fe-ebf9-4047-8203-711bf67213e9 "," version ": 3}

Quel est le mot de passe de déverrouillage du compte? (ne sera pas répercuté)
>

Quelle limite de gaz doit vider les blocs cible (MGas)? (par défaut = 4.700)
>

Quel prix du gaz le signataire devrait-il exiger (GWei)? (par défaut = 18.000)
>

Tous les paramètres par défaut, sauf l'emplacement pour stocker les données et le nom du nœud. Pour JSON, récupérez le contenu du fichier que nous avons généré précédemment lors de la création de nouveaux comptes Ethereum. Cela va être dans my_project / node1 / keystore . Le contenu complet de ce fichier devrait être collé ici, et Puppeth demandera alors le mot de passe pour déverrouiller ce portefeuille. L'écran de santé devrait montrer que le nœud fonctionne et il devrait apparaître dans l'écran Ethstats sous le nom que vous lui avez donné

 Sealer a été ajouté [19659014] Ensuite, répétez le processus pour l'autre machine (celle avec l'adresse IP 192.168.10.11 ). Attribuez un nom différent à ce noeud et utilisez l'autre fichier de magasin de clés. En d'autres termes, définissez le autre compte que nous avons créé comme scellant dans ce noeud.

Vos noeuds vont maintenant s'exécuter et explorer ensemble. Vous devriez pouvoir voir quelques progrès sur l'écran Ethstats que vous avez déployé à l'étape précédente.

Note: si le statut ne change pas ou qu'un seul bloc est extrait et que rien ne se passe, les nœuds sont bloqués. Cela peut arriver sur de nouvelles installations. Redémarrez les machines virtuelles et cela fonctionnera

Wallet

Pour pouvoir envoyer facilement des jetons Ether et personnalisés, vous pouvez déployer votre propre version de MyEtherWallet en utilisant Puppeth.

Select Wallet dans la sélection des composants à déployer et remplir les options comme suit:

 Sur quel port le portefeuille doit-il être écouté? (par défaut = 80)
> 8083

Autoriser le partage du port avec d'autres services (y / n)? (par défaut = oui)
> non

Où les données doivent-elles être stockées sur la machine distante?
> / home / vagabond / portefeuille

Quel port TCP / UDP doit être écouté par le nœud de sauvegarde? (par défaut = 30303)
> 30304

Quel port l'API RPC de sauvegarde doit-elle écouter? (par défaut = 8545)
>

Quel devrait être le nom du portefeuille sur la page de statistiques?
> portefeuille

Le portefeuille devrait être disponible et auto-connecté à votre réseau de test

 connecté

Vous pouvez ouvrir un portefeuille en sélectionnant le fichier JSON comme moyen de le déverrouiller et en pointant sur l'un des les fichiers JSON que nous avons générés précédemment dans les dossiers my_project / nodeX / keystore . Entrez ensuite le mot de passe, et vous aurez des milliards d'éther à envoyer. Vous pouvez utiliser cette version locale du portefeuille pour créer des comptes sur votre blockchain privée et tester complètement tout. Allez-y et envoyez de l'éther!

Robinet

Un Robinet est un site sur lequel un utilisateur peut facilement demander un test d'éther. Les robinets publiquement accessibles comme le Rinkeby Faucet ont des mécanismes de protection contre le spam, mais notre robinet local peut être beaucoup moins sécurisé puisqu'il s'agit d'un blockchain de test.

 Sur quel port le robinet doit-il écouter? (par défaut = 80)
> 8084

Autoriser le partage du port avec d'autres services (y / n)? (par défaut = oui)
> non

Combien d'éthers doivent être libérés par demande? (par défaut = 1)
>

Combien de minutes appliquer entre les demandes? (par défaut = 1440)
> 1

Combien de niveaux de financement comporter (montants x2,5, délai d'attente x3)? (par défaut = 3)
>

Activer la protection reCaptcha contre les robots (y / n)? (par défaut = non)
>
WARN [05-20|12:51:13] Les utilisateurs pourront demander des fonds via des scripts automatisés

Où les données doivent-elles être stockées sur la machine distante?
> / home / vagabond / robinet

Quel port TCP / UDP le client léger doit-il écouter? (par défaut = 30303)
> 30305

Quel devrait être le nom du noeud sur la page de statistiques?
> robinet

Veuillez coller la clé de compte de financement du robinet JSON:
> { "Adresse": "655a6ea9950cdf9f8a8175fda639555f17277bdf", "crypto": { "chiffre": "aes-128-ctr", "cryptogramme": "9278db9216e3c58380864bb53edcec245c5bc919a51733333410fe4b22818914", "cipherparams": { "iv": "ca6579d08e97c25f46e127e026bafadb"}, » kdf ":" scrypt "," kdfparams ": {" dklen ": 32," n ": 262144," p ": 1," r ": 8," sel ":" 93e5f080d76e50c0e08add15d3fdd9b143295d0ccaeec9dae89446e0478ba4a1 "}," mac ":" 28fcdaaf6008d82a0fe22ac60de3398f12a47e471a21618b2333fe15d8d6c9c3 "}," id ":" 20ae40fe-ebf9-4047-8203-711bf67213e9 "," version ": 3}

Quel est le mot de passe de déverrouillage du compte? (ne sera pas répercuté)
>

Autoriser les demandes de financement non authentifiées (oui / non)? (par défaut = false)
> y

Une fois ces services ajoutés, vous devriez pouvoir les voir dans la liste Ethstats

 Tous les services sont listés

Tableau de bord

Enfin, Puppeth propose le "Dashboard", un interface web qui combine toutes les interfaces que nous avons lancées jusqu'à présent. Le processus de déploiement est tout aussi simple: il suffit de suivre les étapes et, lorsqu'on vous demande de créer des liens avec des composants existants, sélectionnez ceux que nous avons déjà démarrés. Le résultat final devrait ressembler à ceci:

 Tableau de bord

Le tableau de bord est une collection de tous les outils que nous avons déployés jusqu'à présent, plus quelques instructions sur la façon de se connecter manuellement à la blockchain.

Conclusion

Vous pouvez maintenant commencer à développer facilement vos contrats intelligents et les déployer dans votre blockchain de test via votre version locale de MyEtherWallet ou l'intégration MetaMask de Remix, ou toute autre combinaison ]

Puppeth est un guichet unique d'outils de gestion de services blockchain. C'est très pratique quand vous faites du développement de blockchain souvent, mais ça peut être compliqué d'envelopper votre tête. J'espère que ce guide vous a aidé à comprendre ce qu'il fait et comment il le fait, et vous aidera dans vos futurs projets de blockchain.

Les conteneurs Docker qui exécutent les composants sont configurés pour s'exécuter automatiquement au démarrage, redémarrant ainsi l'un des Les machines virtuelles ne nécessiteront aucune reconfiguration, mais vous devrez ajouter à nouveau les serveurs dans Puppeth si vous souhaitez modifier certains composants ou en installer de nouveaux.

Vous avez des questions? Ping l'auteur sur Twitter ! [196591005] Bruno est un développeur blockchain et un auditeur de code de Croatie avec une maîtrise en informatique et en langue et littérature anglaise. Il a été développeur web pendant 10 ans jusqu'à ce que JavaScript le conduise. Il dirige maintenant une entreprise de crypto-monnaie à Bitfalls.com via laquelle il rend la technologie blockchain accessible aux masses, et gère Coinvendor une plateforme d'intégration permettant aux gens d'acheter facilement de la crypto-monnaie. Il est également un développeur évangéliste pour Diffbot.com un grattoir de vision de machine basé sur l'IA basé à San Francisco. En savoir plus sur ses antécédents avec la blockchain ici .






Source link

0 Partages
Revenir vers le haut