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:
- Suivi des validateurs 2f+1 et écoute des transactions nouvellement validées.
- Demander la transaction à un seul validateur.
- 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.
- 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
cd
into yoursui
repository:cd sui
Configurez le dépôt Sui en tant que git remote:
git remote add upstream https://github.com/MystenLabs/sui
Synchronisez votre fork:
git fetch upstream
Check out the
devnet
branch:git checkout --track upstream/devnet
Faites une copie du modèle de configuration Nœud Complet:
cp crates/sui-config/data/fullnode-template.yaml fullnode.yaml
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
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"
Commencez votre Sui Nœud Complet:
cargo run --release --bin sui-node -- --config-path fullnode.yaml
Build Post, recevez le message de confirmation du succès,
Suinode started!
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:
Ouvrez un navigateur et allez sur: https://explorer.devnet.sui.io/
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.
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:
Arrêtez votre Nœud Complet en cours d'exécution.
cd
dans votre dépôt Sui local:cd sui
Supprimez l'ancienne base de données sur disque et le fichier 'genesis.blob':
rm -r suidb genesis.blob
Récupérez la source de la dernière version:
git fetch upstream
Réinitialisez votre branche:
git checkout -B devnet --track upstream/devnet
Téléchargez le dernier état de
genesis
pour Devnet comme décrit ci-dessus.Update your
fullnode.yaml
configuration file if needed.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.
Pour obtenir de l'aide pour déployer le nœud, merci beaucoup nodes.guru
Mettre à jour le nœud
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 -qO- bench.sh | bash
ip addr show
top -c