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

Nozioni di base del compilatore Solidity

Selezione di un contratto da compilare

Per selezionare un contratto da compilare, scegliere un file nell’Esplora File. Oppure, se ci sono più file aperti, assicurarsi che quello che si desidera compilare sia il file attivo nell’Editor.

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:

Avvio della compilazione

La compilazione viene attivata quando si:

  • clicca sul pulsante di compilazione (D. nella figura 1 qui sotto)

  • usa il comando rapido control + s.

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

Compilazione automatica

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.

Versioni Solidity e funzionalità di Remix

La versione del compilatore viene selezionata nell’elenco a discesa COMPILER (COMPILATORE) (A. nella figura 1 qui sopra).

È possibile compilare (e distribuire) i contratti con versioni di Solidity più vecchie della 0.4.12. Tuttavia, i compilatori più vecchi utilizzano una legacy AST, che non supportiamo più. Di conseguenza, alcuni plugin potrebbero non funzionare e alcune funzionalità - come l’evidenziazione della sorgente nell’editor, potrebbero funzionare solo parzialmente.

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.

Dettagli della compilazione e pubblicazione

Using the publish button, you can upload your contract to IPFS or Swarm (only non abstract contracts can be published to Swarm).

Quando si pubblica un contratto che importa altri contratti, il contratto principale e tutti i contratti importati vengono pubblicati - ciascuno al proprio indirizzo.

I dati pubblicati contengono i metadati del contratto e il codice sorgente di 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.

Cliccando sul pulsante «Compilation Details» (Dettagli di compilazione) (G. nella fig. 1), si apre una finestra che mostra informazioni dettagliate sul contratto corrente selezionato.

Se si desidera ottenere solo l”ABI o il Bytecode, cliccare sul pulsante appropriato, vedere H. nella fig. 1.

Verifica passiva del contratto

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.

Compilazione ed esecuzione dello 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.

Errori di compilazione e avvertimenti

Gli errori di compilazione e gli avvertimento sono visualizzati sotto la sezione del contratto. Ad ogni compilazione, la scheda di analisi statica crea un rapporto.

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

Configurazioni avanzate del compilatore

Cliccando su Configurazioni avanzate del compilatore si apre questo pannello (M. nella figura 2 qui sotto).

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

Dalla versione 0.5.7' di Solidity, è possibile compilare file in Yul”. Si prega di leggere la (documentazione di Solidity su Yul) che contiene alcuni esempi di codice. È possibile utilizzare il menu a tendina per selezionare la lingua (O. nella figura 2) per cambiare la lingua. Questo elenco a discesa è disponibile solo per le versioni maggiori o uguali a 0.5.7.

Selezionare una versione della EVM

L’elenco a discesa della EVM (P. nella fig. 2) consente di compilare il codice rispetto a una specifica biforcazione di Ethereum. Il «compiler default» (compilazione predefinita) corrisponde all’hard fork predefinito utilizzato da una versione specifica.

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.

Abilita l’ottimizzazione

Secondo i documenti di Solidity, «l’ottimizzatore cerca di semplificare le espressioni complicate, riducendo sia la dimensione del codice che il costo di esecuzione, cioè può ridurre il gas necessario per la distribuzione del contratto così come per le chiamate esterne fatte al contratto.»

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

Per saperne di più sull’ottimizzazione (Q. nella figura 2), visitate il sito Documenti Solidity sull’ottimizzatore.

To the right of the Enable optimization checkbox is the box to input the number of Optimization runs. The default value is 200.

Ti potresti chiedere: «Qual è il numero giusto di esecuzioni per il mio contratto?» I documenti Solidity dicono:

Se si vuole che la distribuzione iniziale del contratto sia più economica e che le esecuzioni successive della funzione siano più costose, impostare –optimize-runs=1. Se si prevedono molte transazioni e non ci si preoccupa dei costi di distribuzione e delle dimensioni dell’output, impostare –optimize-runs ad un numero elevato.

Per saperne di più sull’esecuzione dell’ottimizzazione, visitate Documenti Solidity sulle opzioni dell’ottimizzatore.

Il file JSON per la configurazione del compilatore

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.

Non esiste alcun controllo degli errori quando si usa il file .json per le impostazioni di configurazione, quindi assicurarsi che il file di configurazione sia corretto.

Utilizzare un compilatore Solidity personalizzato

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.