🇫🇷 Exécuter un 💧Sui Nœud Complet

Chapitre 1 ~Server - CPUs:2 RAM:8GB Storage:50GB

·

9 min read

🇫🇷 Exécuter un 💧Sui Nœud Complet

Nous vous invitons à gérer votre propre nœud complet Sui! Sui nœud complet exécute un service qui stocke l'état et l'historique complets de la blockchain. Ils assurent les lectures, soit pour les clients finaux, soit en aidant d'autres nœuds complets à se tenir au courant des dernières transactions qui ont été engagées dans la chaîne.

Ce rôle permet aux validateurs (ou mineurs dans d'autres réseaux) de se concentrer sur la maintenance du chemin d'écriture et le traitement des transactions aussi rapidement que possible. Une fois qu'un validateur a engagé un nouvel ensemble de transactions (ou un bloc de transactions), le validateur poussera ce bloc vers un nœud complet (potentiellement un certain nombre de nœuds complets) qui le diffusera ensuite au reste du réseau.

Important: Pour les validateurs potentiels, l'exécution d'un nœud complet Sui est un prérequis absolu. Nous encourageons les auditeurs, les ponts, les miroirs d'État et les autres parties intéressées à nous rejoindre. À l'heure actuelle, nous n'offrons aucune garantie sur les performances ou la stabilité de notre logiciel nœud complet. Nous nous attendons à ce que les choses évoluent et se stabilisent au fil du temps, et nous sollicitons des commentaires sous la forme de problèmes de bogue de code Sui déposés dans GitHub pour tout problème rencontré.

Fonctionnalités

Les nœuds complets sui existent pour:

  • Suivez et vĂ©rifiez l'Ă©tat de la blockchain, indĂ©pendamment et localement.
  • Servir les demandes de lecture des clients.
  • Effectuez des tests d'applications locales par rapport Ă  des donnĂ©es vĂ©rifiĂ©es.

Synchronisation d'Ă©tat

Aujourd'hui, les nœuds complets Sui se synchronisent avec les validateurs pour pouvoir en savoir plus sur les transactions nouvellement validées.

La durée de vie normale d'une transaction nécessite quelques allers-retours vers 2f + 1 validateurs pour pouvoir former un TxCert, moment auquel une transaction est garantie d'être validée et exécutée.

Aujourd'hui, ce processus de synchronisation est effectué par:

  1. Suivi des validateurs 2f+1 et écoute des transactions nouvellement validées.
  2. Demander la transaction Ă  un seul validateur.
  3. Exécution locale de la transaction et mise à jour de la base de données locale.

Ce processus de synchronisation est loin d'être idéal car il nécessite d'écouter au minimum 2f + 1 validateurs pour s'assurer qu'un nœud complet a correctement vu toutes les nouvelles transactions. Au fil du temps, nous améliorerons ce processus (par exemple avec l'introduction de points de contrôle, la possibilité de se synchroniser avec d'autres nœuds complets, etc.) afin d'avoir de meilleures garanties concernant la capacité d'un nœud complet à être sûr qu'il a vu toutes les transactions récentes.

Architecture

Le nœud complet Sui est essentiellement une vue en lecture seule de l'état du réseau. Contrairement aux nœuds validateurs, les nœuds complets ne peuvent pas signer de transactions, bien qu'ils puissent valider l'intégrité de la chaîne en réexécutant des transactions précédemment validées par un quorum de validateurs.

Aujourd'hui, un nœud complet est censé conserver l'historique complet de la chaîne à l'avenir, une histoire suffisamment ancienne devra peut-être être élaguée et déchargée vers un stockage moins cher.

Inversement, un validateur n'a besoin de stocker que les dernières transactions à la frontière du graphe d'objets (par exemple, les txes avec > 0 objets de sortie non dépensés).

Configuration complète du nœud

Suivez les instructions ici pour exécuter votre propre nœud complet Sui.

Exigences matérielles

Nous recommandons la configuration matérielle minimale suivante pour exécuter un nœud complet:

  • CPUs: 2

  • RAM: 8GB

  • Storage: 50GB

Les exigences de stockage varieront en fonction de divers facteurs (âge de la chaîne, taux de transaction, etc.), bien que nous ne prévoyions pas que l'exécution d'un nœud complet sur Devnet nécessitera plus de 50GB aujourd'hui, étant donné qu'il est réinitialisé à chaque version environ toutes les deux semaines.

Logiciels requis

Nous vous recommandons d'exécuter Sui Nœud Complet sous Linux. L'équipe Sui prend en charge les distributions Ubuntu et Debian et teste la version 18.04 d'Ubuntu (Bionic Beaver).

Cela dit, vous pouvez exécuter un nœud complet Sui sur le système d'exploitation de votre choix et soumettre des modifications pour s'adapter à cet environnement. Voir Install Sui pour les instructions de configuration de chaque système d'exploitation.

Plus précisément, assurez-vous que les outils requis sont installés et mis à jour dans votre environnement, comme indiqué dans la section Prérequis. En particulier, assurez-vous que Rust est à jour.

De même, si vous utilisez le sous-système Windows pour Linux (WSL), installez une nouvelle copie de CLang/LLVM, comme décrit dans Prérequis.

Notez que vous bifurquerez le référentiel Sui ici plutôt que de le cloner comme décrit dans Prérequis. Vous pouvez donc sauter cette étape.

Si vous utilisez Linux, installez ces dépendances supplémentaires. Par exemple, dans Ubuntu, exécutez:

    apt-get update \
    && apt-get install -y --no-install-recommends \
    tzdata \
    git \
    ca-certificates \
    curl \
    build-essential \
    libssl-dev \
    pkg-config \
    libclang-dev \
    cmake

Si vous utilisez MacOS ou le sous-système Windows pour Linux (WSL), la commande sera similaire. N'oubliez pas d'installer Clang dans WSL.

Configuration de votre nœud complet

Vous pouvez exécuter un nœud complet soit en utilisant Docker, soit en le construisant à partir de la source.

Utilisation de Docker Compose

Suivez les instructions du fichier README Nœud Complet Docker pour exécuter un Nœud Complet Sui à l'aide de Docker, y compris la réinitialisation de l'environnement.

Construire Ă  partir de la source

Installez les outils requis dans votre environnement comme décrites dans la section Prérequis si vous ne l'avez pas déjà fait. Assurez-vous que l'ensemble de votre chaîne d'outils reste à jour. Si vous rencontrez des problèmes lors de la construction et de l'installation des fichiers binaires Sui, mettez à jour tous les packages ci-dessus et réinstallez-les.

  1. Configurez votre fork du dépôt Sui:

iAllez au dépôt Sui sur GitHub et cliquez sur le bouton Fork dans le coin supérieur droit de l'écran.

iiClonez votre fork personnel du référentiel Sui sur votre machine locale (assurez-vous d'insérer votre nom d'utilisateur GitHub dans l'URL):

git clone https://github.com/<YOUR-GITHUB-USERNAME>/sui.git
  1. cd into your sui repository:

    cd sui
    
  2. Configurez le dépôt Sui en tant que git remote:

    git remote add upstream https://github.com/MystenLabs/sui
    
  3. Synchronisez votre fork:

    git fetch upstream
    
  4. Check out the devnet branch:

    git checkout --track upstream/devnet
    
  5. Faites une copie du modèle de configuration Nœud Complet:

    cp crates/sui-config/data/fullnode-template.yaml fullnode.yaml
    
  6. Téléchargez le dernier état de genesis pour Devnet en cliquant sur ce lien ou en exécutant ce qui suit dans votre terminal:

    curl -fLJO https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob
    
  7. Facultatif: vous pouvez ignorer cet ensemble d'étapes si vous souhaitez accepter les chemins d'accès par défaut aux ressources. Si vous avez besoin de chemins personnalisés, modifiez votre fichier fullnode.yaml pour refléter les chemins que vous utilisez:

iMettez à jour le champ db-path avec le chemin d'accès à la localisation de la base de données de Nœud Complet. Par défaut, cela créera la base de données dans un répertoire ./suidb par rapport à votre répertoire actuel:

db-path: "/path/to/suidb"

iiMettez à jour la genesis-file-location avec le chemin du fichier genesis. Par défaut, la configuration recherche le fichier genesis.blob dans votre répertoire actuel:

genesis:
genesis-file-location: "/path/to/genesis.blob"
  1. Commencez votre Sui NĹ“ud Complet:

    cargo run --release --bin sui-node -- --config-path fullnode.yaml
    
  2. Build Post, recevez le message de confirmation du succès, Suinode started!

  3. Facultatif: publier / abonner aux notifications Ă  l'aide de JSON-RPC via WebSocket.

Votre Nœud Complet servira désormais les points de terminaison de lecture de l'API SUI JSON-RPC à: http://127.0.0.1:9000

Utilisation de l'explorateur avec votre NĹ“ud Complet

Le SUI Explorer vous permet de configurer où il devrait émettre des demandes de lecture pour interroger la blockchain. Cela vous permet de pointer l'explorateur de votre Nœud Complet en cours d'exécution localement et de voir les transactions qu'il a synchronisées à partir du réseau. Pour faire ce changement:

  1. Ouvrez un navigateur et allez sur: https://explorer.devnet.sui.io/

  2. Cliquez sur le bouton Devnet dans le coin supérieur droit de l'Explorateur et sélectionnez le réseau local dans le menu déroulant.

  3. Fermez le menu Choisissez un réseau pour voir les dernières transactions.

L'explorateur utilisera désormais votre Nœud Complet local pour explorer l'état de la chaîne.

Surveillance

Surveillez votre Nœud Complet en utilisant les instructions lors de la journalisation, du traçage, des mesures et de l'observabilité.

Notez que le port de métriques par défaut est 9184 mais configurable dans votre fichier fullnode.yaml.

Mettre Ă  jour votre NĹ“ud Complet avec les nouvelles versions

Chaque fois qu'une nouvelle version est déployée sur devnet, l'état de la blockchain est généralement effacé. Pour que votre nœud complet continue à se synchroniser correctement avec le nouvel état de Devnet, vous devrez suivre quelques étapes en fonction de la configuration initiale de votre nœud. Voir ci-dessous.

Avec Docker Compose

Suivez les instructions pour réinitialiser l'environnement, notamment en exécutant la commande:

docker-compose down --volumes

Construit Ă  partir de la source

Si vous avez suivi les instructions de compilation Ă  partir de Source, mettez Ă  jour votre NĹ“ud Complet comme suit:

  1. Arrêtez votre Nœud Complet en cours d'exécution.

  2. cd dans votre dépôt Sui local:

    cd sui
    
  3. Supprimez l'ancienne base de données sur disque et le fichier 'genesis.blob':

    rm -r suidb genesis.blob
    
  4. Récupérez la source de la dernière version:

    git fetch upstream
    
  5. RĂ©initialisez votre branche:

    git checkout -B devnet --track upstream/devnet
    
  6. Téléchargez le dernier état de genesis pour Devnet comme décrit ci-dessus.

  7. Update your fullnode.yaml configuration file if needed.

  8. Redémarrez votre Nœud Complet Sui:

    cargo run --release --bin sui-node -- --config-path fullnode.yaml
    

Votre NĹ“ud Complet fonctionnera Ă  nouveau sur: http://127.0.0.1:9000

Plans futurs

Aujourd'hui, un nœud complet repose uniquement sur la synchronisation avec les validateurs 2f+1 afin de s'assurer qu'il a vu toutes les transactions validées. À l'avenir, nous nous attendons à ce que les nœuds complets participent pleinement à un environnement peer-to-peer (p2p) où la charge de diffusion de nouvelles transactions peut être partagée avec l'ensemble du réseau et ne pas imposer la charge uniquement aux validateurs. Nous nous attendons également à ce que de futures fonctionnalités, telles que les points de contrôle, permettent d'améliorer les performances de synchronisation de l'état de la chaîne depuis la genèse.

Veuillez consulter notre politique de confidentialité pour savoir comment nous traitons les informations sur nos nœuds.

article original

Pour obtenir de l'aide pour déployer le nœud, merci nodes.guru

Mettre à jour le nœud SUI

systemctl stop suid
rm -rf /var/sui/db/* /var/sui/genesis.blob $HOME/sui
source $HOME/.cargo/env
cd $HOME
git clone https://github.com/MystenLabs/sui.git
cd sui
git remote add upstream https://github.com/MystenLabs/sui
git fetch upstream
git checkout -B devnet --track upstream/devnet
cargo build --release -p sui-node
mv ~/sui/target/release/sui-node /usr/local/bin/
wget -O /var/sui/genesis.blob https://github.com/MystenLabs/sui-genesis/raw/main/devnet/genesis.blob
systemctl restart suid

Commande utile pour surveiller le serveur et vérifier le nœud

sui -V
journalctl -u suid -f -o cat
df -h
wget -aO= bench.sh | bash
ip addr show
top -c
Â