Compilateur Solidity

En cliquant sur l’icône Solidity dans le panneau d’icônes, vous accédez au Compilateur Solidity. La vue par défaut du Compilateur Solidity montre la configuration de base. Pour ouvrir le panneau de configuration avancée, cliquez sur le bouton Configuration avancée (C. dans la fig. 1). Pour plus de détails sur les fonctions avancées, voir ci-dessous.

Les bases du compilateur Solidity

Sélection d’un contrat à compiler

Pour sélectionner un contrat à compiler, choisissez un fichier dans l’explorateur de fichiers. Ou, si plusieurs fichiers sont ouverts, assurez-vous que celui que vous souhaitez compiler est le fichier actif dans l’éditeur.

S’il n’y a pas de fichier actif dans l’éditeur ou si un fichier n’a pas encore été compilé, le compilateur Solidity ressemblera à ceci :

Déclenchement de la compilation

La compilation est déclenchée lorsque vous :

  • cliquez sur le bouton de compilation (D. dans la fig. 1 ci-dessous)

  • utilisez le raccourci contrôle + s.

  • right click on a file in the File Explorer and select the Compile option

Compilation automatique

If the auto compile checkbox (B. in fig. 1 above) is checked, compilation will occur every few seconds (when the file is auto-saved) as well as when another file is selected. If a contract has a lot of dependencies, it can take a while to compile - so you use autocompilation at your discretion.

Versions de Solidity et fonctionnalité Remix

La version du compilateur est sélectionnée dans la liste déroulante COMPILATEUR (A. dans la fig. 1 ci-dessus).

Vous pouvez compiler (et déployer) des contrats avec des versions de Solidity antérieures à 0.4.12. Cependant, les anciens compilateurs utilisent un AST hérité - que nous ne supportons plus. Par conséquent, certains plugins peuvent ne pas fonctionner et certaines fonctionnalités - par exemple la mise en évidence des sources dans l’éditeur - peuvent ne fonctionner que partiellement.

Utiliser la boîte de sélection Contrat

Comme un fichier Solidity peut inclure plusieurs contrats et comme les contrats peuvent importer d’autres contrats, plusieurs contrats sont souvent compilés. **Cependant, les détails de la compilation d’un seul contrat peuvent être récupérés à la fois.

Pour sélectionner le contrat souhaité, utilisez la boîte de sélection Contrat (F. dans la fig. 1). Oublier de sélectionner le bon contrat est une erreur fréquente - n’oubliez donc pas de vérifier que le contrat que vous souhaitez est sélectionné.

Détails de la compilation et publication

En cliquant sur le bouton « Publier », vous pouvez télécharger votre contrat vers IPFS ou Swarm (seuls les contrats non abstraits peuvent être publiés sur Swarm).

Lorsque vous publiez un contrat qui importe d’autres contrats, le contrat principal et tous les contrats importés sont publiés - chacun à sa propre adresse.

**Les données publiées contiennent les métadonnées du contrat et le code source de Solidity.

After either Publish on IPFS or Publish on Swarm is clicked a modal will pop up. This modal contains the contract’s address as well as the addresses of the contracts that it imported and the address of the contract’s metadata.

Lorsque vous cliquez sur le bouton « Détails de la compilation » (G. dans la fig. 1), une fenêtre modale s’ouvre et affiche des informations détaillées sur le contrat sélectionné.

Si vous souhaitez simplement obtenir l”ABI ou le Bytecode - cliquez sur le bouton approprié voir H. dans la fig. 1.

Vérification passive des contrats

When you publish your metadata to IPFS and deploy your code to the mainnet or a public testnet, the contract verification service Sourcify, will verify your contracts without you needing to do anything.

Compiler et exécuter le script

Le bouton Compiler et exécuter le script (E. dans la fig. 1) permet de compiler et d’exécuter immédiatement un script. C’est un gain de temps qui vous permet d’écrire du code et d’exécuter automatiquement le script qui définit l’état du contrat, ce qui vous permet de comprendre rapidement le fonctionnement du code. (en savoir plus sur Compile & Run)

Erreurs de compilation et avertissements

Les erreurs de compilation et les avertissements sont affichés sous la section du contrat. À chaque compilation, l’onglet d’analyse statique établit un rapport.

Il est important de traiter les problèmes signalés, même si le compilateur ne s’en plaint pas. (en savoir plus sur l’analyse statique)

Configurations avancées du compilateur

Cliquez sur Configurations avancées du compilateur pour ouvrir ce panneau (M. dans la fig. 2 ci-dessous).

There is a radio button to choose whether to configure the compiler through the interface (N. in fig 2) or to use a JSON file for the configuration (R. in fig 2).

Solidité ou YUL

Depuis la version 0.5.7 de Solidity, il est possible de compiler des fichiers Yul. Veuillez lire la (documentation de Solidity sur Yul) qui contient des exemples de code. Vous pouvez utiliser la liste déroulante des langues (O. dans la fig 2) pour changer de langue. **Cette liste déroulante n’est disponible que pour les versions supérieures ou égales à 0.5.7.

Sélectionnez une version de l’EVM

La liste déroulante EVM (P. dans la fig 2) permet de compiler le code contre une fourche dure d’Ethereum spécifique. Le compiler default correspond au hard fork par défaut utilisé par une version spécifique.

Pour voir le nom du hard fork utilisé dans la compilation actuelle, cliquez sur le bouton « Compilation Details » et dans la section Metadata il y aura une sous-section appelée settings. Ouvrez les réglages pour voir le nom de la version de l’EVM.

Activer l’optimisation

Selon la documentation de Solidity, « l’optimiseur tente de simplifier les expressions compliquées, ce qui réduit à la fois la taille du code et le coût d’exécution, c’est-à-dire qu’il peut réduire le gaz nécessaire au déploiement du contrat ainsi qu’aux appels externes faits au contrat ».

For recent versions of Solidity, it is recommended to enable optimization.

Pour en savoir plus sur l’optimisation, (Q. dans la fig 2) visitez le [Solidity docs on the optimizer] (https://docs.soliditylang.org/en/latest/internals/optimizer.html).

À droite de la case à cocher Activer l’optimisation se trouve la case permettant de saisir le nombre de cycles d’optimisation. La valeur par défaut est de 200.

Vous pouvez vous demander : « Quel est le bon nombre d’exécutions pour mon contrat ? » La documentation de Solidity répond à cette question :

Si vous souhaitez que le déploiement initial du contrat soit moins coûteux et que les exécutions ultérieures de la fonction soient plus coûteuses, définissez –optimize-runs=1. Si vous prévoyez de nombreuses transactions et que vous ne vous souciez pas du coût de déploiement et de la taille de sortie, fixez –optimize-runs à un nombre élevé.

Pour en savoir plus sur les cycles d’optimisation, visitez le site [Solidity docs about Optimizer options] (https://docs.soliditylang.org/en/latest/using-the-compiler.html?highlight=optimize-runs#optimizer-options).

Fichier JSON pour la configuration du compilateur

En sélectionnant le bouton radio à côté de Utiliser le fichier de configuration, vous pourrez définir la configuration à l’aide d’un fichier JSON (T. dans la fig. 2). Lorsque vous passez à compiler avec un fichier de configuration, un exemple de fichier de configuration du compilateur est créé. Ce fichier peut être édité avec toutes les options disponibles.

Cliquez sur le nom du fichier de configuration pour l’ouvrir dans l’éditeur. Pour modifier le fichier de configuration, cliquez sur le bouton Modifier. Si vous mettez à jour la zone de texte avec un nom de fichier qui n’existe pas, un nouveau fichier sera créé avec le contenu du fichier par défaut.

Il n’y a pas de contrôle d’erreur lors de l’utilisation du fichier .json pour les paramètres de configuration, assurez-vous donc que votre fichier de configuration est correct.

Utiliser un compilateur Solidity personnalisé

Pour ceux qui écrivent leur propre compilateur Solidity, vous pouvez l’importer en cliquant sur le bouton + (X. dans la fig 1) pour ouvrir une fenêtre modale dans laquelle vous pouvez entrer l’url du compilateur à charger.