Des étapes sont indispensables pour l’implémentation d’un projet blockchain. Il s’agit de la sélection et de l’initialisation de la blockchain, du choix du bon protocole de consensus, de l’exécution de son premier « smart contract », du déboguage…
1 – Sélectionner sa plateforme
Le réseau de blockchain Ethereum fait l’unanimité. En raison du dynamisme et de la réactivité de sa communauté mais aussi de la richesse de sa documentation, l’environnement open source proposé par la fondation du même nom a été choisi par la quasi-totalité des entreprises engagées dans des projets de blockchain.
Les « environnements clients » pour Ethereum reposent sur les langages les plus courants comme C++ (Cpp-ethereum), Haskell (ethereumH), JavaScript (EthereumJS-lib) ou encore Python (Pyethapp). Il faut ajouter l’environnement client basé sur le langage Go (Go-ethereum ou Geth). Il s’agit du client le plus utilisé du monde Ethereum. Par défaut, il se connecte sur Homestead, le réseau principal de la plateforme. Il est possible d’installer Geth sur des environnement Linux, iOS, Android, macOS et Windows.
2 – Initialiser la blockchain
Pour initialiser la blockchain, il suffit d’en créer manuellement le premier bloc. Ce bloc doit contenir toutes les caractéristiques de la chaîne. Ils seront ensuite partagés à tous les nœuds (ou terminaisons) du réseau. Pour définir ce bloc, il faut créer un fichier au format JSON (JavaScript Object Notation). Plusieurs paramètres sont à renseigner : « nonce » (ou valeur aléatoire utilisée par le hash cryptographique), « Difficulty » (niveau d’exigence associé au traitement cryptographique), « timestamp » (temps de validation entre deux blocs successifs), etc. Une fois ce fichier JSON renseigné, il revient au client Geth de créer le dossier contenant la blockchain (chaindata) et de l’initialiser.
Pour assurer la propagation du programme, il sera nécessaire de disposer de cryptomonnaie
Le but est ainsi de répliquer les commandes autant de fois que votre réseau comporte de nœuds, ces derniers étant paramétrés en accord avec le tout premier. Pour qu’ils communiquent au sein de la blockchain, il faut dans un deuxième temps les relier entre eux. Pour que Geth se connecte à un nœud du réseau et coordonne l’ensemble, il doit récupérer son identifiant appelé enode sur Ethereum.
Pour assurer la propagation du programme de nœud en nœud sur Ethereum, il sera nécessaire de disposer de cryptomonnaie en Gas pour acquérir la puissance informatique nécessaire auprès des acteurs du réseau.
3 – Choisir le bon protocole de consensus
Le concept de preuve de travail (ou « proof-of-work »), qui permet de valider et sécuriser le contenu des blocs, prend tout son sens dans une blockchain publique en raison de la masse et de la concurrence entre les nœuds. En revanche, il n’a pas de raison d’être au sein d’une blockchain privée. On pourra s’orienter par exemple vers la preuve d’enjeux (proof-of-stake) ou la preuve d’autorité (proof-of-authority). Cette dernière se prêtant plus volontiers à un réseau privé. Cette notion de preuve d’autorité est récente. De même, le déploiement des scripts de paramétrage a été simplifié.
4 – Exécuter son premier « smart contract »
Monter une blockchain ne présente d’intérêt que si on peut faire tourner dessus un « smart contract ». C’est-à-dire un « contrat intelligent » qui s’auto-exécute à partir d’un seuil prédéfini qui peut être une date, un montant ou tout événement dûment authentifié. Sur le terrain des blockchains publiques, ce concept a fait le succès d’Ethereum.
Le langage de référence pour développer de telles applications sur Ethereum est Solidity.
Au-delà de connaissances en JavaScript, un tel projet impliquerait de disposer d’une compréhension globale de la blockchain, de sa philosophie et de ses contraintes.
5 – Déboguer et passer à l’échelle
Le débogage d’une blockchain semble avoir marqué les esprits de ceux qui l’on pratiqué. A la différence d’un programme exécuté par un ordinateur, un bloc est exécuté sur un ensemble de nœuds ou terminaisons réseau. Sachant que chacun doit aboutir à un traitement équivalent à ceux des autres. Le processus rend le débogage de l’application extrêmement complexe. Il se fait à tâtons sur le mode essai/erreur.
Contrairement à une application classique où une nouvelle version écrase la précédente, la moindre correction ou rajout d’une fonctionnalité au sein d’une chaîne de blocs est historisé à vie. Un smart contrat bogué reste stocké dans la blockchain. Pour régler le problème, il faudra en créer un nouveau puis attendre que la chaîne propage les changements. Enfin, s’agissant de plateformes open source, le code évolue constamment. Les mises à jour ont alors tendance à casser les smart contracts existants.
Pour toutes ces raisons, il est recommandé de faire auditer son smart contract par un expert. Une phase qui serait d’autant plus indispensable dans le cas d’un contrat déployé sur une blockchain publique pour des usages business ciblant des clients.
N.B: ces articles sont des extraits des publications du Dr. Adama TRAORE
Les anciens numéros du laboratoire du week-end :
– La technologie blockchain (définition et explication)
– La technologie blockchain (fonctionnement)
– La technologie blockchain (les différents types de blockchain)
– Les applications de la technologie blockchain
– Utilisation de la blockchain dans le secteur financier
– La sécurité renforcée et le nouveau web 3.0 avec la blockchain
– Les enjeux sociétaux, énergétiques, environnementaux, juridiques et fiscaux de la blockchain