Quand on veut développer une application décentralisée, on s’aperçoit qu'il existe toute une multitude de langages de programmation pour la concevoir.
Solidity est le langage qui ouvre le plus d’opportunités d’emploi pour des développeurs de tous niveaux, mais c’est loin d’être le seul langage avec lequel il est possible de travailler dans ce secteur.
Pour cette édition, nous ferons un tour d’horizon des langages de smart contracts utilisés dans cet écosystème, et on pourra constater que chaque langage a ses avantages et inconvénients, aussi bien dans le développement que dans les opportunités professionnelles.
Les langages les plus utilisés
Solidity
Solidity est le langage conçu pour créer et déployer des smart contracts sur le réseau Ethereum, ainsi que tous les réseaux compatibles avec la machine virtuelle d’Ethereum, que ce soit des blockchains d’infrastructure (BNB Chain, Polygon PoS…) que des Layer 2 (Arbitrum, Optimism, zkSync…)
Ce langage de programmation présente beaucoup de similarités avec les langages tels que Javascript ou encore C++, qui font tous les deux partie des 10 langages les plus utilisés dans le monde selon le Stack Overflow Developer Survey de 2023 :
Solidity a 3 avantages principaux sur l’ensemble des langages de smart contracts existants. Le premier avantage est que ce dernier regroupe le plus de développeurs actifs toutes blockchains confondues.
Le deuxième est que tout est fait pour aider les débutants :
- C’est le langage avec la syntaxe la plus facile
- La plupart des outils de développement sont conçus pour Solidity
- Il permet un accès simple aux attributs orientés objet dans les smart contracts, tels que les traits d'héritage à plusieurs niveaux.
Le troisième avantage et non des moindres, Solidity dispose de la librairie la plus aboutie en termes de smart contracts à disposition et de pratiques de sécurité.
Cela s’explique aussi par l’ancienneté de ce langage et l’activité de la communauté. Pour toutes ces raisons, Solidity est la “valeur sûre” dans le cursus d’apprentissage d’un développeur blockchain.
Rust
Parmi toutes les blockchains d’infrastructure qui se sont illustrées ces dernières années, certaines d’entre elles voient des limitations dans les possibilités proposées par Solidity, et ont choisi un autre langage pour développer leurs smart contracts.
Parmi les alternatives existantes, Rust est le choix qui revient le plus souvent comme en témoigne le nombre de blockchains qui l’utilisent :
- Solana
- Polkadot
- MultiversX (anciennement Elrond)
- Cosmos
Même certains projets de Layer 2 comptent implémenter Rust pour coder des smart contracts. On peut citer Arbitrum avec sa mise-à-jour “Stylus” permettant de coder avec plusieurs langages autres que Solidity.
Rust est un langage qui s’est érigé en tant que véritable alternative à Solidity pour coder des smart contracts.
La première raison à cela est que c’est un langage robuste. Sur Solidity, la grande majorité des hacks sont dues à des attaques par réentrance. Avec Rust, il y a un contrôle complet sur la gestion de la mémoire et du cache ou la garbage collection pour limiter ces vulnérabilités.
La seconde raison est que Rust permet de déployer plus de puissance de calcul pour un même coût, ce qui fait qu’on peut développer des applications plus scalables et/ou plus optimisées.
Pour ces raisons, Rust est le langage de programmation le plus aimé par les développeurs, avec 84% de développeurs qui l'utilisent déjà depuis au moins un an et qui souhaitent continuer de l’utiliser.
Étant donné que Rust est adopté sur de nombreuses blockchains et que c’est un langage de smart contracts plus récent par rapport à Solidity, les opportunités professionnelles peuvent être plus importantes.
Cependant, l’apprentissage de ce langage est plus difficile et il y a globalement moins de recul sur les bonnes pratiques de développement.
Les langages de niche
A partir de maintenant, on entre dans les langages de smart contracts “de niche”. Ces derniers sont beaucoup moins utilisés que les langages cités précédemment, avec des communautés également moins grandes.
Apprendre un langage de niche implique un certain nombre de risques, notamment le manque de recul sur ces technologies, et aussi le risque d’acquérir des compétences qui ne seraient pas sollicitées.
Mais cela implique aussi de nombreuses opportunités, comme la possibilité de créer des applications infaisables ailleurs.
OCaml
OCaml est un langage de programmation français, puisqu’il a été créé à l’Inria. Il s’agit d’un langage open source qui, malgré une communication timide, possède une base d’utilisateurs dans des domaines spécifiques de l’industrie, notamment l’aéronautique.
Dans le cas de la blockchain, OCaml est utilisé sur 2 réseaux :
- Mina, un réseau utilisant la technologie des zk-SNARKs
- Tezos, dans lequel on utilise le langage Michelson pour développer des smart contracts, qui ressemble fortement à OCaml
Etant donné que OCaml est un langage français, la plupart des ressources de développement à disposition sont en français. En revanche, la syntaxe est différente de celle des langages qui reprennent la syntaxe du C, ce qui est assez déroutant pour les développeurs en transition.
Cairo
Cairo est un langage de programmation spécialement conçu pour Starknet, un projet de “Validity Rollup”.
Un Validity Rollup est un réseau qui regroupe un certain nombre de transactions en une seule sur le réseau principal et la validation de cette dernière se fait grâce aux Zero Knowledge Proofs.
Pour créer des smart contracts sur un Validity Rollup, on a deux solutions :
- Créer un Validity Rollup compatible avec la machine virtuelle d’Ethereum pour pouvoir coder en Solidity
- Créer sa propre machine virtuelle pour créer des cas d’usage au-delà des possibilités d’Ethereum
Starknet a donc choisi de créer une toute nouvelle machine virtuelle avec son propre langage de programmation appelé Cairo.
Bien que ce langage soit principalement inspiré de Rust, son apprentissage reste exigeant et on a très peu de recul sur ce type de technologie. Cependant, Starknet est un projet très pris au sérieux par tout l’écosystème, avec une communauté de développeurs grandissante.
Noir
Noir est un langage de programmation spécialement conçu pour Aztec Network, un Layer 2 axé sur la confidentialité.
L'objectif d'Aztec est que toute tierce partie observant une transaction n'apprenne rien (si ce n’est que quelque chose s’est passé sur le réseau et rien de plus). Pour cela, plusieurs modifications sont nécessaires :
- L’exécution des transactions est effectuée par le client plutôt que par les noeuds/séquenceurs.
- L’état du réseau est représenté par des UTXOs (à l’instar de Bitcoin)
En résumé, le fonctionnement d’Aztec n’a rien à voir avec Ethereum, donc il fallait un langage de programmation spécifique pour créer des smart contracts compatibles avec ce réseau.
Bien que le réseau Aztec ne soit pas encore déployé, beaucoup de développeurs s’essaient à ce langage car, comme Starknet, il permet des cas d’utilisation qui seraient impossibles à créer sur d’autres blockchains.
Masterclass gratuite
Nos experts répondent à vos questions sur l'intelligence artificielle !
S'inscrire au WebinaireMasterclass gratuite
Nos experts répondent à vos questions sur la blockchain !
S'inscrire au Webinaire