Présentation de Ganache

1 février 2018

A l’heure où tout le monde parle de blockchain, peut-être vous êtes-vous intéressés à l’aspect technique du développement sur Ethereum. Et peut-être vous êtes-vous dits que c’était compliqué…​ Des technologies très nouvelles, peu de documentation à jour, peu d’outils à disposition…​

Mais ça, c’était avant ! Il y a au moins un outil qui sort du lot : Truffle. Framework de développement sur Ethereum créé par Consensys, il se présente tout simplement comme le couteau suisse Ethereum. Truffle permet de compiler du Solidity (le langage des smart contracts Ethereum), tester des smart contracts, les déployer, gérer différents environnements…​

Logo Ganache

Au travers du projet Talan Coin évoqué dans l’article que je lui ai dédié, nous avons été amenés à utiliser Truffle. Depuis le début du projet, Truffle a régulièrement été mis à jour, parfois de manière brutale…​ Mais une jolie nouveauté a vu le jour : Ganache. S’il vous reste un peu d’appétit après les truffes de Noël et la galette des rois, faites comme nous : goûtez à Ganache !

Ganache est open-source

La recette du successeur de TestRPC est simple : une fois téléchargé, il suffit d’installer ce petit outil, et vous voilà en possession d’une blockchain personnelle légère. Au lancement, une interface claire : 10 comptes créés et alimentés de 100 ETH pour faire vos premières transactions …​ et déployer vos smart contracts.

Aperçu de l'interface principale de Ganache
Aperçu de l'interface principale de Ganache

On accède en un clic à la liste des blocs déjà minés, mais aussi à la liste des transactions passées et les logs (similaires à ceux de TestRPC). Deux options quant au minage : automatique à chaque transaction, ou continu avec une durée de génération de bloc fixée pour se rapprocher des conditions réelles.

Accessible par défaut sur le port 7545 (paramétrable), il est évidemment possible de communiquer avec la blockchain en une requête cURL classique :

$ curl 127.0.0.1:7545 -X POST \
--data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{ "from": "0x627306090abaB3A6e1400e9345bC60c78a8BEf57", "to": "0xf17f52151EbEF6C7334FAD080c5704D77216b732", "gas": "0x76c0", "gasPrice": "0x9184e72a000","value": "0x9184e72a"}],"id":1}'

--:--:-- {"id":1,"jsonrpc":"2.0","result":"0x873cc520a53026128d021aa05d47b9e1b2bc7825d876a95ea68b7cb466fd06df"}

La clarté de l’interface, la capacité d’explorer les blocs un par un, et même les transactions qu’ils contiennent en font un outil parfait de test et de débug au cours du développement d’un smart contract, facilitant indéniablement le travail des aventuriers de la blockchain.

Le projet Truffle est régulièrement mis à jour, parfois de manière brutale et non rétrocompatible, il en sera peut-être ainsi pour Ganache…​ Il n’en reste pas moins que l’effort de clarté et d’UX au service du développeur en font un incontournable du milieu Ethereum, désormais recommandé au sein de Talan Labs.