Solidity

Solidity logo

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.

Liens utiles

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:

  • Sublime:

  • 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

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.

Sommaire

Keyword Index, Search Page