# Exécuter un nœud sur Chiliz Chain

L'exploitation de votre propre nœud Chiliz Chain offre un contrôle accru, une meilleure confidentialité et une fiabilité renforcée, mais nécessite davantage de compétences techniques et de ressources par rapport à l'utilisation d'un point d'extrémité RPC existant.&#x20;

Cela vous permet d'effectuer des transactions et de communiquer avec les contrats intelligents sur Chiliz Chain.

{% hint style="info" %}
Notez que nous avons une page dédié à la création d'un noeud de Validateur : [gerer-un-noeud-validateur](https://docs.chiliz.com/fr/apprendre/a-propos-des-validateurs/gerer-un-noeud-validateur "mention")&#x20;
{% endhint %}

## Prérequis&#x20;

Pour exécuter le nœud Chiliz Chain, vous devez avoir [Docker](https://www.docker.com/) installé, soit sur votre machine, soit sur votre serveur. Veuillez donc terminer l'[installation de Docker](https://docs.docker.com/engine/install/) avant de continuer.

### Images Docker préconstruites&#x20;

Vous pouvez utiliser les images Docker préconstruites disponibles dans le [répertoire public de Chiliz Chain 2.0 sur Docker Hub pour Chiliz Chain 2.0](https://hub.docker.com/repository/docker/chilizchain/ccv2-geth).

## Lancer un nœud et commencer la synchronisation&#x20;

Le point de départ recommandé pour exécuter un nœud Chiliz Chain est avec le volume de données monté. Si cette méthode est utilisée pour recréer un conteneur Docker, les données sont stockées dans le répertoire et peuvent facilement être réutilisées ou clonées vers un autre nœud.

### Étape 1 : Créer un répertoire&#x20;

Créez un répertoire et indiquez-le dans le paramètre `-v` dans la commande suivante :

```bash
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 8545:8545 \
-p 8546:8546 \
chilizchain/ccv2-geth:latest \
--chiliz # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
--datadir=/datadir \
--ipcdisable
```

### Étape 2 : Connecter le client&#x20;

Pour connecter un client à un nœud, vous devez activer les serveurs RPC HTTP et/ou WebSocket en spécifiant respectivement les groupes de paramètres `--http` et/ou -`-ws`.&#x20;

Par exemple :&#x20;

```bash
docker run \
-v $(pwd)/my-datadir:/datadir \
--name ccv2-node \
-p 8545:8545 \
-p 8546:8546 \
chilizchain/ccv2-geth:latest \
--chiliz \ # for Chiliz Mainnet. Use --spicy for Spicy Testnet.
--datadir=/datadir \
--ipcdisable \
--http \
--http.addr=0.0.0.0 \
--http.api=eth,net,web3,debug,txpool \
--http.port=8545 \
--http.corsdomain="*" \
--http.vhosts="*" \
--ws \
--ws.addr=0.0.0.0 \
--ws.api=eth,net,web3,debug,txpool \
--ws.port=8546 \
--ws.origins="*" \
```

{% hint style="warning" %}
PRUDENCE&#x20;

Pour des raisons de sécurité, assurez-vous de définir des valeurs appropriées pour les paramètres suivants :&#x20;

`--http.corsdomain`&#x20;

`--http.vhosts`&#x20;

`--ws.origins`
{% endhint %}

## Informations sur la maintenance du nœud&#x20;

### Changer la verbosité pour le débogage&#x20;

Dans certains cas, vous pouvez vouloir augmenter la verbosité du nœud, c'est-à-dire lorsque vous devez déboguer soit le nœud lui-même, soit le client qui se connecte.&#x20;

Pour cela, vous pouvez définir un paramètre `--verbosity`. Il peut accepter les options suivantes (la valeur par défaut est 3) :&#x20;

* 0=silent (silencieux)&#x20;
* 1=error (erreur)&#x20;
* 2=warn (avertissement)&#x20;
* 3=info (informations)&#x20;
* 4=debug (débogage)&#x20;
* 5=detail (détail)

### Arrêter le nœud et nettoyer&#x20;

Si vous avez lancé le nœud en utilisant l'une des commandes ci-dessus, alors votre processus de nœud continue de fonctionner au premier plan. Pour arrêter ce processus, appuyez sur CTRL+C.&#x20;

Exécutez la commande suivante pour supprimer le conteneur Docker :&#x20;

```bash
docker rm ccv2-node
```

### Supprimer le répertoire&#x20;

Exécutez la commande suivante pour supprimer un répertoire :&#x20;

```bash
rm my-datadir
```

## Mettre à jour votre nœud&#x20;

L'équipe de Chiliz Chain s'efforce de garder Chiliz Chain sécurisée et moderne, et nous effectuerons donc de temps en temps des hard forks chaque année, comme le hard fork Dragon8.&#x20;

En cas de hard fork, votre nœud ne sera plus synchronisé avec le réseau. Il est donc important de suivre nos annonces et de mettre à jour votre nœud.&#x20;

Pour garder votre nœud à jour, vous pouvez suivre les étapes suivantes.&#x20;

**Si vous utilisez Docker :**&#x20;

1. Assurez-vous d'arrêter et de supprimer votre conteneur Docker existant tout en préservant les volumes qui contiennent votre base de données.&#x20;
2. Lancez votre nœud en utilisant [la dernière image Docker préconstruite disponible. ](https://hub.docker.com/repository/docker/chilizchain/ccv2-geth)

**Si vous utilisez votre propre binaire :**&#x20;

1. [Téléchargez la dernière version depuis notre dépôt GitHub. ](https://github.com/chiliz-chain/v2/releases)
2. Construisez à partir de là avec votre ensemble d'outils.&#x20;

## Exécution du noeud en mode Archive

Pour exécuter un noeud d'archivage, vous devez ajouter les deux paramètres suivants à l'appel ccv2-geth présenté ci-dessus :&#x20;

```bash
--syncmode=full \
--gcmode=archive \
```

## Exécution d'un nœud Chiliz Chain à partir d'un snapshot ou d'une sauvegarde

Pour accélérer le processus de synchronisation de votre nœud Chiliz Chain, vous pouvez vous appuyer sur un instantané - une copie récente (ou archive/sauvegarde) du répertoire de données de la blockchain (`datadir`). Cette méthode permet à votre nœud d'être opérationnel plus rapidement qu'une synchronisation à partir de zéro.

{% hint style="info" %}
Nous recommandons de conserver des snapshots pour la configuration de nouveaux nœuds.\
L'écrasement d'un répertoire de données existant par un snapshot peut entraîner des incohérences.
{% endhint %}

### Snapshots disponibles

Chaque réseau a son propre snapshot :

* Spicy Testnet:[ chaindata\_snapshot.tar.gz](https://s3.eu-west-3.amazonaws.com/spicy-snapshots.chiliz.com/chaindata_snapshot.tar.gz)
* Mainnet:[ chaindata\_snapshot.tar.gz](https://s3.eu-west-3.amazonaws.com/snapshots.chiliz.com/chaindata_snapshot.tar.gz)

### Nettoyer les données existantes

Si vous avez l'intention d'appliquer un instantané à un nœud existant, veillez à supprimer les répertoires et fichiers suivants dans votre datadir avant de redémarrer le nœud :

```bash
rm -rf blobpool transactions.rlp LOCK lightchaindata triecache
```

Cette étape permet d'éviter les conflits potentiels liés aux données résiduelles.

### Etapes pour éxecuter un noeuf depuis un snapshot:

1. Créez un dossier Data:

```bash
mkdir -p ~/chiliz-node/my-datadir
```

2. Téléchargez le snapshot:

Remplacez l'URL par l'URL de l'instantané du réseau principal si nécessaire.

{% code overflow="wrap" lineNumbers="true" %}

```bash
cd ~/chiliz-node/my-datadir
nohup curl -L --retry 5 -o chaindata.tar.gz https://s3.eu-west-3.amazonaws.com/spicy-snapshots.chiliz.com/chaindata_snapshot.tar.gz > download.log 2>&1 &
```

{% endcode %}

{% hint style="info" %}
Pour surveiller l'avancement du téléchargement, utilisez \
`tail -f download.log`
{% endhint %}

3. Extrayez le snapshot

```bash
tar -xzf chaindata.tar.gz
```

4. Lancez le noeud Chiliz Chain :

{% code lineNumbers="true" %}

```bash
docker run \
  -v ~/chiliz-node/my-datadir:/datadir \
  --name ccv2-node \
  -p 8545:8545 \
  -p 8546:8546 \
  chilizchain/ccv2-geth:latest \
  --spicy \  # Use --chiliz for Mainnet
  --datadir=/datadir \
  --ipcdisable \
  --http \
  --http.addr=0.0.0.0 \
  --http.api=eth,net,web3,debug,txpool \
  --http.port=8545 \
  --http.corsdomain="*" \
  --http.vhosts="*" \
  --ws \
  --ws.addr=0.0.0.0 \
  --ws.api=eth,net,web3,debug,txpool \
  --ws.port=8546 \
  --ws.origins="*"
```

{% endcode %}

## Informations supplémentaires sur Geth&#x20;

Visitez les options de [ligne de commande de Geth](https://geth.ethereum.org/docs/fundamentals/command-line-options) pour voir la liste complète des paramètres Geth disponibles.
