Développée par la banque d’affaires américaine JP Morgan Chase, Quorum est une solution BlockChain à canaux privés basée sur la BlockChain Ethereum.

L’idée derrière Quorum est de permettre des interactions privées entre les différents participants en ajoutant une couche d’abstraction sur les transactions Ethereum classiques.

Les transactions privées présentent un nombre important de use cases, notamment dans le monde de l’industrie et le monde bancaire. Des banques pourraient avoir envie de prendre avantage des possibilités qu’offrent la BlockChain Ethereum tout en gardant le côté privé des transactions de la banque.

Nous allons présenter ici une démo de l’utilisation de Quorum via un client Ethereum très populaire de test : truffle, afin de tester des interactions entre différents nœuds.

Technologies utilisées :

  • Truffle, un environnement de développement Ethereum et framework de test
  • La BlockChain Ethereum
  • Quorum
  • Le langage solidity pour l’écriture des smart-contracts dans Ethereum
  • Virtual box notre machine virtuelle
  • Vagrant notre wrapper de VM

Installation des ressources sur Linux (pas de bash ubuntu sur Windows):

  • Virtual Box
sudo apt-get install virtualbox
  • Configuration Virtual Box :
sudo apt install linux-headers-generic  sudo apt install virtualbox-dkms

(en cas de problèmes récurrents lors du lancement de Vagrant sur la machine virtuelle, faire VBoxManage puis version et enfin chercher l’erreur affichée sur le net)

  • Vagrant :
sudo apt-get install vagrant
  • Node :
curl -sL https://deb.nodesource.com/setup_4.x| sudo -E bash sudo apt-get install -y nodejs
  • Truffle :
npm install -g truffle

Pour que Vagrant puisse se lancer sur la machine virtuelle, vérifiez que Hyper-V soit désactivée (panneau de configuration/programme/Activer ou désactiver des fonctionnalités Windows/ Décochez Hyper-V) ainsi que toute instance de docker pour éviter des conflits entre les deux entités.

Installation des ressources sur Windows (via powershell):

  • Virtual Box
  • Vagrant
  • Truffle
  • Pour que Vagrant puisse se lancer sur la VM, vérifier que Hyper-V soit désactivée (panneau de configuration/programme/Activer ou désactiver des fonctionnalités Windows/ Décochez Hyper-V) ainsi que toute instance de docker pour éviter des conflits entre les deux entités.
  • Remarque générale : ce tutoriel est plus adapté à Linux qu’à Windows, du fait de problèmes de configuration très fréquents rencontrées avec Virtual Box et Vagrant sur Windows. Si vous arrivez à lancer votre machine virtuelle, tant mieux, vous pourrez suivre ce tutoriel sur Windows à travers le git bash ou le Windows powershell, sinon passez sur linux.

Tutoriel (démo Linux):

       Initialiser le réseau et les noeud :

  • Créez un répertoire de travail, quorum par exemple.
  • Effectuez les commandes suivantes :
git clone https://github.com/jpmorganchase/quorum-examples
cd quorum-examples
vagrant up
vagrant ssh

Vous avez lancé le wrapper sur votre machine virtuelle et êtes connecté(e) en ssh, vos commandes sont réussies si votre ligne de commande commence par ubuntu@ubuntu-xenial:~$

cd quorum-examples/7nodes/

Notre client est prêt, maintenant nous pouvons créer nos nœuds de simulation pour ensuite les activer sur le réseau.

./raft-init.sh
./raft-start.sh

Connecter Truffle à Quorum :

  • Ouvrez un second terminal en laissant le premier ouvert
  • Créez un nouveau répertoire de travail, ici truffle
mkdir truffle
  • Initialiser un projet truffle vide
truffle init

Nous allons maintenant connecter notre projet truffle au réseau Quorum. Pour cela modifiez le fichier truffle.js que vous venez de créer pour y éditer nos nœuds fraîchement créés.

module.exports = {
   networks: {
      development: {
      host: "127.0.0.1",
      port: 22000
      network_id: "*"
      gasPrice: 0,
      gas: 450000
      }
   }
};

Vous avez désormais accès aux 7 nœuds que nous avons créés, du port 22000 (nœud 1) au port 22006 (nœud 7) en localhost.

Déploiement de smart-contracts dans Quorum :

Créez un fichier StockageSimple.sol, fichier solidity qui représente notre smart-contract dans Quorum

  • Compiler le projet et vérifier que tout est ok
truffle compile

créez un fichier deploiement_stockagesimple.js dans le dossier migrations/

Le mot clé « privateFor » à la ligne 5 indique que la transaction que nous effectuerons (dans StockageSimple ici) sera privée et associée uniquement au compte spécifié : seul lui pourra voir la transaction.

  • Déploiement du contrat
truffle migrate
  • Le contrat est déployé, nous pouvons effectuer nos premières transactions. Editons notre réseau
  • Modifiez le fichier truffle.js et ajoutez-y le contenu ci-dessous, spécifiant une connexion à deux nouveaux nœuds du réseau : le nœud 4 et 7
  • Lancez la console truffle pour interagir avec votre contrat déployé
truffle console
  • Appelez maintenant une instance de de notre contrat StockageSimple via la commande suivante :
deployed().then(function(instance) { return instance.get(); });

Vous devriez observer la ligne suivante :
{ [String: ’42’] s: 1, e: 1, c: [ 42 ] }
Avec la valeur 42 que nous avons spécifiée dans notre fichier de déploiement

Accès à notre contrat via le nœud 4

  • Quittez la console actuelle de déploiement (Ctrl +C) et lancez une nouvelle console pour accéder au nœud 4
truffle console --network nodefour
  • Appelez à nouveau l’instance du contrat via la même commande que précédemment :
deployed().then(function(instance) { return instance.get(); });

Vous devriez observer la ligne suivante :
{ [String: ‘0’] s: 1, e: 1, c: [ 0 ] }
Nous obtenons un 0 à la place, cela vient du fait que le nœud « nodefour » n’était pas autorisé à lire la transaction. Il obtient donc un 0 par défaut.
Les données sont ainsi cryptées pour les nœuds non autorisés et illisibles.

 Conclusion :

Nous venons de voir un exemple d’utilisation de Quorum, qui ressemble énormément au tutoriel de truffle avec Ethereum, sauf qu’ici nous soulignons le côté privée des transactions, chose qu’Ethereum ne pouvait faire et qui est essentielle pour l’industrie et le secteur financier.

Quorum se veut surtout comme le plus grand challenger d’HyperLedger, l’autre solution BlockChain privée développée par la fondation Linux et IBM. Quorum est très proche d’Ethereum et facile à prendre en main, mais possèdent nettement moins de fonctionnalités qu’HyperLedger notamment en termes d’autorisations et de canaux de transactions. J.P Morgan désire cependant développer son bébé en interne et espère d’ici les prochaines années améliorer son système pour qu’il devienne une référence, car pour le moment il ne se différencie guère d’une base de données privée classique.


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Constuire des DAPPS avec Ethereum Quorum

par Emmanuel Marchal Francis temps de lecture : 4 min
0