Compilateur Solidity

Clicking the Solidity icon in the icon panel brings you to the Solidity Compiler. The default view of the Solidity Compiler shows the basic configuration. To open the Advanced Configuration panel, click the Advanced Configuration button (C. in fig. 1). For details on advanced features - see below.

Solidity compiler basics

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.

If there is not an active file in the editor or a file has not already been compiled, then the Solidity Compiler will look like this:

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.

Using the Contract selectbox

Because a Solidity file can include multiple contracts and because contracts can import other contracts, multiple contracts are often compiled. However, only 1 contract’s compilation details can be retrieved at a time.

To select the desired contract, use the Contract selectbox (F. in fig. 1). Forgetting to select the right contract is a common mistake - so remember to verify that the contract you want is selected.

Détails de la compilation et publication

Using the publish button, you can upload your contract to IPFS or Swarm (only non abstract contracts can be published to 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

The Compile and Run script button (E. in fig. 1) is for compiling and then immediately running a script. It’s a time saver so that you can write some code, automatically run script that sets state of the contract - thus allowing you to quickly understand how the code is working. Learn more about Compile and 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.

It is important to address reported issues even if the compiler doesn’t complain. (more about static analysis)

Advanced compiler configurations

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).

Solidity or 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.

To see the name of the hard fork used in the current compilation, click the « Compilation Details » button and in the Metadata section there will be a sub-section called settings. Open up the settings to see the EVM version’s name.

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).

To the right of the Enable optimization checkbox is the box to input the number of Optimization runs. The default value is 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

Selecting the radio button next to Use configuration file will let you set the configuration using a JSON file (T. in fig 2). When you switch to compile with a config file, a sample compiler config file is created. This file can be edited with all the available options.

Clicking the config file’s name will open it up in the Editor. To change the config file click the Change button. If you update the text box with a file name of a file that does not exist, a new file will be created containing the default file’s contents.

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é

For those writing your own custom Solidity Compiler, you can import that by clicking the + button (X. in fig 1) to open a modal where you can input the URL of the compiler to be loaded.