Importare e caricare i file sorgente in Solidity

Ci sono due ragioni principali per caricare file esterni in Remix:

  • per importare una libreria o una dipendenza (per file che NON verranno modificati)

  • per caricare alcuni file per la manipolazione, la modifica e la riproduzione (per file che si desidera modificare)

Importare una libreria o una dipendenza

When importing from NPM, or a URL (like github, an IPFS gateway, or a Swarm gateway) you do not need to do anything more than use the import statement in your contract. The dependencies do not need to be «preloaded» into the File Explorer’s current Workspace before the contract is compiled.

I file caricati dall’istruzione import vengono inseriti nella cartella `.deps” dell”Esplora file dell’area di lavoro corrente.

Sotto il cofano, Remix controlla se i file sono già caricati nella cartella .deps. In caso contrario, li ottiene tramite unpkg se si tratta di una libreria NPM.

Ecco alcuni esempi di dichiarazioni di import:

Importa da NPM

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts@4.2.0/token/ERC20/ERC20.sol";

**Nota:**Nell’esempio sopra, @openzeppelin è il nome della libreria npm. Nell’esempio seguente il nome della libreria non inizia con una @ - ma Remix andrà e controllerà npm se ha una libreria con quel nome.

import "solidity-linked-list/contracts/StructuredLinkedList.sol";

Importa da un URL di Github

import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol";

È necessario specificare il tag della release (se disponibile), altrimenti si otterrà il codice più recente nel ramo principale. Per i contratti OpenZeppelin si dovrebbe usare solo il codice pubblicato in un rilascio ufficiale; l’esempio precedente importa da OpenZeppelin Contracts v2.5.0.

Importa da Swarm

import 'bzz-raw://5766400e5d6d822f2029b827331b354c41e0b61f73440851dd0d06f603dd91e5';

Importa da IPFS

import 'ipfs://Qmdyq9ZmWcaryd1mgGZ4PttRNctLGUSAMpPqufsk6uRMKh';

Importare un file locale non in .deps

Per importare un file NON presente nella cartella .deps, utilizzare un percorso relativo (./). Per esempio:

import "./myLovelyLovelyLib.sol";

**Nota: ** Non è possibile importare tra aree di lavoro.

Importare un file dal filesystem del computer

This method uses remixd - the remix daemon. Please go to the remixd docs for instructions about how to bridge the divide between the browser and your computer’s filesystem.

Ulteriori informazioni sulla parola chiave import

Per una spiegazione dettagliata della parola chiave import si veda la Documentazione di Solidity

Importing files for manipulation

When importing from the home tab widgets or with a remix command in the console, the files are placed in the root of the current Workspace inside a folder that shows their source - eg github or gists.

Pulsanti di import nella scheda home di Remix

I pulsanti Gist, Github, Swarm, IPFS e HTTPS sono per aiutare a ottenere i file in Remix per poterli esplorare.

Cliccando su uno dei pulsanti di import, si aprirà una finestra di dialogo come questa:

Non è necessario racchiudere l’input tra virgolette.

Caricamento con un comando remix nella console

I 2 comandi di remix per il caricamento sono:

  • remix.loadurl(url)

  • remix.loadgist(id)

remix.loadurl('https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/math/SafeMath.sol')
remix.loadgist('5362adf2000afa4cbdd2c6d239e06bf5')

Accesso ai file caricati dalla scheda Home o da un comando di remix

Quando si carica da github, una cartella denominata github viene creata nella radice dell’area di lavoro corrente. Per importare un file dalla cartella github, si usa un comando come questo:

import "github/OpenZeppelin/openzeppelin-contracts/contracts/math/SafeMath.sol";

Si noti che questa dichiarazione di import non include le informazioni sulla versione che erano nel comando remix.load(url). Quindi si raccomanda di usare i metodi descritti all’inizio di questa pagina per importare le dipendenze che non si intende modificare.

Supponiamo che il file .sol che conteneva la dichiarazione di import sopra si trovi nella cartella dei contratti. Si noti che questa istruzione di import non ha bisogno di risalire alla cartella github con un percorso relativo come: ../github.