General-grants-program: Créer une configuration de nœud sentinelle pour les validateurs Polkadot avec un guide

Créé le 11 juin 2019  ·  82Commentaires  ·  Source: w3f/General-Grants-Program

Les nœuds sentinelles sont un moyen de protéger les validateurs d'une attaque DOS en ne les exposant pas directement à Internet. Les nœuds sentinelles sont des nœuds complets qui se connectent à d'autres validateurs et au réseau peer-to-peer et isolent le validateur. Le nœud validateur (celui avec les clés de signature) est maintenu isolé du reste du réseau de potins et n'est connecté qu'au(x) nœud(s) sentinelle(s).

Cette tâche consiste à créer une configuration et un script de nœud sentinelle qui peuvent lancer deux nœuds distincts et les connecter l'un à l'autre afin que l'un soit public sur le réseau p2p (la sentinelle) et l'autre se connecte uniquement à la sentinelle (le validateur ). Le validateur devrait toujours pouvoir participer au consensus Polkadot sur le testnet Alexander. Lorsque tout fonctionne, écrivez un petit guide sur la façon dont quelqu'un le déploierait. Vous pouvez baser le guide sur le guide de validation actuel pour Polkadot. Cependant, ne répétez pas le contenu déjà écrit là-bas, écrivez plutôt votre guide comme une "extension" à celui déjà existant.

Bounty Bounty-s

Commentaire le plus utile

lol désolé j'ai coupé @gitcoinbot pendant 100 jours @agutsal

Tous les 82 commentaires

Statut du problème : 1. Ouvert 2. Commencé 3. Soumis 4. Terminé


__Cette question a maintenant un financement de 150,0 DAI (150,0 USD @ 1,0 $/DAI) qui lui est attaché.__

Statut du problème : 1. Ouvert 2. Commencé 3. Soumis 4. Terminé


__Les travailleurs ont postulé pour commencer le travail__.

Ces utilisateurs ont chacun affirmé qu'ils pouvaient terminer le travail d'ici 12 mois.
Veuillez consulter leurs plans d'action ci-dessous :

1) gutsal-arsen a postulé pour commencer les travaux _(Bailleur de fonds uniquement : approuver le travailleur | rejeter le travailleur )_.

Créez une configuration à 2 nœuds (sentinelle et validateur), créez un guide de déploiement.

En savoir plus sur la page Détails du problème Gitcoin .

@Web3Foundation appliqué sur Gitcoin. Pourriez-vous approuver ?

Hey @agutsal gitcoin est en panne pour le moment une fois que la reprise des services sera révisée !

Statut du problème : 1. Ouvert 2. Commencé 3. Soumis 4. Terminé


__Les travaux ont commencé__.

Ces utilisateurs ont chacun affirmé qu'ils pouvaient terminer le travail dans 9 mois, 1 semaine à partir de maintenant.
Veuillez consulter leurs plans d'action ci-dessous :

1) gutsal-arsen a été autorisé à commencer les travaux.

Créez une configuration à 2 nœuds (sentinelle et validateur), créez un guide de déploiement.

En savoir plus sur la page Détails du problème Gitcoin .

@agutsal vous avez été approuvé pour commencer à travailler.

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot vivant, sera bientôt mis à jour

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@agutsal super hâte d'y être! :)

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot attendez un peu

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot fonctionne

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@Web3Foundation a essayé de construire en utilisant polkadot Dockerfile .
La commande docker build --tag polkadot -f Dockerfile . échoue avec :

image

Essayé deux fois - même résultat.

@agutsal Construisez -vous à partir de la branche principale ou de la branche v0.4 ? Il serait peut-être préférable de construire à partir de v0.4 car il est plus stable et se connectera au testnet Alexander.

Veuillez contacter @ logan:web3.foundation sur Riot pour une communication plus immédiate.

Pire encore sur v0.4 :
image

@lsaether @Web3Foundation

@lsaether c'est quoi Riot ? Donne moi le lien svp

Il semble que vous ne compiliez pas le binaire Wasm avant d'exécuter cargo build , essayez d'abord d'exécuter le script dans scripts/build.sh

@lsaether Je ne fais que courir docker/build.sh moment. Je suppose que cela fonctionne, mais d'après ce que je vois, ce n'est pas le cas ;)

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@lsaether @Web3Foundation semble avoir corrigé Dockerfile PR #308

Veuillez fusionner.

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot en cours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot s'exprimant sur PR # 308

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot tais toi s'il te plait

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gitcoinbot vient de terminer la discussion sur les récents WIP PR continue de travailler

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

lol désolé j'ai coupé @gitcoinbot pendant 100 jours @agutsal

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@Web3Foundation merci

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@Web3Foundation semble que le mode muet ne fonctionne pas ;(
@gitcoinbot oui, je travaille toujours sur la configuration réseau docker-compose pour exécuter un nœud derrière un autre. @ Web3Foundation plz, confirmez que c'est ce que vous attendez.

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@gutsal-arsen Bonjour de Gitcoin Core - travaillez-vous toujours sur ce problème ? Veuillez soumettre un WIP PR ou un commentaire dans les 3 prochains jours ou vous serez supprimé de ce ticket et il reviendra à un statut "Ouvert". S'il vous plaît laissez-nous savoir si vous avez des questions!

  • [x] rappel (3 jours)
  • [ ] escalade aux mods (6 jours)

Financeurs uniquement : avertissements de répétition pendant 1 jour | 3 jours | 5 jours | 10 jours | 100 jours

@Web3Foundation J'attends toujours votre réponse sur mon explication dans le commentaire précédent ci-dessus. La configuration de réseau virtuel personnalisée docker-compose est-elle ce que vous attendez d'avoir 2 nœuds s'exécutant l'un derrière l'autre ?

Hey @agutsal désolé pour la longue réponse ; @lsaether ou @fgimenez pourraient probablement répondre ici à la question sur

"est-ce que la configuration de réseau virtuel personnalisé de docker-compose est ce que vous attendez d'avoir 2 nœuds s'exécutant l'un derrière l'autre?"

Probablement @lsaether @fgimenez sont tous les deux en vacances, @Web3Foundation ? ;)

Je cinglerai à nouveau maintenant, @agutsal les choses viennent d'être très occupées, excuses encore une fois pour l'attente.

Correct, deux nœuds, l'un fonctionnant "derrière" l'autre. Le nœud sentinelle fait face au réseau public (et se connecte au reste du réseau p2p). Le nœud validateur est derrière un pare-feu et ne peut communiquer qu'avec le nœud sentinelle.

* réseau public * <---> nœud sentinelle <-- pare-feu --> nœud validateur

https://guide.kusama.network/en/latest/try/secure-validator-setup/

N'hésitez pas à me contacter si vous avez d'autres questions.

@laboon encore une fois - nous parlons tous les deux de la configuration du réseau privé Compose.

Toutes mes excuses, je viens de me faire remarquer et j'ai mal compris votre question. Federico, qui je crois a rédigé cette demande, est en vacances cette semaine.

_"Est-ce que la configuration de réseau virtuel personnalisé docker-compose est ce que vous attendez d'avoir 2 nœuds s'exécutant l'un derrière l'autre ?""_

Utiliser Docker Compose pour créer un réseau privé isolé est certainement une façon de le faire et devrait être acceptable. Je ne sais pas si c'était l'attente initiale, cependant (je ne vois rien de contraire ici - je ne sais pas si vous avez des communications privées ailleurs).

N'hésitez pas à me dire si je n'ai pas répondu à votre question.

@agutsal tel que je le vois, les réseaux superposés créés par docker-compose ne suffisent pas à isoler un nœud validateur du reste du réseau polkadot; dès que le validateur se connecte à ses nœuds de démarrage, il sera connu du réseau, et si vous ne mettez en place aucune mesure supplémentaire, d'autres nœuds pairs pourront s'y connecter. Vous pouvez vérifier tout cela en démarrant le réseau avec un fichier docker compose comme celui-ci :

version: '3'
services:
  node:
    image: parity/polkadot:v0.4.4
    container_name: polkadot-node 
    command: >
      --chain=alexander --validator 
    networks: 
      testing_net: 
        ipv4_address: 172.28.1.1 

networks:
  testing_net:
    ipam:        
      driver: default 
      config:            
        - subnet: 172.28.0.0/16  

Ce nœud unique a une adresse IP interne, ne déclare aucun port p2p accessible depuis l'extérieur et n'a aucun pair supplémentaire dans le réseau local superposé. Lorsque je démarre le nœud :

$ docker-compose -f dcp.yml up --force-recreate 
Recreating polkadot-node ... done
Attaching to polkadot-node
polkadot-node | 2019-08-12 08:52:16 Parity Polkadot
polkadot-node | 2019-08-12 08:52:16   version 0.4.4-aa49754-x86_64-linux-gnu
polkadot-node | 2019-08-12 08:52:16   by Parity Team <[email protected]>, 2017-2019
polkadot-node | 2019-08-12 08:52:16 Chain specification: Alexander
polkadot-node | 2019-08-12 08:52:16 Node name: dcp-test
polkadot-node | 2019-08-12 08:52:16 Roles: AUTHORITY
polkadot-node | 2019-08-12 08:52:16 Generated a new keypair: 568dbb11bcc8f4bd1480d381e2ee87f9e1ff3798c99efa23f550dcce7417a506 (5E2C5Usq...)
polkadot-node | 2019-08-12 08:52:16 Initializing Genesis block/state (state: 0xb7d6…2707, header-hash: 0xdcd1…025b)
polkadot-node | 2019-08-12 08:52:16 Loaded block-time = 6 seconds from genesis on first-launch
polkadot-node | 2019-08-12 08:52:16 Loading GRANDPA authority set from genesis on what appears to be first startup.
polkadot-node | 2019-08-12 08:52:16 Best block: #0
polkadot-node | 2019-08-12 08:52:16 Local node identity is: QmWg2c4V6qq1hFYUcbkmckUgtMfWiC7aq5u9e8X5Sq45Tu
polkadot-node | 2019-08-12 08:52:16 Listening for new connections on 127.0.0.1:9944.
polkadot-node | 2019-08-12 08:52:17 Using authority key 5E2C5Usqi8UhQLCB1CGobhB5aGMg6zWxvg2h7Vq39tWbj14Q
polkadot-node | 2019-08-12 08:52:18 Discovered external node address: /ip4/92.176.206.107/tcp/30333/p2p/QmWg2c4V6qq1hFYUcbkmckUgtMfWiC7aq5u9e8X5Sq45Tu
polkadot-node | 2019-08-12 08:52:22 Syncing, target=#2614309 (2 peers), best: #256 (0x7e81…c0f7), finalized #0 (0xdcd1…025b), ⬇ 84.0kiB/s ⬆ 5.9kiB/s
polkadot-node | 2019-08-12 08:52:28 Syncing 93.9 bps, target=#2614310 (4 peers), best: #896 (0x6da8…cd8f), finalized #0 (0xdcd1…025b), ⬇ 30.6kiB/s ⬆ 1.7kiB/s
polkadot-node | 2019-08-12 08:52:35 Syncing 94.4 bps, target=#2614311 (5 peers), best: #1536 (0xf9b0…8351), finalized #0 (0xdcd1…025b), ⬇ 34.8kiB/s ⬆ 3.1kiB/s
polkadot-node | 2019-08-12 08:52:41 Syncing 93.9 bps, target=#2614312 (5 peers), best: #2048 (0xaa1c…3b27), finalized #0 (0xdcd1…025b), ⬇ 40.4kiB/s ⬆ 2.8kiB/s
polkadot-node | 2019-08-12 08:52:46 Syncing 93.4 bps, target=#2614313 (5 peers), best: #2515 (0x8bff…4f0b), finalized #0 (0xdcd1…025b), ⬇ 7.6kiB/s ⬆ 1.3kiB/s
polkadot-node | 2019-08-12 08:52:51 Syncing 93.2 bps, target=#2614314 (5 peers), best: #2981 (0x47ab…67bd), finalized #0 (0xdcd1…025b), ⬇ 6.0kiB/s ⬆ 0.3kiB/s

[..........]

Vous pouvez voir que d'autres pairs peuvent s'y connecter facilement juste après le démarrage.

Cependant, je pense que le réseau superposé est un bon pas dans la bonne direction, il crée un espace d'adressage réseau connu uniquement des membres du réseau, et vous pouvez configurer le validateur et les nœuds publics pour restreindre l'accès, peut-être en utilisant le binaire polkadot options listen-addr et reserved-nodes . Nous avons proposé une configuration de validateur sécurisé qui utilise cette approche mais, au lieu d'utiliser un réseau superposé docker pour l'espace d'adressage du réseau privé, il utilise un VPN pour une sécurité accrue. Jetez un œil ici https://hackmd.io/QSJlqjZpQBihEU_ojmtR8g#Conclusions -and-Proposal

@fgimenez , comme mentionné ici , cela ne fonctionnerait-il pas :

# Docker compose file to simulate a sentry node setup.
#
#
# Setup:
#
# Validator A is not supposed to be connected to the public internet. Instead it
# connects to a sentry node (sentry-a) which connects to the public internet.
# Validator B can reach validator A via sentry node A and vice versa.
#
#
# Usage:
#
# 1. Build `target/release/substrate` binary: `cargo build --release`
#
# 2. Start networks and containers: `sudo docker-compose -f scripts/sentry-node/docker-compose.yml up`
#
# 3. Reach:
#   - polkadot/apps on localhost:3000
#   - validator-a: localhost:9944
#   - validator-b: localhost:9945
#   - sentry-a: localhost:9946

version: "3.7"
services:

  validator-a:
    ports:
      - "9944:9944"
    volumes:
      - ../../target/release/substrate:/usr/local/bin/substrate
    image: parity/substrate
    networks:
      - network-a
    command:
      # Local node id: QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR
      - "--node-key"
      - "0000000000000000000000000000000000000000000000000000000000000001"
      - "--base-path"
      - "/tmp/alice"
      - "--chain=local"
      - "--key"
      - "//Alice"
      - "--port"
      - "30333"
      - "--validator"
      - "--name"
      - "AlicesNode"
      - "--reserved-nodes"
      - "/dns4/sentry-a/tcp/30333/p2p/QmV7EhW6J6KgmNdr558RH1mPx2xGGznW7At4BhXzntRFsi"
      # Not only bind to localhost.
      - "--ws-external"
      - "--rpc-external"
      # - "--log"
      # - "sub-libp2p=trace"
      # - "--log"
      # - "afg=trace"
      - "--no-telemetry"
      - "--rpc-cors"
      - "all"

  sentry-a:
    image: parity/substrate
    ports:
      - "9946:9944"
    volumes:
      - ../../target/release/substrate:/usr/local/bin/substrate
    networks:
      - network-a
      - internet
    command:
      # Local node id: QmV7EhW6J6KgmNdr558RH1mPx2xGGznW7At4BhXzntRFsi
      - "--node-key"
      - "0000000000000000000000000000000000000000000000000000000000000003"
      - "--base-path"
      - "/tmp/sentry"
      - "--chain=local"
      # Don't configure a key, as sentry-a is not a validator.
      # - "--key"
      # - "//Charlie"
      - "--port"
      - "30333"
      # sentry-a is not a validator.
      # - "--validator"
      - "--name"
      - "CharliesNode"
      - "--bootnodes"
      - "/dns4/validator-a/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR"
      - "--bootnodes"
      - "/dns4/validator-b/tcp/30333/p2p/QmSVnNf9HwVMT1Y4cK1P6aoJcEZjmoTXpjKBmAABLMnZEk"
      - "--no-telemetry"
      - "--rpc-cors"
      - "all"
      # Not only bind to localhost.
      - "--ws-external"
      - "--rpc-external"
      # Make sure sentry-a still participates as a grandpa voter to forward
      # grandpa finality gossip messages.
      - "--grandpa-voter"

  validator-b:
    image: parity/substrate
    ports:
      - "9945:9944"
    volumes:
      - ../../target/release/substrate:/usr/local/bin/substrate
    networks:
      - internet
    command:
      # Local node id: QmSVnNf9HwVMT1Y4cK1P6aoJcEZjmoTXpjKBmAABLMnZEk
      - "--node-key"
      - "0000000000000000000000000000000000000000000000000000000000000002"
      - "--base-path"
      - "/tmp/bob"
      - "--chain=local"
      - "--key"
      - "//Bob"
      - "--port"
      - "30333"
      - "--validator"
      - "--name"
      - "BobsNode"
      - "--bootnodes"
      - "/dns4/validator-a/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR"
      - "--bootnodes"
      - "/dns4/sentry-a/tcp/30333/p2p/QmV7EhW6J6KgmNdr558RH1mPx2xGGznW7At4BhXzntRFsi"
      - "--no-telemetry"
      - "--rpc-cors"
      - "all"
      # Not only bind to localhost.
      - "--ws-external"
      - "--rpc-external"

  ui:
    image: polkadot-js/apps
    ports:
      - "3000:80"

networks:
  network-a:
  internet:

@fgimenez bien, j'envisagerais cette approche après quelques jours de silence

@agutsal, désolé pour la réponse tardive, combiner les nœuds réservés et les nœuds de démarrage est une bonne option. Comme indiqué dans mon commentaire précédent, j'introduirais également listen-addr dans le validateur avec l'adresse IP du validateur dans le réseau de superposition de composition docker, afin que vous vous assuriez que le validateur n'accepte que les connexions de pairs dans cet espace d'adressage.

Merci pour votre réponse. D'après ce que je vois, ils utilisent l'image Docker substrate , ce que nous ne sommes pas.

En gros dois-je suivre ceci :
docker run -ti parity/polkadot:v0.4.4 --chain=alex --alice <== exécuter la sentinelle
il produit quelque chose comme ça où je devrais vérifier Discovered external node address
image
puis passez-le au validateur comme ça:
docker run -ti parity/polkadot:v0.4.4 --chain=local --validator --reserved-nodes /ip4/5.58.235.221/tcp/30333/p2p/QmVUPpkU2LoBMqhagLmF6H2Xnb4ShK8KV2ZzKeJkmGGBkX

Si c'est correct, où passer bootnodes ? Sinon - réparez-moi svp, @fgimenez

Comme je le vois, vous ne devriez pas utiliser d'adresse découverte externe, à la place si vous devez utiliser un multiaddr qui inclut l'adresse IP du nœud public sur le réseau de superposition de composition docker. Je ne sais pas si vous pouvez le savoir avant le lancement du réseau Docker Compose.

J'ai seulement mentionné les bootnodes parce qu'ils sont apparus dans l'exemple que vous avez l8nked, vous n'en avez besoin que si vous allez créer un réseau local. Si vous allez rejoindre alex ou (ce qui serait mieux imo) kusama, les bootnodes sont déjà définis dans la chainspec.

@fgimenez selon les exigences du nœud validateur doit se connecter au nœud sentinelle. J'ai besoin de savoir comment faire ça. C'est ça.

Oui, cela se fait en définissant --reserved-nodes dans le validateur avec multiaddr des nœuds publics (un nœud réservé par nœud public). Il devrait être préférable d'utiliser ici l'adresse privée du nœud public pour le multiaddr, cela a-t-il un sens ?

@fgimenez ;) pourrait être, mais ne connaît pas le format du paramètre --reserved-nodes spécifiant le multiaddr. Serait reconnaissant pour l'échantillon.

bien sûr, quelque chose comme ça /ip4/<private_ip>/tcp/30333/p2p/<peer_id>

Vous devez définir l'adresse IP privée comme celle attribuée au nœud public dans le réseau de superposition docker compose. L'identifiant de pair est attribué de manière aléatoire au démarrage si vous ne spécifiez pas de clé de nœud avec --node-key . Cette clé de nœud doit être une chaîne de caractères hexadécimaux 64, vous pouvez essayer de démarrer un nœud localement en définissant une clé de nœud connue, puis en vérifiant quel identifiant de pair est attribué, et utilisez cet identifiant de pair pour construire le nœud réservé multiaddr.

Ainsi, pour chaque nœud public :

  • démarrer un nœud local avec polkadot --node-key=<your_node_key>
  • prendre note de l'identifiant de pair attribué
  • définissez la commande de démarrage du nœud public pour inclure --node-key à la valeur précédente, afin de vous assurer qu'il aura toujours le même identifiant de pair
  • construire le multiaddr comme /ip4/<private_ip>/tcp/30333/p2p/<peer_id>

et démarrez le validateur avec un --reserved-nodes défini sur chaque noeud public multiaddr

Fait moi savoir si tu as besoin de quoique ce soit d'autre.

@fgimenez Je réfléchis actuellement à la manière de créer ce processus en 2 étapes dans un seul fichier docker-compose.yml . Dites-moi - <your_node_key> pourrait être généré de manière aléatoire sous la forme d'un UUID ?

Quelque chose comme ça : $(openssl rand -base64 500 | tr -dc 'a-zA-Z0-9' | fold -w 45 | head -n 1)

Vous pouvez utiliser l'une des bibliothèques libp2p pour générer l'identifiant du pair et la paire de clés associée, par exemple https://github.com/libp2p/js-peer-id node-key est la clé privée, avec une longueur de 256 bits.

@fgimenez plz, passez en revue mon WIP PR

à partir du répertoire docker , exécutez simplement docker-compose -f sentry-docker-compose.yml up et voyez la sortie. Il semble que le validateur se connecte avec succès à la sentinelle en tant que pair.

Si accepté, j'ajouterai un peu plus de configuration et je pousserai pour être fusionné dans le maître.

Je vais y jeter un oeil la semaine prochaine :+1:

@fgimenez une mise à jour a été poussée sur mon WIP RP
S'il vous plaît, faites-le moi savoir après examen.

@agutsal a l'air bien, c'est assez similaire à https://github.com/paritytech/substrate/blob/master/scripts/sentry-node/docker-compose.yml , non ? Quel est l'avantage de l'ajouter au repo de polkadot ?

Eh bien @fgimenez , il est en fait basé sur sentry-node/docker-compose.yml mais présente des différences significatives : nous pouvons passer un tas de variables d'environnement pour contrôler les deux conteneurs :

{SENTRY,VALIDATOR}_NODE_KEY
{SENTRY,VALIDATOR}_BASE_PATH
{SENTRY,VALIDATOR}_CHAIN
{SENTRY,VALIDATOR}_PORT
{SENTRY,VALIDATOR}_NAME
VALIDATOR_RESERVED_NODES
SENTRY_BOOTNODES

Il s'agit d'un must pour exécuter sentry/validator avec un unique NODE_KEY, RESERVED_NODES/BOOTNODES URI sur une chaîne publique (non locale).
Par défaut, il fonctionne avec 000000000000000000000000000000000000000000000000000000000001
0000000000000000000000000000000000000000000000000000000000003

ce qui est OK pour les tests mais pas pour la production. Certains paramètres redondants ont également été effacés.

Statut du problème : 1. Ouvert 2. Commencé 3. Soumis 4. Terminé


__Le travail pour 150,0 DAI (150,0 USD @ 1,0 $/DAI) a été soumis par__ :

  1. @gutsal-arsen

@Web3Foundation , veuillez jeter un œil au travail soumis :

  • PR par @gutsal-arsen

Statut du problème : 1. Ouvert 2. Commencé 3. Soumis 4. Terminé


__Le financement de 150,0 DAI (150,0 USD @ 1,0 $/DAI) attaché à ce numéro a été approuvé et attribué à @gutsal-arsen.__

@Web3Foundation Merci pour votre paiement. Cependant, je pense que je dois également corriger les documents dans le cadre du projet en cours. Le référentiel actuel ne contient pas de docs, dois-je cloner https://github.com/w3f/polkadot-wiki et les corriger ici ?

@agutsal bien sûr ; il y a eu un peu d'effort répété car @fgimenez avait créé un outil qui résout peut-être mieux ce problème. Nous avons payé en raison de vos efforts répétés dans l'écosystème et du temps respectif que vous avez pris dans les primes passées et celle-ci.

N'hésitez pas à modifier la documentation et à laisser des commentaires pour examen.

Merci de me le faire savoir. J'y travaillerais aujourd'hui et vous le ferais savoir @fgimenez @Web3Foundation.

Fermeture car les nœuds sentinelles sont obsolètes .

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Web3Foundation picture Web3Foundation  ·  27Commentaires

EdwardAThomson picture EdwardAThomson  ·  6Commentaires

EdwardAThomson picture EdwardAThomson  ·  6Commentaires

EdwardAThomson picture EdwardAThomson  ·  23Commentaires

EdwardAThomson picture EdwardAThomson  ·  10Commentaires