Solidity¶
Solidity est un langage haut-niveau, orienté objet dédié à l’implémentation de smart contracts. Les smart contracts (littéralement contrats intelligents) sont des programes qui régissent le comportement de comptes dans l’état d’Ethereum.
Solidity a été influencé par C++, Python et JavaScript et est conçu pour cibler la machine virtuelle Ethereum (EVM).
Solidity est statiquement typé, supporte l’héritage, les librairies et les bibliothèques, ainsi que les types complexes définis par l’utilisateur parmi d’autres caractéristiques.
Avec Solidity, vous pouvez créer des contrats pour des usages tels que le vote, le crowdfunding, les enchères à l’aveugle, et portefeuilles multi-signature.
Note
La meilleure façon d’essayer Solidity à ce jour est d’utiliser Remix https://remix.ethereum.org/ (le chargement peut prendre un certain temps, merci d’être patient). Remix est un IDE basé sur un navigateur Web qui vous permet d’écrire des contrats intelligents Solidity, puis de déployer et exécuter les contrats intelligents.
Avertissement
Puisque le logiciel est écrit par des humains, il peut contenir des bugs. Ainsi, des contrats intelligents devraient également être créés selon les meilleures pratiques bien connues en matière de développement de logiciels. Cela comprend l’examen du code, les essais, les vérifications et les preuves d’exactitude. Notez également que les utilisateurs ont parfois plus confiance dans le code que ses auteurs. Enfin, les blockchains ont leurs propres choses à surveiller, alors jetez un coup d’oeil à la section Security Considerations.
Traductions¶
Cette documentation est traduite en plusieurs langues par des bénévoles de la communauté avec divers degrés d’exhaustivité et d’actualité. La version anglaise sert de référence.
- Anglais
- Chinois simplifié (en cours)
- Espagnol
- Russe (plutôt périmé)
- Coréen (en cours)
Liens utiles¶
Général¶
Intégrations de Solidity disponibles¶
Génériques:
- Remix
- IDE basé sur navigateur avec compilateur intégré et environnement d’exécution Solidity sans composants côté serveur.
- Solium
- Linter pour identifier et résoudre les problèmes de style et de sécurité dans Solidity.
- Solhint
- Solidity linter qui fournit la sécurité, le guide de style et les règles de bonnes pratiques pour la validation intelligente des contrats.
Atom:
- Etheratom
- Plugin pour l’éditeur Atom qui comprend une coloration syntaxique, une compilation et un environnement d’exécution (Backend node & VM compatible).
- Atom Solidity Linter
- Plugin pour l’éditeur Atom qui fournit un linter Solidity.
- Atom Solium Linter
- Linter Solidty configurable pour Atom utilisant Solium comme base.
Eclipse:
- YAKINDU Solidity Tools
- IDE basé sur Eclipse. Caractéristiques : aide et complétion de code contextuelle, navigation dans le code, coloration syntaxique, compilateur intégré, corrections rapides et modèles.
Emacs:
- Emacs Solidity
- Plugin pour l’éditeur Emacs fournissant la coloration syntaxique et le reporting des erreurs de compilation.
IntelliJ:
- IntelliJ IDEA plugin
- Solidity plugin pour IntelliJ IDEA (et tous les autres IDE JetBrains)
Sublime:
- Package for SublimeText — Solidity language syntax
- Coloration syntaxique pour l’éditeur SublimeText.
Vim:
- Vim Solidity
- Plugin apportant la coloration syntaxique pour l’éditeur Vim.
- Vim Syntastic
- Plugin pour l’éditeur Vim fournissant des checks de compilation.
Visual Studio Code:
- Visual Studio Code extension
- Solidity plugin pour Microsoft Visual Studio Code qui inclus la coloration syntaxique et un compilateur Solidity.
Discontinued:
- Mix IDE
- Qt IDE pour designer, debugger et tester les smarts contracts Solidity.
- Ethereum Studio
- Web IDE spécialisé qui apporte un environnement Ethereum complet.
- Visual Studio Extension
- Solidity plugin pour Microsoft Visual Studio qui inclut le compilateur Solidity.
Outils Solidity¶
- Dapp
- Outil de création, gestionnaire de paquets et assistant de déploiement pour Solidity.
- Solidity REPL
- Essayez Solidity instantanément avec une console Solidity en ligne de commande.
- solgraph
- Visualisez le flux de contrôle de Solidity et mettez en évidence les vulnérabilités potentielles en matière de sécurité.
- Doxity
- Générateur de documentation pour Solidity.
- evmdis
- Désassembleur EVM qui effectue une analyse statique sur le bytecode pour fournir un niveau d’abstraction plus élevé que les opérations EVM brutes.
- ABI to solidity interface converter
- Un script pour générer des interfaces de contrat à partir de l’ABI d’un smart contract.
- Securify
- Analyseur statique en ligne entièrement automatisé pour les smart contracts, fournissant un rapport de sécurité basé sur les modèles de vulnérabilité.
- Sūrya
- Outil utilitaire pour les systèmes de smart contracts, offrant un certain nombre de résultats visuels et d’informations sur la structure des contrats. Prend également en charge l’interrogation du graphe d’appel de fonction.
- EVM Lab
- Riche ensemble d’outils pour interagir avec l’EVM. Comprend une VM, une API Etherchain et un traceur avec affichage du coût du gaz.
Note
Des informations telles que les noms de variables, les commentaires et le formatage du code source sont perdus dans le processus de compilation et il n’est pas possible de récupérer complètement le code source original. Décompiler les contrats intelligents pour afficher le code source original pourrait ne pas être possible, ou le résultat final pourrait être utile.
Parsers et grammaires de Solidity de tierce parties¶
- solidity-parser
- Parser Solidity pour JavaScript
- Solidity Grammar for ANTLR 4
- Vérification de grammaire Solidity pour le générateur de parsers ANTLR 4
Documentation du langage¶
Dans les pages suivantes, nous verrons d’abord un smart contract simple écrit en Solidity suivi par les bases des blockchains et la Machine virtuelle.
La section suivante expliquera plusieurs caractéristiques de Solidity en donnant des exemples de contrats utiles contrats d’exemple. Rappelez-vous que vous pouvez toujours essayer les contrats dans votre navigateur !
La quatrième et plus vaste section couvrira en profondeur tous les aspects de Solidity.
Si vous avez encore des questions, vous pouvez essayer de chercher ou de poser des questions sur le site Web de Ethereum Stackexchange ou venez sur notre gitter channel. Les idées pour améliorer Solidity ou cette documentation sont toujours les bienvenues !
Traduit de l’anglais par Kevin Azoulay.