Le développement Blockchain, par où commencer ?
   11 min. de lecture    Jonathan Serra

La cryptomonnaie, la technologie Blockchain, ça fait beaucoup parler. Plus rarement pour l’innovation technique que la technologie apporte que pour son actualité sur les marchés. Les deux aspects ne sont pas inintéressants, d’ailleurs l’intérêt financier pour la technologie permet aussi de susciter un vif intérêt pour la faire évoluer. Et la technologie Blockchain évolue vite.
C’est aujourd’hui une manne financière qui s’auto-finance. Avec toujours une demande d’innovation croissante allant de la DeFi (Decentralized Finance) aux NFTs (jetons non fongibles) qui ont maintenant le vent en poupe.
Vous avez un intérêt pour la technique, alors c’est le moment le plus opportun pour se lancer. Nous allons voir dans cet article tous les éléments importants pour s’initier au développement Blockchain. C’est parti ?
Afin de faciliter la lecture je vais utiliser le terme “Blockchain” pour évoquer toute l’innovation autour de la technologie Blockchain.

L’intérêt de l’innovation Blockchain

Il y a encore quelques années, et ça semble être un poncif de plus en plus suranné, nous parlions souvent de “Blockchain Bullshit”. Cette formulation peu racoleuse et à charge émergeait beaucoup avec l’arrivée de Ethereum dans l’écosystème en 2015.
Ethereum, l’enfant spirituel de Bitcoin et des projets connexes comme Colored Coins (parmi les premiers jets du NFT).

Aujourd’hui, les galimatias des gardiens du temple sont moins audibles. De manière concrète la Blockchain propose des approches nouvelles voire diruptives si on s’intéresse de près à la DeFi par exemple. Selon moi, la disruption était déjà là avec Bitcoin, j’aime parler d’une boîte de Pandore savamment ouverte.

La disruption, concept fort usité pour évoquer le néant parfois mais aussi pour soulever l’impact fondamental d’une innovation. Si la Blockchain a bien disrupté un domaine, on pourrait l’appeler “des contrats et de la confiance”.

Vaste monde qui comporte une multitude de cases comme les interactions entre agents économiques, ou la juridiction et la loi. Concrètement, l’innovation Blockchain apporte un moyen de créer la confiance autour de contrats.

Cela semble bien peu ludique, ça manque de fun ! Mais rassurez-vous, on touche à des couches si profondes que les applications sont encore à découvrir ou à approfondir : allant de la création d’un circuit économique entre le monde réel et un jeux vidéo à la collection de cartes, à titre d’idées.

Du Web à la Blockchain, le frontend

Entrons maintenant dans ce qui nous intéresse, la technique.

Et pour commencer, rien de mieux qu’introduire la partie la plus évidente et la plus accessible.
Lorsqu’on parle de développement Blockchain vous allez - quasiment - toujours retrouver une partie visible de l’iceberg : le frontend.

Par exemple il va s’agir de faire une interface pour un portefeuille, ou une page pour suivre des transactions. Ou encore mieux, une page pour réaliser des contrats !

Toutes ces couches sont largement développées avec les langages Web (JavaScript / TypeScript / Dart, HTML, CSS).
Même pour faire des applications de bureau ou mobile : Electron pour l’application bureau, React Native ou Flutter pour de l’application mobile.

Web3JS, un premier pas

Web3JS, doux nom… Vous connaissez le Web 2.0, c’est celui que vous utilisez tous les jours, c’est le Web dynamique avec des sites comme Amazon ou Backmarket pour faire des achats. La Blockchain apporte le Web 3.0, bon c’est juste du babélisme technico-commercial. L’Internet de la valeur,
ça a plus de caractère.

Je vous parle de Web3JS, c’est une solution pour JavaScript (et adaptée à d’autres langages).
Cette dernière a l’intérêt d’être largement documentée et usitée.
Si vous ne savez pas par quoi commencer, Web3JS est votre go to.

Web3JS est labélisée comme la solution pour les APIs Ethereum. Dans les faits cette librairie peut aller bien au-delà de Ethereum. C’est ce qui va vous permettre de créer le lien entre ce qui se passe dans une blockchain et l’affichage sur un site ou une application.

Voilà à quoi ressemble du code avec Web3JS :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Connecte Web3 avec un provider par défaut.
// Un provider est un logiciel qui permet de faire l'interfaçage entre le Web3 et
// le réseau Blockchain (mainnet, testnet, autre...).
// En général le "givenProvider" sera Metamask. Metamask est une extension installée
// sur le navigateur de l'utilisateur qui joue le rôle à la fois de portefeuille
// et de gestionnaire de providers
let web3 = new Web3(Web3.givenProvider);

// Exemple de création et d'envoi d'une transaction
web3.eth.sendTransaction({
    from: '0xDD135B5D7AC09183C3A975e989a57D65f6c8B54B', // Adresse vers laquelle envoyer des jetons
    value: Web3.utils.toWei(1), // Transforme la valeur 1 en unité Wei
  })
  .once('sending', function(payload){
    /* La transaction est en cours d'envoi */
  })
  .once('sent', function(payload){
    /* La transaction a été envoyée au provider */
  })
  .once('transactionHash', function(hash){
    /* Le provider a reçu la transaction et a renvoyé son identifiant */
  })
  .once('receipt', function(receipt){
    /* Reçu de la transaction, cela signifie qu'elle est considérée par le réseau en but de la publier dans la blockchain */ 
  })
  .on('confirmation', function(confNumber, receipt, latestBlockHash){
    /**
    La transaction est maintenant inscrite dans la blockchain.
    La confirmation est déclenchée pour chaque nouveau bloc publié après le bloc
    comportant cette transaction
    **/
  })
  .on('error', function(error){
    /* Oops, y'a eu une erreur */
  })
  .then(function(receipt){
    /* La transaction est maintenant inscrite dans la blockchain */
  });

Binance Smart Chain (BSC) est un réseau lancé par la fameuse
plateforme Binance. Ce dernier étant repris de Ethereum peut fonctionner avec Web3JS.

Web3 de manière générale est une librairie qui permet de faire le dialogue entre une blockchain
et une application, qu’elle soit un client ou un serveur.

Par où commencer ?

Si vous n’avez aucune notion du développement Web, alors commencez par là ! Vouloir directement faire du développement Blockchain en frontend va créer une confusion qui vous ralentira.

Une excellente ressource française sont les cours gratuits de OpenClassroom.

Pour s’initier concrètement lancez-vous sur un projet faisant usage de la Blockchain, par exemple une page qui permet de faire des transactions. Pour faire cela vous n’aurez pas besoin de faire autre chose que du développement frontend. Web3JS et Metamask seront vos outils principaux.

L’arrière scène de la Blockchain, le backend

Initialement, l’innovation Blockchain arrivée avec Bitcoin est un projet majoritairement backend. Le gros du travail sur Bitcoin est son protocole pair-à-pair. La petite partie frontend est le portefeuille Bitcoin Core développé en C++ avec Qt (Bitcoin Qt était son nom encore en 2013).

Ethereum est aussi un projet où la composante dominante est le protocole et sa machine virtuelle (EVM). Ethereum a cependant apporté un nouveau pan qui peinait à émerger avec Bitcoin pour des raisons techniques.

La partie backend dans le développement Blockchain touche à plusieurs couches fondamentalement différentes.

Choix 1 : Le développement de protocole

On va s’astreindre de reprendre la définition même de “protocole”. C’est plus intéressant de se borner à ce qu’est un protocole autour de la technologie Blockchain.

Développer un protocole revient à développer sa Blockchain. C’est l’acte de définir des règles de comportements dans un réseau décentralisé. C’est la partie la moins évidente, pour cause faire un protocole demande une ingénierie poussée. C’est un long travail de conception.

C’est un domaine d’expertise qui a relativement peu de demande, développer son propre protocole demande un investissement conséquent pour un gain modéré. D’autres approches sont souvent plus abordables. Elles sont évoquées plus bas.

Par où commencer ?

Pour s’initier à cette partie il est primordial d’avoir une bonne expérience sur un langage compilé comme Rust, C++ ou Golang, pas de chapelle ce n’est qu’une liste non exhaustive.
Il est possible de faire un protocole Blockchain avec un langage interprété comme JavaScript et le soft NodeJS. Lisk l’ont fait par exemple.

Vous pouvez aussi reprendre la source d’un protocole déjà développé, changer quelques règles dans le code source, et le publier. On parle à ce moment de fork. C’est ce que BCH ont fait avec Bitcoin Core, ou Dogecoin avec Litecoin qui lui est un fork de Bitcoin Core, ou Binance Smart Chain avec Ethereum.

Choix 2 : Le développement de contrats intelligents

Là on commence à entrer dans ce qui est fortement demandé dans le marché des compétences en développement Blockchain.

Je vous évoquais plus tôt que là où la technologie Blockchain est disruptive, c’est autour des contrats et de la confiance entre agents économiques. Eh bien… L’innovation Blockchain va avec les contrats intelligents.

Simplement dit, le contrat intelligent est un programme dont l’exécution est connue et autonome. Elle est Connue car c’est un programme dont le code source est accessible à quiconque.

Imaginez deux acteurs dans une opération immobilière. Le cessionnaire Tom, et l’acquéreuse Adèle. Les deux associent leur échange à un contrat intelligent. À la signature par les deux acteurs, le contrat exécute une passation de la propriété à Adèle et un envoi des fonds à Tom est automatiquement exécuté. Sans ces deux signatures, rien ne se passe. On pourrait étendre avec
une histoire de délai avant mise à terme, etc. Vous avez saisi l’idée.

Les possibilités d’un contrat intelligent sont indénombrables puisque c’est un programme que vous développez. En général, n’importe quel secteur impliquant plusieurs acteurs qui ont besoin de confiance pourraient trouver un intérêt dans le contrat intelligent.

Côté développement il existe tout un univers mais une solution se dégage largement aujourd’hui. C’est Ethereum avec son langage Solidity.

Solidity est un langage qui permet simplement de développer des contrats intelligents. C’est un langage typé qui reprend des principes de la programmation orientée objet comme Java.

Par où commencer ?

Vous pouvez dès maintenant vous amuser à faire des contrats intelligent avec l’éditeur Web Remix. Cela peut être déroutant au premier abord, en s’appuyant avec la documentation Remix et Solidity vous pouvez commencer à découvrir.

Un éminent livre complet a été écrit par l’inénarrable Andreas M. Antonopoulos avec Gavin Wood : Mastering Ethereum.
Ce livre est en prix libre mais sa version française n’est pas trouvable sur le Web. C’est un contenu parfait pour cerner les tenants et les aboutissants d’Ethereum, néanmoins il manque en pragmatisme pour gagner en compétences rapidement.

Choix 3 : Le développement de services connectés à un réseau Blockchain

C’est l’un des moins évoqués pourtant la demande pour ce genre de compétences est aussi importante que le développement de contrats. Ce genre de développement est plus proche des solutions classiques comme faire une API pour un service.

Dans un réseau Blockchain beaucoup d’informations circulent, elles sont toutes publiques par définition, si on se tient à une Blockchain publique.

Des services peuvent avoir un besoin d’exploiter ces informations dans leur infrastructure. Par exemple, le cas typique sont les places de marché dans la cryptomonnaie. Ces dernières gèrent des flux de transactions sur différentes cryptomonnaies. Pour chaque, le serveur de ces places de marché ont un service qui consulte les informations sur les différentes
blockchains.

Cette partie est souvent associée au développement de contrats intelligents. Dans la grande majorité des cas, après le développement d’un contrat intelligent, on souhaite tracer dans un serveur certaines informations pour avoir un suivi. Par exemple, il est possible de déclencher une action en temps réel lorsqu’une transaction est exécutée dans le réseau Blockchain avec WebSocket.

Je vous évoquais que Web3JS possède des librairies aussi pour d’autres langages dans le but lire des informations sur Ethereum.

Je vous montre un exemple de code commenté sur Golang avec go-web3 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package main

import (
    "fmt"
    "github.com/umbracle/go-web3/wallet"
    web3 "github.com/umbracle/go-web3"
    "github.com/umbracle/go-web3/jsonrpc"
    "math/big"
)

func main() {
    // Connexion à un réseau blockchain local
    // Ici localhost:7545 est un provider JSONRPC
    client, err := jsonrpc.NewClient("http://localhost:7545")
    if err != nil {
      panic(err)
    }

    // On génère un nouveau portefeuille, la clé est une clé privée
    key, _ := wallet.GenerateKey()

    to := web3.Address{0x1}
    transferVal := web3.Ether(1)

    // Envoi de 1 Ether vers l'adresse 0x1
    txn := &web3.Transaction{
      To:    &to,
      Value: transferVal,
      Gas:   100000,
    }

    // Signature de la transaction
    signer := wallet.NewEIP155Signer(chainID)
    txn, _ = signer.SignTx(txn, key)

    // Envoi de la transaction
    data := txn.MarshalRLP()
    hash, _ := c.Eth().SendRawTransaction(data)
}

Par où commencer ?

Le plus simple est de lancer votre projet et exploiter Ethereum qui a un nombre conséquent de librairies. Web3 est sûrement disponible pour votre langage favoris.

Commencez par lancer votre Blockchain Ethereum locale avec Geth ou Ganache. Avec cette dernière, vous serez capable de faire une API qui récupère les informations.

Par exemple, vous pouvez faire un service qui se connecte à votre Blockchain locale puis qui réagit à chaque transaction via le WebSocket.

Conclusion

Vous aurez compris, j’axe l’article vers le plus pratique et le plus probant dans la quête de travailler dans ce domaine et créer de la valeur.

En plus de développer des compétences pour réaliser vos projets Blockchain, un tel bagage ouvre des portes à des métiers divers. Cela peut passer par de l’encadrement de projets pour des entreprises nécessitant d’une expertise à de l’audit de projets Blockchain.

On pourrait faire le tour de l’écosystème, évoquer plus en profondeur les projets tout autant intéressants comme Bitcoin, Cardano ou Algorand. Le bestiaire est incommensurable et c’est preuve de bonne santé, la vie grouille.

Ethereum est donc aujourd’hui l’écosystème le plus complet avec un historique fort. On compte parmi les grands tournants : les ICO avec ERC20, CryptoKitties et les NFT, ou encore la DeFi avec Uniswap.