Sommaire
Eh ! Bonjour 😁
Comment ça va vous ?
Une fois, n’est pas coutume cette semaine nous allons parler de Blockchain, mais cette fois d’un point de vue plus dev que les autres fois.
Saviez-vous qu’il est possible de développer sur la blockchain ?
On va discuter un peu de ça.
À l’heure ou j’écris ces lignes, il y a des points de centralisation dans ces applications, en fait c’est relativement simple de comprendre « pourquoi ? », ces dApp tourne dans un navigateur hors un navigateur ne reconnaît que quelques protocoles comme
Le point commun de ces protocoles c’est qu’ils sont par nature “client / serveur” donc, centralisés. Aujourd’hui un navigateur ne peut pas “seul” aller communiquer avec la blockchain.
Édit : Ici je ne souhaite pas dire que Ledger Live est une dApp mais que pour certaines de ses fonctions, cette application de bureau se connecte directement a la blockchain, sans passer par une API tierce (et donc le serveur d'un tiers, qui peut s’il le souhaite couper l'accès).
Eh bien, aujourd’hui il y a déjà des applications complètement décentralisées, là tout de suite en tête j’ai l’application Ledger Live (desktop) qui me vient, cette application permet de gérer les portefeuilles de sa clef ledger depuis son ordinateur (Windows / macOS / Linux).
Celle-ci utilise “Electron”, le framework développé par Github pour créer des app “desktop” avec des technologies Web et je pense que l’on verra de plus en plus d'applications comme ça dans le futur.
En fait, quand vous réalisez une transaction sur Ledger Live, vous la signez avec votre Hardware Wallet, Ledger live va ensuite directement se connecter à un nœud du réseau (Bitcoin, par exemple) pour envoyer cette transaction.
Cette technique-là ne peut, pour le moment, pas se faire dans un navigateur.
Une autre méthode à l'utilisation d'électron pourrait être que : chaque nœud du réseau expose une API accessible en HTTP(s) et que l’application client (dans le navigateur) ait une liste embarquée de toutes les adresses et se connecte aléatoirement à l'une ou l’autre, sur le réseau.
Après dans ce scénario il reste encore un point de centralisation, le nom de domaine et le serveur qui héberge l’app (qui, pour le serveur est du contenu statique puisque c’est le code JavaScript qui fait tout).
Le smart contrat, c’est la base des dApp. En fait c’est ni plus ni moins que du code, mais au lieu de le déployer sur votre serveur, vous le déployez sur la blockchain cible (Ethereum, Terra, BNB, Elrond … etc). Ce petit bout de code va être répliqué sur tous les nœuds du réseau puisqu’il fait maintenant partie de la blockchain, il est lié à une adresse (oui, le même type d’adresse que votre portefeuille perso 😛).
Si vous voulez voir à quoi peut bien ressembler un smart contrat ? Pour le savoir, cliquez ici
Ce code est le smart contrat de l'USDT, alors en fait il est compilé dans la blockchain, ici le code source a été soumis à des fins de vérification, ce code source est écrit avec le langage de programmation Solidity, c’est celui utilisé par Ethereum, pour le reste de l’article nous allons nous pencher à ma blockchain de cœur, Elrond.
Voici une petite liste non exhaustive de ce que permet de faire un smart contrat :
Vôtre dApp va se constituer de plusieurs choses :
Ici, vous avez surement compris le point de centralisation, il suffit que le serveur api.elrond.com soit hors ligne ou encore que l’enregistrement DNS n’existe plus. Et, vôtre dApp sera hors ligne, la bonne nouvelle c’est que c’est uniquement la connexion entre l’interface et le back qui est interrompu, les données de vos utilisateurs, elles, sont toujours bien dans la blockchain et bien décentralisé.
Pour écrire votre smart contrat sur Elrond, il va falloir vous familiariser avec le langage Rust, pas d'inquiétude, si vous êtes dev, vous vous habituez très vite, la documentation de Rust est disponible ici
Comme toute plateforme, Elrond dispose d’un SDK, en fait ils ont fait les choses bien, il y a un plugin « Visual studio code », pour vous créer un IDE de smart contrat Elrond en quelques minutes, la vidéo de présentation est ici
Je vous conseille néanmoins d’utiliser Linux ou macOS, toutes les fonctions de « erdpy », ne fonctionne pas sous Windows (même avec WSL), « edpy » est la ligne de commande pour interagir avec Elrond, écrit en Python (dont le py, en fait 😛)
Voici un exemple de code de smart contrat, tiré de la doc d’Elrond, il fait juste un “ping pong”,
Ce smart contrat est très simple, l’utilisateur dépose de l’argent dessus, décide au bout de combien de temps il pourra récupérer son argent puis une fois cette période passée il peut “claim” son argent (les récupérer quoi)
Oui, je sais qu'au début le code du smart contrat fait peur, mais, regardez, il y a énormément de commentaires et une fois qu’on a le nez dedans ça devient plus simple.
Ce smart contrat, une fois compilée est envoyée à tous les nœuds du réseau, eh oui votre petit bout de code va être copié sur 3200 machines partout dans le monde … ce n’est pas beau ça ? 😛
Maintenant que nous avons un smart contrat voyons l’autre partie, l’interface utilisateur.
À ce moment là de l’article, vous galérez et vous dites « oui, mais il manque des infos là, non ? »
Oui en fait, je vous donnerai un lien à la fin si vous voulez vraiment développé cette dApp, pour le moment je vous explique les concepts de comment ça marche
Franchement ici, si vous êtes développeur front, il n’y a rien de spécial, vous faites de call API, via l’api d’Elrond… Ah s' il y a deux ou trois petits détails…
Il n’y a pas de « login / pass », comme on voit sur une application classique, pour s’authentifier un utilisateur utilise un wallet, soit « Maiar », soit une clef ledger … etc.
L’idée c’est que lors des transactions, l’utilisateur utilise sa clef privée pour la signer afin de la rendre valide, une transaction non signée à l’aide de la clef privée du compte est tout simplement ignorée et non valide…
Tiens ! On parle de clef privée, encore une occasion de parler de mon article sur les ransomware pour ceux qui ne l’ont pas lu.
Pour ça, pas d’inquiétude, il y a bien sûr un SDK JavaScript fourni par Elrond, pour vous montrer « à quoi ça ressemble » vous pouvez regarder le projet qui va avec le smart contrat ping-pong, ici
Pour l’heure; l’API est fourni par Elrond, celle-ci fait le passage entre votre application JavaScript et la blockchain.
Plus tard cette partie sera remplacée, je ne sais pas encore comment, mais perso je dirais que “chaque nœud du réseau expose une API”, mais je ne suis pas dev chez Elrond.
Du coup pour elle vous avez juste à lire la doc disponible ici
Cet article était une mise en bouche pour ceux qui veulent se mettre à écrire des applications décentralisées, vous voulez aller plus loin ?
Suivez le guide de démarrage Elrond, par ici (en anglais)
Quant à moi il ne me reste plus qu'à vous souhaiter une très bonne semaine 😁