Lorsque que l'on étudie la programmation dans le domaine des cryptomonnaies et de la blockchain, on ne pense pas souvent à Bitcoin. En effet même si c'est le premier pour sa capitalisation, c'est souvent Ethereum qui est cité. Ce dernier permet le développement de smart-contracts avec lesquels interagir sur sa plateforme, et son langage de programmation est très simple à étudier et a apprendre. Mais saviez-vous que l'on pouvait tout autant réaliser des programmes autour de Bitcoin ? Et que la programmation Bitcoin n'était pas seulement destinés aux chercheurs en cryptographie ? Nous allons voir tout ça ensemble dans cet article.

But you can no more understand blockchain by reading whitepapers or thinkpieces than you can learn to build a company by going to business school and watching PowerPoints.

You have to code.

Vouloir comprendre la blockchain en lisant des livres blancs, c'est exactement comme vouloir créer votre entreprise en allant dans une école de commerce et étudiant des PowerPoint.

Vous devez programmer.

Ken liu, préface de Programming Bitcoin.

 

La programmation Bitcoin, Késako ?

C'est vrai que c'est un domaine moins médiatisé que les applications décentralisées et le web 3.0, mais le protocole Bitcoin n'est pas une grande machine immuable, contrairement à son timestamp server. De nombreux ajouts et améliorations ont été effectués au fil des années.

S'il y a de la programmation Bitcoin, y a-t-il donc des développeurs Bitcoin ? Oui même si Bitcoin n'est pas une entreprise avec un pôle ressources humaines, de nombreux développeurs Bitcoin gravitent autour de ce dernier. Principalement autonomes et travaillant gratuitement au début de l'aventure Bitcoin, il existe désormais des société employant ce type de profils. Mais que développent-ils ?

 

Bitcoin Core

Tout d'abord Bitcoin Core, développé originalement par Satoshi Nakamoto, Gavin Andresen et Wladimir van der Laan est le client de référence pour le réseau Bitcoin. Open-source et très largement utilisé par la communauté, il doit continuellement être maintenu. Sur le principe, tout le monde peut participer à l'amélioration de Bitcoin Core, en proposant son travail sur le Github de ce dernier. En revanche, seules les propositions pertinentes et parfaitement fonctionnelles sont acceptées. Il vous faudra donc en plus de votre code fournir une documentation claire et de nombreux tests.

 

L'écosystème Bitcoin

Il y a également tous les wallets Bitcoins, qui permettent aux utilisateurs finaux de se simplifier la vie lors de l'utilisation de Bitcoin. Outre les différents clients de noeuds Bitcoin qui existent, de plus en plus d'applications mobiles permettent d'interagir avec le réseau Bitcoin, apportant ce dernier à la masse d'utilisateurs possédant un smartphone. D'autres développeurs choisissent de tirer parti de l'horloge Bitcoin pour déployer sur le réseau d'autres informations que des transactions. Cela permet par exemple de rendre immuable des documents importants, tels que des diplômes. Également, des projets comme RSK smarter Bitcoin permettent de déployer des sortes de smart-contracts sur le réseau Bitcoin.

 

Le Lightning Network

Avec le développement du réseau Lightning, encore en phase de test, de nombreux clients et wallets apparaissent dans l'écosystème. Avec l'objectif de simplifier l'utilisation de Bitcoin sans tomber dans la centralisation, le rôle des développeurs Bitcoin est très important. Permettre la création de non-custodials wallets en quelques clics, la sauvegarde de la clé privée et la réalisation de transactions sans notions d'adresses sont les problématiques UX de ces derniers.

 

Les différents langages et outils utilisés

Originalement, Bitcoin Core a été développé par Satoshi Nakamoto dans le langage de programmation C++ et ce choix a été fait pour différentes bonnes raisons. Entre la sécurité, les performances et le fait que l'on puisse déterminer les résultats d'opérations effectués, le C++ apporte beaucoup d'avantages à d'autres langages logiciels. Mais désormais ce n'est pas le seul langage de programmation utilisé par la communauté Bitcoin. En voici un tour d'horizon.

 

C++

Le C++ est un langage de programmation orienté objet. Reprenant beaucoup du fonctionnement du langage C apprécié par son efficacité, il apporte une dimension modulaire à ce dernier. Très robuste par sa conception et son ancienneté en tant que langage de programmation, il offre également de nombreuses fonctionnalités avancées pour le développement Bitcoin, dont le multi-threading par exemple.

 

Bitcoin Script

Bitcoin Script est comme son nom l'indique un système de script pour Bitcoin. Dédié aux transactions, il reste volontairement très simple et n'est pas Turing-complet. C'est simplement une liste d'instructions qui gère les transactions par le biais des clés publiques et signatures des utilisateurs.

 

Python

Python est devenu l'un des langages de programmation les plus utilisés dans la communauté Bitcoin. En effet de par sa simplicité par rapport au C++ et les nombreuses bibliothèques qui existent, il semble plus intéressant pour les développeurs Bitcoin qui ne travaillent pas sur des clients Bitcoin.

 

Les différentes bibliothèques Bitcoin

De nombreuses bibliothèques permettent de développer et d'interagir avec le réseau Bitcoin. Principalement utilisées pour mettre en place des wallets ou gestionnaires de transactions, elle permettent de réaliser des applications Bitcoin sur d'autres plateformes. Vous retrouverez par exemple une bibliothèque JavaScript ou NodeJS pour des applications web. Mais également des langages plus adaptés à la programmation de logiciels tels que Rust ou Python.

 

Les outils et ressources pour débuter

Vous souhaitez désormais vous lancer dans l'aventure du développement Bitcoin ? C'est un très bon moyen de découvrir le fonctionnement technique de ce dernier. Les ressources à ce sujet restent étonnamment rares, mais sont très intéressantes. Je vous ai préparé une petite liste qui va suivre.

 

Mastering Bitcoin

Ce livre, écrit par Andreas Antonopoulos que l'on ne présente plus, est un excellent point d'entrée pour le développement Bitcoin. Il permet de comprendre ou de reprendre le fonctionnement de Bitcoin et des cas d'utilisations très intéressant. Ces explications en apparence simples sont ponctuées de détails techniques pour les plus avancés. Enfin certains passages sont complètement destinés aux techniciens souhaitant aller plus loin dans la machinerie Bitcoin et de travailler dessus.

 

Programming Bitcoin

Ce livre est également une très bonne ressource technique sur Bitcoin. Écrit par un des piliers de la communauté Bitcoin, il explique le fonctionnement de Bitcoin à un niveau fondamental. Dédié aux développeurs qui souhaitent voir par la pratique comment Bitcoin fonctionne, il remplirait très bien son rôle de guide.

Attention cependant il faut tout d'abord savoir programmer pour être à l'aise dans la lecture de ce livre et la mise en place des travaux pratiques. L'auteur vous conseille l'apprentissage du langage de programmation Python 3. Pas besoin d'être un expert ou de maîtriser des bibliothèques avancées, mais une connaissances des concepts de base permettra d'être plus à l'aise.

 

Hellobitcoin

Apprendre par la pratique est très intéressant, mais il ne faut pas non plus rester bloqué sur un exercice plus longtemps que nécessaire. Hellobitcoin est un regroupement de petits programmes effectuant de petites fonctionnalités. Par exemple la génération d'un wallet, la mise en place d'une transaction. Reproduire les trois programmes est un très bon exercice pour découvrir Bitcoin. Le projet est initialement en go, mais vous pouvez vous en inspirer pour le reproduire dans le langage de votre choix.

 

Buildbootcamp

Si votre projet d'apprentissage du développement Bitcoin est professionnel ou que vous avez un budget alloué à ce dernier, les formations peuvent être une option intéressante. Buildbootcamp est une formation en ligne proposé par Justin Moon. Le contenus de la formation va de l'implémentation d'un clone de Bitcoin, fonctionnalité après fonctionnalité à la création de votre propre hardware wallet. Enfin vous serez invité et accompagné dans la réalisation de votre propre projet personnel, ou dans la contribution à un projet open-source Bitcoin.

 

La communauté Bitcoin

Si les bitcoineurs peuvent être agressifs sur les réseaux sociaux quand l'on souhaite discuter du dernier altcoin, ils seront ravis de vous aider dans votre apprentissage de Bitcoin. En plus des ressources citées ci-dessus, n'hésitez pas à contacter les auteurs ce ces dernières si vous avez des interrogations. Vous pouvez également vous rendre sur différents dépôts GitHub de la communauté et demander conseil par le biais d'issues. Enfin d'autres canaux de discussions existent, tels que le Reddit dédié à la programmation Bitcoin ou encore le StackOverflow.

Mais il ne s'agit que des points les plus reconnus par la communauté. Vous pouvez retrouver une liste plus fournie en ressources diverses disponible sur GitHub. Je n'ai en effet pas parlé des différents articles disponibles sur Medium, et d'autres ressources plus spécifiques en fonction de vos besoins, ni des documentations des outils que vous utiliserez, dont la lecture est indispensable pour les utiliser de manière optimale.

Voilà pour cette rapide présentation du monde obscur de la programmation Bitcoin. J'espère que cela vous a donner envie de vous y intéresser de plus près, même si votre profil n'est pas technique. De nombreux retours de personnes ayant découvert la programmation par le biais de Bitcoin sont retrouvables sur les réseaux sociaux, vous n'avez aucune excuse !

A propos de l'auteur : Guillaume Chanut

twitter-soothsayerdatatwitter-soothsayerdata

Passionné par les crypto-monnaies, j’ai rapidement appris à développer des outils dans le domaine des technologies blockchain. J’aime partager mes connaissances sur le sujet et je participe activement au rayonnement des aspects techniques de la blockchain au sein de la communauté crypto. Je suis principalement intéressé par Ethereum et par son code Solidity.
Tous les articles de Guillaume Chanut.

guest
0 Commentaires
Inline Feedbacks
View all comments