Solidity

Solidity est un langage de programmation utilisé pour développer des contrats intelligents sur Ethereum et d'autres plateformes blockchain, comme Monax et sa blockchain Hyperledger Burrow. Gavin Wood, un développeur de logiciels britannique, a proposé Solidity en 2014. Il a développé les langages de programmation de haut niveau avec ses collègues passionnés d'Ethereum, Alex Beregszaszi et Liana Husikyan. Le code Solidity est converti en code portable (ou bytecode) et est disponible pour être exécuté sur la machine virtuelle Ethereum (EVM), qui est l'environnement qui exécute les contrats intelligents dans Ethereum. Bien que d'autres langages, notamment Serpent, Viper et Mutan, puissent également être compilés en bytecode au niveau de la machine EVM pour être exécutés sur les nœuds Ethereum à des fins de paiement, Solidity est le plus largement adopté. Solidity utilise de nombreux concepts des langages de programmation modernes, tels que les classes, les variables, les fonctions et la manipulation des chaînes de caractères, et a été conçu pour être facile à apprendre. Langage volontairement simplifié et peu typé, Solidity s'inspire de C, C++, C#, JavaScript, PowerShell et Python. La syntaxe de Solidity est similaire à celle de ECMAScript (JavaScript). Solidity, quant à lui, utilise un contrat similaire à Java et C. Les développeurs de Solidity peuvent créer des applications pour mettre en œuvre la logique d'auto-application intégrée dans les contrats intelligents. Un contrat intelligent, également appelé cryptocontrat, est un programme informatique qui contrôle directement le transfert de devises numériques ou d'actifs entre les parties dans des conditions spécifiques. Il fixe les règles et les sanctions d'un accord, tout comme les contrats traditionnels. Toutefois, le contrat peut être exécuté automatiquement. Les contrats intelligents peuvent être fiables pour permettre aux individus de faire des transactions commerciales même s'ils utilisent des devises différentes ou parlent des langues différentes. Les contrats prennent également en charge les variables membres complexes dans les mappings et structures hiérarchiques. Le compilateur de Solidity décompose le code complexe en instructions simples telles que "mettre des données dans un registre", "ajouter des données à deux registres" et "sauter à l'instruction au point mémoire "xxxxxxx". Le langage de programmation est typé statiquement (ce qui signifie que les types de variables sont déclarés explicitement et déterminés au moment de la compilation) et prend en charge l'héritage, les bibliothèques et les types complexes définis par l'utilisateur. L'héritage désigne un objet ou une classe qui est basé sur un autre objet ou une autre classe et qui utilise la même mise en œuvre pour conserver le même comportement.

Il existe de nombreuses plates-formes d'intégration capables de compiler, d'exécuter et de faire fonctionner du code. Remix est un environnement intégré de développement (IDE) basé sur un navigateur qui prend en charge Solidity. Il existe également des fonctions à sécurité de type qui permettent au compilateur de valider les types et de renvoyer une erreur si le type attribué n'est pas correct.