Coder des Smart Contracts Solidity sur votre propre machine

Coder des Smart Contracts Solidity sur votre propre machine

Alexandre P. dans Dev - Le 25-03-2024

Privacy matters ! J'aime beaucoup héberger mes propres solutions, et développer sur ma machine plutôt que sur des plateformes en ligne. Je vais vous expliquer comment programmer sur une blockchain Ethereum de test depuis votre propre machine.

J'ai toujours aimé coder sur ma machine, faire les tests que je veux, où je veux et quand je veux.

Pour vous dire, lorsque j'ai suivi le programme de formation Temporal , ils proposaient de faire un cours en ligne avec une instance de test en ligne. J'ai detesté l'idée et je suis allé déployer ma propre instance avant de commencer le cours.

Aujourd'hui je vous propose la même approche si vous commencez à coder vos Smart Contracts en Solidity.

Pour ceux à qui ça ne parle pas: Solidity est un langage de programmation compilé qui sort un bytecode (le fameux contrat) qui ira sur la blockchain Ethereum. Et oui, les smart contracts sont plus que de la crypto monnaie sur une chaîne, c'est aussi un code qui tourne sur une chain. Cela permet de nombreux avantage, comme le fait de bénéficier de la blockchain, pouvoir voir ce qui s'est passé au fil du temps, rendre impossible l'altération ou l'annulation à tout va de ce qui a été fait, etc...

La blockchain Ethereum ayant été conçu pour tenir compte de l'impact sur l'environnement, il faut savoir que la lecture depuis un smart contract (étant donné que le code est propagé, il pourra être lu depuis plusieurs noeuds de cette chaîne, c'est une opération dérisoire donc gratuite en terme d'impact environnemental). En revanche, pour toute opération d'écriture, il faudra propager l'écriture sur les autres noeuds, et cela engendrera un paiement de gas fee (une sorte de taxe écologique pour avoir écrit). De la même manière déployer votre smart contract déclenche un gas fee, et plus ce dernier est lourd (en poids bytecode), plus le gas fee est élevé.

Voici pour la partie concept et théorie. Maintenant si l'on veut commencer à coder...

On utlise le langage Solidity pour coder des smart contracts sur la blockchain Ethereum et pour coder du Solidity il y a un IDE en ligne très utilisé qui s'appelle Remix.

Quasiment tout le monde, si ce n'est tout le monde utilise Remix afin de "ne pas se casser la tête" avec la mise en place des comptes de tests, avec les wallets Ethereum virtuels etc...

L'IDE se présente comme ceci :

remix ide.jpg

Et vous permet de manager de façon simple, des fichiers (extension .sol) qui seront le code source de votre Smart Contract.

Maintenant, on est d'accord que si vous voulez faire un Smart Contract, un tant soit peu ambitieux, ça deviendra vite compliqué. Vous n'allez pas copier-coller le contenu de vos fichiers sur l'IDE en ligne à chaque fois que vous allez reprendre vos sessions de code.

Il y a un outil qui vous permet de gérer partiellement le problème: remixd (j'imagne comme remix daemon).

Vous pourrez stocker et organiser vos fichiers chez vous, les versionner, comme vous le ferez pour n'importe quel projet. Et depuis ce code source hébergé chez vous, en passant par ce fameux outil, vous pourrez ouvrir un port sur votre machine pour permettre au site de Remix IDE de se connecter sur votre arborescence et accéder à vos fichiers.

En d'autres termes, c'est un tunnel (ou selon mes termes, une back door 😂). Mais pas de panique, nous allons le tweaker un peu.

Installation de Remixd en local

Commençons par l'installer:

npm install @remix-project/remixd -g

Créez votre repository, et vous pouvez démarrer l'écriture de vos scripts Solidity. En temps normal, pour travailler sur Remix IDE en ligne, on utilise la commande qui suit:

remixd -s ./src -u https://remix.ethereum.org

Mais nous allons essayer de travailler totalement en local, y compris pour la partie Remix IDE.

Déploiement d'un serveur Remix avec Docker

Pour cela nous allons utiliser Docker et déployer une instance Remix depuis un container.

docker pull remixproject/remix-ide:latest
docker run -p 8080:80 remixproject/remix-ide:latest

Maintenant que Remix IDE tourne en local, on peut faire pointer notre Remix Daemon sur cette instance:

remixd -s ./src -u http://localhost:8080

Je me suis créé un repository comme ceci:

solidity-dev.png

Déploiement d'un premier smart contract en local

Et maintenant, rendez vous sur votre navigateur : http://localhost:8080

Il suffit de dérouler le dropdown pour sélectionner localhost, cliquez sur "connect" sur la modal:

solidity.gif

Il nous faut alors, compiler notre Smart Contract pour générer le bytecode:

solidity-compile.png

Puis nous allons déployer le contract, rendez-vous dans le menu Deploy & Run transactions (sur la gauche).

Vous observerez que vous disposez de plusieurs wallets de test avec 100 Ether chacun.

Cliquez sur Deploy et c'est parti !

solidity-deploy.png

Observez que le nombre d'Ether sur votre account a été décrémenté par le déploiement du contract !

Maintenant nous pouvons manipuler notre smart contract:

solidity-contract.gif

Evidemment à chaque fois que vous incrémentez votre compteur, vous payez quelques gas fees.

Voilà, et tout ça depuis votre machine, génial non ? 🤓

#smartcontract#solidity#docker#ethereum

user picture
Alexandre P.

Développeur passionné depuis plus de 20 ans, j'ai une appétence particulière pour les défis techniques et changer de technologie ne me fait pas froid aux yeux.