Compilatore Solidity

Cliccando sull’icona Solidity nel pannello delle icone, si accede al compilatore Solidity. La vista predefinita del compilatore Solidity mostra la configurazione di base. Per aprire il pannello diella configurazione avanzata, fare clic sul pulsante Advanced Configuration (Configurazione avanzata) (C. nella figura 1). Per i dettagli sulle funzioni avanzate, vedere di seguito.

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.

Se non c’è un file attivo nell’editor o se un file non è già stato compilato, il compilatore Solidity somiglierà a questo:

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.

Utilizzo della casella di selezione del contratto

Poiché un file Solidity può includere più contratti e poiché i contratti possono importare altri contratti, spesso vengono compilati più contratti. **Tuttavia, è possibile recuperare solo i dettagli di compilazione di un contratto per volta.

Per selezionare il contratto desiderato, utilizzare la casella di selezione Contract (Contratto) (F. nella fig. 1). Dimenticare di selezionare il contratto giusto è un errore comune - quindi ricordarti di verificare che sia selezionato il contratto desiderato.

Dettagli della compilazione e pubblicazione

Utilizzando il pulsante pubblica, è possibile caricare il contratto su IPFS o Swarm (solo i contratti non astratti possono essere pubblicati su 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

Il pulsante Compile and Run script (compila ed avvia lo script) (E. nella figura 1) serve per compilare e poi eseguire immediatamente uno script. Si tratta di un «risparmia tempo» che consente di scrivere del codice e di eseguire automaticamente lo script che imposta lo stato del contratto, consentendo così di capire rapidamente come funziona il codice. (maggiori informazioni su Compile & 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.

È importante risolvere i problemi segnalati anche se il compilatore non si lamenta. (approfondimenti sull’analisi statica)

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

Per vedere il nome dell’hard fork usato nella compilazione corrente, cliccare sul pulsante «Compilation Details» (dettagli di compilazione) e nella sezione «Metadata» ci sarà una sottosezione chiamata settings (impostazioni). Aprire le impostazioni per vedere il nome della versione EVM.

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.

A destra della casella di controllo Enable optimization (Abilita ottimizzazione) si trova la casella per inserire il numero di esecuzioni dell’ottimizzazione. Il valore predefinito è 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

Selezionando il pulsante di opzione accanto a Use configuration file (Usa un file di configurazione) si potrà impostare la configurazione usando un file JSON (T. nella fig. 2). Quando si passa a compile with a config file (compila con un file di configurazione), viene creato un esempio di file di configurazione del compilatore. Questo file può essere editato con tutte le opzioni disponibili.

Cliccando sul nome del file di configurazione, si aprirà nell’Editor. Per modificare il file di configurazione, cliccare sul pulsante Change (Cambia). Se si aggiorna la casella di testo con il nome di un file che non esiste, verrà creato un nuovo file contenente il contenuto del file predefinito.

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

Per coloro che scrivono il proprio compilatore solidity personalizzato, è possibile importarlo cliccando sul pulsante + (X. nella figura 1) per aprire una finestra in cui inserire l’url del compilatore da caricare.