
Solidity a parcouru un long chemin depuis sa première proposition en 2014 et son développement ultérieur par l'équipe Solidity d'Ethereum. Il y a des centaines de milliers de développeurs qui utilisent le langage de programmation pour créer des services basés sur la blockchain pour un nombre croissant de cas d'utilisation.
Cet article explique ce qu'est Solidity et comment il est utilisé dans l'écosystème Ethereum. Ce blog est fait pour vous si vous souhaitez en savoir plus sur les rouages de ce langage de programmation basé sur la blockchain.
Qu'est-ce que Solidity ?
Solidity est un langage de programmation, utilisé pour créer des smart contract qui automatisent les transactions sur la blockchain. Après avoir été proposé en 2014, le langage a été développé par des contributeurs du projet Ethereum. Le langage est principalement utilisé pour créer des smart contract sur la blockchain Ethereum et sur d'autres blockchains.
Solidity est similaire à l'un des langages de programmation les plus courants, JavaScript. Il peut être considéré comme un dialecte de JavaScript. Cela signifie que si vous comprenez JavaScript, il peut être facile d'appréhender Solidity. Solidity partage également des caractéristiques similaires aux langages de programmation C++ et Python.
En tant que langage de haut niveau, Solidity supprime la nécessité de taper le code en binaire. Il permet aux humains d'écrire des programmes de manière plus facile à comprendre, en utilisant une combinaison de lettres et de chiffres.
Comment fonctionne Solidity ?
La beauté de l'écosystème Ethereum est que tant de crypto-monnaies différentes et d'applications décentralisées peuvent l'utiliser. Les smart contract permettent de réaliser des technologies uniques sur Ethereum pour toutes sortes d'entreprises et d'organisations.
Chaque année, le monde dépense des milliards de dollars pour des solutions blockchain. Bon nombre de ces solutions sont créées à l'aide de Solidity. Les smart contract créés à l'aide de Solidity peuvent être considérés comme un moyen d'automatiser les processus commerciaux et non commerciaux entre différentes personnes. Ainsi, les personnes effectuant des transactions sur la blockchain n'ont pas à s'inquiéter des risques tels que la fraude ou le fait de ne pas pouvoir utiliser la même monnaie.
L'un des composants clés qui rend possible l'exécution du code Solidity est l'EVM. L'EVM est décrit comme un ordinateur virtuel sur la blockchain qui transforme les idées des gens en code qui exécute des applications sur la blockchain.
Sous le capot, Solidity crée un code de niveau machine qui est exécuté sur l'EVM. Un compilateur est utilisé pour décomposer le code de haut niveau lisible par l'homme, qu'il transforme en instructions que le processeur lit. Différentes plateformes permettent de compiler Solidity gratuitement, notamment le compilateur en ligne Remix et un compilateur de type commande téléchargé sur un PC.
Fonctions publiques et privées
Les fonctions publiques sont similaires aux API auxquelles tout le monde peut accéder. Tout le monde peut les appeler dans son code. Les fonctions publiques sont conçues, dans de nombreux cas, pour des processus partagés sur une plate-forme que tous les utilisateurs utilisent.
Par exemple, une fonction publique pourrait être créée pour permettre à tous les utilisateurs d'une plate-forme de vérifier le solde de leur compte. Les fonctions smart contract.
Si les smart contract peuvent être faciles à écrire avec Solidity, il est souvent très difficile de les écrire de manière sécurisée. Par exemple, si la fonction de retrait d'un smart contract n'est pas sécurisée, un attaquant peut manipuler la fonction vulnérable pour vider un compte de ses fonds.
Un hacker pourrait faire appel à une fonction de retrait pour envoyer de l'argent sur un autre compte, en utilisant une boucle qui répète à plusieurs reprises la fonction de retrait.
Les fonctions privées ne peuvent être appelées que depuis l'intérieur des contrats. Elles contiennent des instructions qui ne peuvent être exécutées qu'après avoir été appelées par d'autres fonctions, dans une chaîne. Il est ainsi plus difficile pour le code d'être manipulé par des acteurs malveillants.
Normes et logique du code
Différentes normes émergent et déterminent la manière dont les smart contract Solidity sont utilisés pour créer des applications sur Ethereum. Ces normes sont connues sous le nom de normes ERC (Ethereum Request for Comments). Les normes sont basées sur un document qui contient des directives sur les fonctions requises et des restrictions sur la façon dont le code doit se comporter.
Les normes ERC qui déterminent le fonctionnement de Solidity sont les suivantes :
- ERC20
- ERC165
- ERC721
- ERC223
- ERC621
- ERC777
- ERC827
- ERC884
- ERC865
- ERC1155
Il existe différentes façons d'utiliser Solidity pour faire interagir les smart contract entre eux. Solidity peut également être utilisé pour faire des instructions dédiées sur la façon dont les données sont stockées dans le smart contract. La logique et les données dans les smart contracts peuvent être séparées en utilisant Solidity. En utilisant des contrats de substitution, la logique d'un contrat peut être modifiée pour permettre cela.
Immutabilité
Il est impossible de modifier le code d'un smart contract une fois qu'il a été écrit et compilé. Cela signifie que chaque ligne de code doit fonctionner comme prévu, faute de quoi il pourrait y avoir de sérieux risques d'exploitation du code.
La blockchain d'Ethereum étant immuable, il est impossible de modifier les données et la logique qui y sont inscrites. Une façon de contourner ce problème est d'utiliser un proxy pour pointer vers un autre contrat qui contient la logique commerciale réelle. Cela permet de corriger les bugs pendant qu'une nouvelle version du contrat est mise en œuvre.
Gas Fees
L'utilisation de Solidity sur le réseau principal d'Ethereum entraîne des coûts supplémentaires. Certains de ces coûts supplémentaires sont basés sur le système de gaz sur Ethereum, qui exige un paiement aux mineurs pour sécuriser le réseau de la blockchain afin que le code puisse s'exécuter en toute sécurité.
Lors de la rédaction de smart contract, il est important de se rappeler que les gas fees peuvent déterminer la performance d'un smart contract. Comme des frais de gaz sont payés pour chaque emplacement de stockage utilisé, les actions exécutées avec le code Solidity coûtent du gaz. Un smart contract dont l'exécution est coûteuse a peu de chances d'être utilisé à long terme.
L'optimisation du gaz permet de réduire le coût du gaz lors de l'exécution du code Solidity. Parmi les méthodes les plus populaires d'optimisation du gaz figurent l'utilisation de bibliothèques et l'utilisation de moins de fonctions. Les bibliothèques sont souvent utilisées pour économiser le bytecode.
Au lieu d'ajouter du bytecode inutile au smart contract, la logique peut être placée dans des bibliothèques. Cela permet de réduire la taille du smart contract. En utilisant moins de fonctions, moins de bytecode est nécessaire, et la difficulté d'auditer le code est également réduite.
Comment Solidity peut-il être utilisé dans Ethereum ?
Solidity est utilisé pour créer des smart contract pour les jetons fongibles et les jetons non fongibles. Différentes normes sont utilisées pour créer des jetons non fongibles et des jetons fongibles dans l'écosystème Ethereum.
Elles permettent de créer différents types de cas d'utilisation pour les personnes qui utilisent la blockchain. Solidity permet aux gens d'utiliser des jetons et des jetons non fongibles sur Ethereum. Qu'il s'agisse de mint des jetons non fongibles ou de les ajouter à des farm pour un intérêt supplémentaire, différents types d'utilisation des jetons sont rendus possibles par Ethereum.
Les Organisations Autonomes Décentralisées (DAO) sont également rendues possibles par Solidity. Une DAO, qui est un nouveau type de structure organisationnelle en ligne, est principalement écrite en Solidity. Les DAO permettent à différentes personnes de se réunir en tant que membres sur une plateforme en ligne où elles votent sur les décisions clés de la DAO.
Solidity permet d'automatiser les processus au sein de la DAO. Parmi les exemples d'automatisation des processus dans les DAO, citons la réalisation de votes pour les décisions clés et l'attribution de la réputation aux membres de la DAO pour leurs contributions au groupe.
Définir des normes pour les blockchains
Solidity est bien plus qu'un langage de programmation. Il définit des normes pour l'avenir de la technologie blockchain.
Grâce au nombre de développeurs open-source qui travaillent à améliorer la sécurité et les performances de Solidity, des milliers d'applications de l'écosystème Ethereum continuent d'en dépendre pour le fonctionnement de leurs applications. À mesure que de nouvelles normes sont créées pour les smart contract dans Ethereum, le langage deviendra plus sûr à utiliser.