Depuis quelques temps je m'intéresse à la blockchain Ethereum en particulier à la fonctionnalité de "Smart contract". Il s'agit d'un script qui est déployé sur la blockchain et que les mineurs exécutent en échange d'une somme d'argent variable en fonction du contenu du script. Mais pour tester ces smart contracts, il faut installer un réseau Ethereum privé. Ce tutoriel nécessite une compréhension minimal de la blockchain Ethereum et des systèmes de "Proof of work".

Le réseau sera constitué de trois éléments:

  1. Ethereum core (il s'agit de la partie qui enregistre l'ensemble des informations de la blockchain et gère le protocole d'Ethereum).
  2. Ethereum console (console pour lancer des commandes sur le réseau privé et notamment le démarrage des mineurs chargés d'exécuter les smart contracts et de valider les transactions).
  3. Wallet client (le porte feuille qui permet de gérer les contrats et les Ethers).

Étape 1: Compilation de geth.

Geth est le programme contenant Ethereum core et Ethereum console. Tout d'abord, télécharger les sources depuis ici, puis installer golang et build-essential grâce à la commande :

sudo apt-get install -y build-essential golang

Pour build geth, il suffit de taper la commande :

make geth

Le programme qui a était compilé se situe dans "build/bin/geth".

Étape 2: Démarrage de Ethereum core.

Ethereum core est la base du réseau privé. A son démarrage, un fichier .ipc est généré, il s'agit d'un fichier contenant toutes les informations sur notre réseau, il va servir à relier Ethereum core à Ethereum console et au wallet client. Le démarrage se fait grâce à la commande :

./geth --dev --port 1250 --maxpeers 0 --datadir "data"

Étape 3: La console Ethereum.

Cette console s'attache à Ethereum core dans le but de contrôler le réseau. Pour démarrer la console Ethereum, taper la commande suivante dans une console linux tout en gardant Ethereum core en exécution.

./geth --dev attach ipc:data/geth.ipc

Puis créer les comptes qui serviront à tester les contrats dans la console Ethereum dorénavant ouverte.

personal.newAccount('choose-a-password');

Enfin on démarre un mineur qui nous servira à valider les transactions :

miner.start();

Arrêter le mineur :

miner.stop();

Étape 4: Installation du wallet en mode réseau privé.

Le wallet Ethereum se télécharge ici, il s'agit du client wallet classique d'Ethereum que nous démarrerons via une commande pour lui indiquer de se connecter sur notre réseau privé. Une fois l'installation terminée, lancer Ethereum core si il n'est pas déjà démarré pour permettre au wallet de se synchroniser dessus, puis ouvrir une nouvelle console linux tout en gardant Ethereum core et Ethereum console en exécution et taper la commande :

ethereumwallet --rpc go-ethereum/build/bin/data/geth.ipc

Étape 5: Commandes à exécuter à chaque démarrage du réseau privé.

./geth --dev --port 1250 --maxpeers 0 --datadir "data"

./geth --dev attach ipc:data/geth.ipc
miner.start();

ethereumwallet --rpc go-ethereum/build/bin/data/geth.ipc