Le réseau Cudos est une blockchain spéciale conçue pour fournir un cloud computing haute performance, sans confiance et sans autorisation pour tous.

Vous souhaitez commencer à valider pour CUDOS? Alors vous êtes au bon endroit! Ce qui suit est un guide détaillé étape par étape sur la façon de configurer votre propre validateur dans CUDOS.

À ce stade, nous allons nous écarter de la documentation officielle et opter pour CentOS.

La configuration de l’environnement est destinée à être effectuée sur toutes les machines hôtes. La configuration matérielle requise peut être trouvée
ici
. Une fois que vous avez mis en place une machine hôte, veuillez suivre les étapes ci-dessous.

Si vous venez de commencer avec ce didacticiel, commencez par faire tourner une machine de validation.

Tout d’abord, nous devons installer quelques outils.

# Install Docker, Git and jQuery via the yum package manager.
$ sudo yum install docker git jq -y# Start the Docker daemon.
$ sudo service docker start# Install docker-compose by downloading the binary from the GitHub download archive.
$ curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose# Make docker-compose executable for the current user.
$ chmod +x /usr/local/bin/docker-compose

Maintenant, créons un espace de travail dans le répertoire $HOME et cd dedans.

$ mkdir ~/cudos
$ cd ~/cudos

Next, nous devons cloner CudosNode, CudosBuilders et CudosGravityBridge.

$ git clone --depth 1 --branch v0.2 https://github.com/CudoVentures/cudos-node.git CudosNode
$ git clone --depth 1 --branch v0.3  https://github.com/CudoVentures/cudos-builders.git CudosBuilders
$ git clone --depth 1 --branch v0.2 https://github.com/CudoVentures/cosmos-gravity-bridge.git CudosGravityBridge

Créez l’image docker pour CudosBuilders.

$ cd ~/cudos/docker/binary-builder
$ sudo docker-compose --env-file binary-builder.arg -f binary-builder.yml -p cudos-binary-builder up --build --detach

D’accord, il est temps de passer aux choses sérieuses. La configuration du validateur implique la mise en place de trois composants :

  • Le validateur CUDOS, qui participe au consensus on-chain en votant et en proposant des blocs, et qui est utilisé par l’orchestrateur pour faire son appel contre la chaîne CUDOS
  • Le Gravity Bridge Orchestrator, qui gère le flux de jetons entre CUDOS et Ethereum
  • Un nœud complet Ethereum,qui est utilisé par l’orchestrateur pour effectuer ses appels contre Ethereum

1.1) Configuration du nœud complet Ethereum

Tout d’abord, faites tourner une nouvelle machine hôte (voir la configuration matérielle requise pour le « nœud Ethereum »).

Alternativement, vous pouvez également utiliser votre propre nœud complet Ethereum, auquel cas vous pouvez passer à 1.2). Assurez-vous simplement de ne pas utiliser Infura.

Rappel: Complétez le « 0) Configuration de l’environnement » avant de continuer avec les étapes ci-dessous.

L’exécution d’un nœud Ethereum est assez simple.

$ cd ~/cudos/CudosBuilders/docker/ethereum
$ sudo docker-compose -f ethereum-full.yml -p ethereum up --build --detach

Notez que la synchronisation de la blockchain Rinkeby peut prendre des heures / jours. Vous pouvez afficher les journaux en exécutant la commande suivante.

$ sudo docker logs -f ethereum

1.2) Configuration du nœud de validation CUDOS

Tout d’abord, la mise en service d’une nouvelle machine hôte (voir la configuration matérielle requise pour le nœud validateur). Nous allons initialiser un nœud complet CUDOS dessus, que nous configurerons plus tard pour devenir un validateur.

Rappel: Complétez le « 0) Configuration de l’environnement » avant de continuer avec les étapes ci-dessous.

# Navigate to the full-node directory of CudosBuilders.
$ cd ~/cudos/CudosBuilders/docker/full-node# Make a copy of the example full-node env file and open it with a text editor of your choice.
$ cp full-node.env.example full-node.client.testnet.public01.env
$ nano full-node.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
MONIKER=<Insert your validator moniker here>
SHOULD_USER_GLOBAL_PEERS=false# Initialize the full node.
$ sudo docker-compose --env-file full-node.client.testnet.public01.arg -f init-full-node.yml -p cudos-init-full-node-client-testnet-public-01 up --build

Si tout s’est bien passé, il devrait y avoir un répertoire ~/cudos/CudosData.

$ ls ~/cudos
CudosBuilders  CudosData  CudosGravityBridge  CudosNode
                   /\
                   ||
     This directory should be there.

Assurons-nous également que tous les fichiers ont été générés correctement.

$ ls ~/cudos/CudosData/cudos-data-full-node-client-testnet-public-01
config  data  tendermint.nodeid

Copiez et collez l’ID de nœud dans un fichier texte sur votre ordinateur local. Vous en aurez besoin sous peu.

$ cat ~/cudos/CudosData/cudos-data-full-node-client-testnet-public-01/tendermint.nodeid

Ça a l’air bien jusqu’à présent. Maintenant, afin d’obtenir des pairs, il est recommandé de faire tourner un nœud sentinelle sur une autre machine hôte.

  • Répétez l’étape « 0) Configuration de l’environnement » sur le nœud sentinelle.
  • Suivez le guide officiel de configuration de Sentry.
    Pour l’étape 6, vous aurez besoin de l’ID de nœud du validateur à partir du fichier texte mentionné ci-dessus et de l’adresse IP publique du validateur. Assurez-vous que le port 26656 est ouvert pour les connexions entrantes et sortantes. Pour l’instant, vous n’avez pas besoin d’entrer d’autres adresses homologues que celles de votre validateur.
  • Obtenez l’ID de nœud de la sentinelle, copiez-le et collez-le dans un fichier texte sur votre ordinateur local. Vous en aurez besoin sous peu.
$ cat ~/cudos/CudosData/cudos-data-sentry-node-client-testnet-public-01/tendermint.nodeid
  • Idéalement, vous devez configurer au moins deux nœuds sentinelles pour une protection DDoS efficace. Répétez simplement les trois étapes ci-dessus sur une autre machine hôte.

Facultatif: Configurer un nœud d’amorçage. Nous allons cependant sauter cette étape de ce guide.

Maintenant que nous avons configuré nos sentinelles, nous devons les ajouter en tant que pairs à notre nœud de validation.

$ cd ~/cudos/CudosBuilders/docker/full-node
$ nano full-node.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
PERSISTENT_PEERS=<sentry1-node-id>@<sentry1-public.ip>:26656,<sentry2-node-id>@<sentry2-public.ip>:26656

D’accord, il est temps de démarrer le nœud complet.

# Set the configuration.
$ sudo docker-compose --env-file full-node.client.testnet.public01.arg -f config-full-node.yml -p cudos-config-full-node-client-testnet-public-01 up --build# Start the full node.
sudo docker-compose --env-file full-node.client.testnet.public01.arg -f start-full-node.yml -p cudos-start-full-node-client-testnet-public-01 up --build --detach# Logs can be viewed by running the following command.
$ sudo docker logs -f cudos-start-full-node-client-testnet-public-01

À ce stade, puisque nous n’avons démarré le nœud complet qu’il y a quelques instants, il va toujours synchroniser la blockchain. Selon votre matériel et la taille de la blockchain, cela peut prendre des heures / jours. Vous pouvez vérifier l’état de la synchronisation à l’aide des commandes suivantes.

# Wait for the output of this command to be 'false'.
$ sudo docker exec -ti cudos-start-full-node-client-testnet-public-01 cudos-noded status | jq '.SyncInfo.catching_up'# Check the progress by comparing the block height from the output of this command with the latest block height from the official block explorer.
$ sudo docker exec -ti cudos-start-full-node-client-testnet-public-01 cudos-noded status | jq '.SyncInfo.latest_block_height'

En attendant, nous pouvons créer un compte, qui est nécessaire pour interagir avec la blockchain. Nous allons en créer un en utilisant l’extension Web Keplr. Veuillez suivre ce guide.

N’oubliez pas de sauvegarder la phrase mnémonique et de la stocker dans un endroit sûr!

Une fois que le nœud a rattrapé son retard, nous pouvons importer notre compte de validateur que nous venons de créer dans Keplr. Pour cela, nous devrons accéder à la coque du conteneur du validateur.

$ sudo docker exec -it cudos-start-full-node-client-testnet-public-01 bash

Ensuite, veuillez exécuter la commande suivante, qui vous demandera d’entrer la phrase mnémonique.

$ cudos-noded keys add validator --recover --keyring-backend file

Pour vérifier si la clé a été ajoutée avec succès, utilisez la commande suivante, qui devrait répertorier une clé « validateur ».

$ cudos-noded keys list --keyring-backend file

Avant de pouvoir créer notre validateur sur la chaîne, il a besoin de jetons qu’il peut s’auto-investir, afin qu’il puisse réellement devenir un validateur et participer au consensus.

Une fois que vous avez des jetons, nous pouvons maintenant créer le validateur sur la chaîne à l’aide de la commande suivante.

$ cudos-noded tx staking create-validator \
  --amount <STAKE> \
  --from validator \
  --pubkey $(cudos-noded tendermint show-validator) \
  --moniker <YOUR_MONIKER> \
  --chain-id <CHAIN_ID> \
  --commission-rate <COM_RATE> \
  --commission-max-rate <COM_MAX_RATE> \
  --commission-max-change-rate <COM_MAX_CHANGE_RATE> \
  --min-self-delegation 1 \
  --gas auto \
  --gas-prices 0.025acudos \
  --gas-adjustment 1.80 \
  --keyring-backend file \
  -y
  • <L’enjeu > doit être d’au moins 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
  • <YOUR_MONIKER > doit être le même que celui que vous avez fourni dans ~/cudos/CudosBuilders/docker/full-node/full-node.client.testnet.public01.env
  • <CHAIN_ID doit > être cudos-testnet-public pour testnet (à déterminer pour mainnet)
  • <COM_RATE est > le pourcentage de commission que vous souhaitez prendre sur toutes les récompenses, c’est-à-dire que 0,10 signifie que vous prendrez 10% de toutes les récompenses générées.
  • <COM_MAX_RATE est > le taux de commission maximum auquel vous vous engagez, c’est-à-dire que 0,40 signifie que vous ne prendrez jamais plus de 40% de toutes les récompenses générées.
  • <COM_MAX_CHANGE_RATE est > le taux maximum en pourcentage, que vous pouvez modifier votre taux de commission par jour, c’est-à-dire que 0,20 signifie que par jour, vous pouvez augmenter ou diminuer votre commission de 20%

Exécutez la commande et attendez qu’elle soit traitée. Si vous voyez un hachage de transaction sans obtenir d’erreur, cela signifie que vous avez créé avec succès un compte de validateur ! Vous pouvez copier le hachage de la transaction et y jeter un coup d’œil dans l’explorateur de blocs.

En outre, vous devriez pouvoir trouver votre validateur dans la liste imprimée par la commande suivante (recherchez votre surnom).

$ cudos-noded q staking validators

S’il vous plaît, ne quittez pas la session de shell de conteneur, car nous continuerons à travailler sur le validateur à l’étape suivante.

1.3) Configuration d’Orchestrator

Pour l’orchestrateur, nous avons besoin d’un autre compte sur la machine de validation. Créez-en un dans Keplr, sauvegardez la phrase mnémonique et stockez-la dans un endroit sûr. Ensuite, utilisez la commande suivante pour importer le compte orchestrateur, qui vous demandera d’entrer la phrase mnémonique du compte orchestrateur.

$ cudos-noded keys add orchestrator --recover --keyring-backend file

Pour vérifier si la clé a été ajoutée avec succès, utilisez la commande suivante, qui doit répertorier une clé « validateur » et la clé « orchestrateur » nouvellement ajoutée.

$ cudos-noded keys list --keyring-backend file

Pour les prochaines étapes, vous aurez besoin d’un compte Ethereum. Veuillez suivre ce guide sur la façon d’installer et de configurer Metamask, et de créer un compte. Une fois que vous avez une adresse Ethereum, nous pouvons enregistrer l’orchestrateur.

$ cudos-noded tx gravity set-orchestrator-address <VALIDATOR_ADDRESS> <ORCH_ADDRESS> <ETH_ADDRESS>
  • <VALIDATOR_ADDRESS est > l’adresse de l’opérateur du validateur (cudosvaloper…). Il peut être récupéré avec la commande suivante.
$ cudos-noded keys show validator --bech val --keyring-backend file
  • <ORCH_ADDRESS est > l’adresse des orchestrateurs (cudos…). Il peut être récupéré avec la commande suivante.
$ cudos-noded keys show orchestrator --keyring-backend file
  • <ETH_ADDRESS > est l’adresse Ethereum que vous avez créée dans Metamask (0x…).

Une fois que vous avez enregistré l’orchestrateur, nous devons le configurer.

$ cd ~/cudos/CudosBuilders/docker/orchestrator
$ cp orchestrator.env.example orchestrator.client.testnet.public01.env
$ nano orchestrator.client.testnet.public01.env# Add the following contents to the file. Once you're done, save the changes and close the file.
ADDRESS_PREFIX="cudos"
FEES="<FEES>"
GRPC="http://<CUDOS_NODE_IP>:9090"
ETHRPC="http://<ETH_NODE_IP>:8545"
CONTRACT_ADDR="0xb22F2A4c231e69703FC524Eb2E3eb7B83C316F42"
COSMOS_ORCH_MNEMONIC="<ORCH_MNEMONIC>"
ETH_PRIV_KEY_HEX="<HEX_PRIV_KEY>"
  • <Les FRAIS > sont les frais que vous devrez payer pour chaque transaction de pont, par exemple 100 acudos.
  • <CUDOS_NODE_IP est > l’adresse IP publique du nœud de validation CUDOS.
  • <ETH_NODE_IP est > l’adresse IP publique du nœud complet Ethereum.
  • <ORCH_MNEMONIC est > la phrase mnémonique de votre compte orchestrateur.
  • <ETH_PRIV_KEY_HEX est > la représentation hexadécimale si la clé privée du compte Ethereum, sans le « 0x » en tête. Veuillez suivre ce guide afin d’exporter la clé privée dePuis Metamask.

Enfin, exécutez l’orchestrateur.

$ sudo docker-compose --env-file orchestrator.client.testnet.public01.arg -f orchestrator.release.yml -p cudos-orchestrator-client-testnet-public-01-release up --build --detach

Vous pouvez afficher les journaux à l’aide de la commande suivante.

$ sudo docker logs -f cudos-orchestrator-client-testnet-public-01-release

Et cela conclut à peu près tout! Vous exécutez maintenant un nœud de validation sur la blockchain CUDOS et un orchestrateur pour relier les transferts de jetons entre Cosmos et Ethereum!

Nous espérons que vous avez trouvé ce guide utile et laissez-nous applaudir!

Jusqu’à la prochaine fois!

Pour en savoir plus:

Site Web, Twitter, Telegram, YouTube, Discord, Medium, Podcast