Passez de débutant à développeur Solidity Gigabrain.
Solidity est un langage orienté objet et de haut niveau pour la programmation de contrats intelligents.
Apprendre Solidity vous permettra de créer des contrats intelligents et des applications décentralisées (dApps).
Cet article couvre les méthodes les plus courantes pour apprendre Solidity et présente les concepts Solidity importants que les étudiants doivent apprendre pour devenir un développeur Ethereum.
Pourquoi est-il important d’apprendre Solidity ?
Solidity, le langage de programmation permettant d’écrire des contrats intelligents sur les blockchains compatibles Ethereum et EVM, est l’une des compétences les plus importantes pour les développeurs de blockchains. À mesure que l’écosystème autour d’Ethereum et d’autres plateformes de contrats intelligents se développe, la demande de développeurs Solidity augmente.
Au moment de la rédaction de cet article, le salaire moyen d’un développeur Solidity à distance est de 145 000 $ par an, et les développeurs expérimentés peuvent gagner plus de 500 000 $, y compris les options d’achat d’actions des employés et les incitations basées sur les jetons. Même dans les marchés baissiers, il y a des milliers d’offres d’emploi Solidity à la recherche de candidats qualifiés.
Non seulement l’apprentissage de Solidity peut offrir d’énormes opportunités financières, mais il vous permet également de créer des dApps étonnantes qui peuvent avoir un impact énorme sur le monde. En fait, Ethereum compte à lui seul près de 3 000 dApps servant un éventail d’objectifs allant de l’inclusion financière à l’énergie durable.
Apprenez Solidity avec un Bootcamp
Si vous souhaitez apprendre Solidity et d’autres compétences de développement de blockchain dans un environnement structuré et immersif, un bootcamp Solidity pourrait être la bonne option pour vous. Les bootcamps blockchain offrent une formation intensive et pratique pour vous aider à devenir un développeur blockchain prêt à travailler.
Après l’acquisition de ChainShot par Alchemy, Alchemy a remanié le Bootcamp pour développeurs Ethereum de ChainShot, d’une durée de 7 semaines et d’une valeur de 3 000 dollars, et le propose GRATUITEMENT au public dans le cadre d’Alchemy University. Pour apprendre Solidity avec des professeurs experts et aux côtés de pairs motivés, assurez votre place dans la file d’attente pour le bootcamp Solidity d’Alchemy University.
Si les développeurs sont novices en matière de développement en général, le cours accéléré de JavaScript de 3 semaines de l’Alchemy University est un excellent prérequis avant de commencer un bootcamp Ethereum.
Apprenez Solidity avec des tutoriels
Si vous êtes un autodidacte et que vous souhaitez apprendre à votre propre rythme, les didacticiels constituent un excellent moyen d’apprendre Solidity. Il existe de nombreux tutoriels Solidity de haute qualité disponibles en ligne, allant du niveau débutant au niveau avancé.
Les ressources officielles des développeurs Ethereum comprennent 53 tutoriels étiquetés « Solidity », couvrant tout, des bases des contrats intelligents à des sujets plus avancés comme l’optimisation du gaz et la signature sécurisée.
Apprenez Solidity avec des cours en ligne
Les cours en ligne sont un excellent moyen d’apprendre Solidity si vous souhaitez plus de structure et de conseils que les tutoriels. Il existe de nombreux cours de qualité sur Solidity, gratuits ou payants, dispensés par des startups web3 et des plateformes web2 comme Udemy.
Alors que les tutoriels sont autodidactes, les cours en ligne comportent souvent des leçons et des échéances fixes, ce qui incite les apprenants à rester sur la bonne voie. En outre, les cours comportent souvent des quiz et d’autres devoirs permettant de tester vos connaissances au fur et à mesure de votre progression.
Concepts importants de Solidity à apprendre
Une fois que vous avez choisi votre méthode d’apprentissage, il est temps de commencer à apprendre à coder dans Solidity. Il est important de comprendre un certain nombre de concepts Solidity fondamentaux pour écrire un code efficace.
ABI de Solidity
L’interface binaire d’application (ABI) est un ensemble de règles qui permet à deux logiciels différents d’interagir l’un avec l’autre. Dans le contexte de Solidity, l’ABI permet aux contrats intelligents d’interagir entre eux, ainsi qu’avec des logiciels externes comme les portefeuilles.
L’ABI vous permet d’écrire du code qui peut interagir avec n’importe quel contrat, que vous ayez le code source ou non. Cela est possible parce que l’ABI comprend toutes les informations nécessaires pour coder et décoder les données qui sont transmises entre les contrats.
Contrats intelligents
Un contrat intelligent est un morceau de code qui s’exécute sur la blockchain Ethereum et effectue certaines actions lorsqu’un ensemble de conditions sont remplies. Les contrats intelligents peuvent être utilisés pour créer des jetons numériques, des applications décentralisées (dApps), et plus encore.
Un cas d’utilisation courant des contrats intelligents est la création d’un jeton ERC20, qui peut être réalisée en quelques lignes de code seulement. Les contrats intelligents plus complexes comprennent les échanges de jetons, l’agriculture de rendement et les actifs synthétiques. Ces contrats sont compilés à l’aide d’un compilateur Solidity, qui produit le bytecode utilisé pour déployer le contrat.
Jetons ERC20
Les jetons ERC20 sont un type d’actif numérique qui fonctionne sur la blockchain Ethereum. Ils sont souvent utilisés pour représenter des actifs du monde réel, tels que des marchandises ou des monnaies fiduciaires.
Les jetons ERC20 sont le type d’actif numérique le plus courant sur Ethereum. Comme les jetons ERC20 sont également l’un des types de contrats les plus faciles à écrire, apprendre à les créer est une compétence importante à maîtriser.
Interface du contrat
Une interface est un moyen de spécifier les fonctions qu’un contrat doit avoir. Les interfaces vous permettent de créer des contrats qui peuvent être facilement réutilisés et étendus. Par exemple, vous pouvez créer une interface pour un contrat de jeton, et tout contrat qui implémente cette interface peut être utilisé comme jeton.
Inheritance (Héritage)
L’héritage est un moyen de réutiliser le code dans Solidity. L’héritage vous permet de créer des contrats « enfants » qui héritent de tout le code d’un contrat « parent ». Cela permet aux développeurs d’éviter la duplication du code et facilite la maintenance des contrats intelligents.
L’héritage est un concept important dans la programmation orientée objet, et c’est l’une des choses qui rendent Solidity si puissant. Apprendre à créer des contrats standardisés qui peuvent être facilement étendus et modifiés est une leçon importante à maîtriser dans Solidity.
Fonctions
Comme dans tout langage de programmation, les fonctions sont un élément clé de Solidity. Les fonctions Solidity sont des éléments de code qui reçoivent des entrées, effectuent une action et renvoient une sortie.
Les fonctions peuvent être écrites dans les contrats intelligents Solidity pour effectuer toutes sortes d’actions, de l’envoi de jetons au stockage de données. Une collection de fonctions destinées à être réutilisées s’appelle une bibliothèque.
Un principe de base du codage est appelé le « principe DRY », qui signifie « Don’t Repeat Yourself ». Ce principe stipule que les développeurs ne doivent jamais écrire deux fois le même morceau de code. Au lieu de cela, les développeurs doivent écrire une fonction une fois, puis appeler cette fonction chaque fois que vous avez besoin d’effectuer cette action.
Visibilité des fonctions
Une chose importante à noter au sujet des fonctions Solidity est qu’elles ont des paramètres de visibilité. La visibilité détermine qui peut voir et exécuter la fonction. Il existe quatre niveaux de visibilité dans Solidity : public, externe, interne et privé.
Les fonctions publiques peuvent être vues et exécutées par tout le monde.
Les fonctions externes peuvent être vues par tout le monde mais ne peuvent être exécutées que par d’autres contrats.
Les fonctions internes ne peuvent être vues et exécutées que par d’autres fonctions du même contrat.
Les fonctions privées ne peuvent être vues et exécutées que par le contrat lui-même.
Fonction d’appel
La fonction d’appel vous permet d’exécuter du code dans un autre contrat. C’est ainsi que les contrats interagissent entre eux sur Ethereum.
La fonction d’appel vous permet d’écrire du code qui peut interagir avec n’importe quel contrat, que vous ayez le code source ou non. Cela est possible parce que l’ABI comprend toutes les informations nécessaires pour coder et décoder les données qui sont transmises entre les contrats.
Fonction Delegatecall
La fonction delegatecall est similaire à la méthode call, mais avec une différence importante : elle exécute le code dans le contexte de l’appelant. Cela signifie que toute modification du stockage effectuée par le contrat appelé sera effectuée dans le stockage de l’appelant.
La fonction delegatecall vous permet d’écrire des contrats qui peuvent être réutilisés par d’autres contrats. Par exemple, vous pouvez écrire un contrat qui implémente une interface, puis d’autres contrats peuvent appeler ce contrat par délégation pour utiliser l’interface.
Modifiers (Modificateurs)
Les modificateurs sont comme les fonctions, mais avec quelques différences importantes. Premièrement, les modificateurs ne peuvent être utilisés que sur les fonctions. Deuxièmement, les modificateurs sont appelés avant l’exécution de la fonction. Un exemple de modificateur est payable, qui permet à une fonction de recevoir de l’éther dans le contrat.
Les modificateurs vous permettent de changer le comportement d’une fonction sans toucher au code lui-même. Par exemple, un modificateur peut vérifier si un utilisateur dispose d’un solde suffisant avant d’exécuter une fonction, ou ajouter un événement qui se déclenche lorsque la fonction est appelée.
Tableaux
Les tableaux sont des structures de données linéaires qui stockent une taille fixe d’éléments de même type dans des emplacements mémoire contigus et adjacents. Un tableau peut être de taille fixe ou dynamique. La taille des tableaux dynamiques n’est pas prédéfinie lors de leur déclaration, contrairement aux tableaux fixes qui ont une taille prédéfinie.
Si les développeurs ont besoin d’itérer sur un groupe de données (par exemple en utilisant une boucle), ils utilisent un tableau. S’il n’est pas nécessaire d’itérer sur un ensemble de données, et qu’à la place le développeur peut récupérer des valeurs sur la base d’une clé connue, alors envisagez d’utiliser des mappings.
Structs
C’est un moyen de stocker des données dans un contrat Solidity. Les structures sont similaires à un tableau, mais chaque élément peut avoir un type différent. Les Structs sont utiles pour créer des types de données plus complexes qui ont plusieurs propriétés.
Mappings
Un mappage est un moyen de stocker des données dans un contrat Solidity. Les mappings sont similaires aux tableaux, mais les clés peuvent être de n’importe quel type et pas seulement des entiers. Cette caractéristique rend les mappings polyvalents et puissants. Les mappings vous permettent de stocker des données dans un contrat d’une manière qui est flexible et facile à utiliser.
Événements
Les événements sont un moyen de déclencher l’exécution de code lorsque certaines conditions sont remplies. Par exemple, les développeurs peuvent écrire un événement qui est déclenché lorsqu’un utilisateur achète un jeton, ou lorsqu’une transaction est confirmée sur la blockchain.
Les événements Solidity permettent aux développeurs d’écrire du code qui est exécuté en réponse à des événements du monde réel. C’est ainsi que de nombreuses dApps sont capables d’interagir avec le monde réel, par exemple en envoyant un e-mail ou un SMS lorsqu’une condition est remplie.
Require (gestion des erreurs)
Le mot-clé « require » est l’une des trois fonctions spéciales suivantes : require, assert et revert. Require vérifie si une condition est vraie et, dans le cas contraire, il annule la transaction et renvoie un message d’erreur.
L’utilisation de require vous permet d’éviter que des erreurs ne se produisent dans votre contrat. Par exemple, vous pouvez utiliser require pour vérifier qu’un utilisateur a un solde suffisant pour effectuer un achat, ou qu’une adresse est valide avant d’envoyer une transaction.
Contrats intelligents évolutifs
Les contrats intelligents évolutifs sont un type de contrat qui peut être mis à niveau sans qu’il soit nécessaire de redéployer le contrat. Les contrats intelligents évolutifs vous permettent d’apporter des modifications à un contrat après son déploiement, sans affecter les données ou le code qui se trouvent déjà sur la blockchain.
Contrats par procuration
Un contrat proxy est un type de contrat qui permet à un autre contrat d’exécuter son code. Les contrats proxy Solidity sont utiles dans les cas où vous souhaitez mettre à niveau un contrat mais ne voulez pas le redéployer.
Les contrats proxy sont également utiles lorsque les développeurs veulent exécuter le code d’un contrat sur une blockchain différente. Par exemple, vous pouvez utiliser un contrat proxy pour exécuter un contrat Solidity sur un testnet Ethereum.
Contrats multisig
Un contrat multisig est un type de contrat qui nécessite plus d’une signature pour exécuter son code. Les contrats Solidity multisig sont utiles lorsque les développeurs veulent demander à plusieurs personnes d’approuver une transaction avant qu’elle ne soit exécutée.
Les contrats multisig sont également utiles dans les cas où les développeurs veulent limiter le montant d’argent qui peut être dépensé dans une certaine période de temps. Par exemple, vous pouvez utiliser un contrat multisig pour exiger deux signatures pour toute transaction supérieure à 1 000 dollars.
Reentrancy Attacks (Attaques de réentraînement)
Les attaques par réentrance sont un type d’attaque qui peut se produire dans les contrats Solidity lorsqu’un contrat appelle un autre contrat, puis que le second contrat rappelle le premier contrat ou un autre contrat non fiable, généralement avant que le premier contrat n’ait fini de s’exécuter.
Les attaques par réentraînement peuvent être utilisées pour exploiter les vulnérabilités des contrats. Par exemple, un attaquant pourrait utiliser une attaque par réentrance pour drainer tout l’éther d’un contrat.
La meilleure façon d’apprendre Solidity
Quels que soient vos objectifs, il existe une façon d’apprendre Solidity qui répond à vos besoins. Si vous cherchez un moyen rapide et facile de commencer, les tutoriels sont une excellente option. Vous pouvez également consulter notre introduction à Solidity. Si vous souhaitez davantage de structure et de conseils, les cours en ligne sont peut-être plus adaptés. Et si vous recherchez une expérience immersive et pratique, un camp d’entraînement pourrait être le bon choix.
Une fois que vous avez choisi votre méthode d’apprentissage, il y a un certain nombre de concepts importants à s’assurer que vous obtenez vers le bas, y compris les contrats intelligents, les fonctions, les événements, et plus encore. En comprenant ces concepts, vous serez sur la bonne voie pour devenir un développeur Solidity compétent.
0 commentaires