Importer et charger des fichiers sources dans Solidity

Il y a deux raisons principales de charger des fichiers externes dans Remix :

  • pour importer une bibliothèque ou une dépendance (pour les fichiers que vous ne modifierez PAS)

  • pour charger des fichiers à manipuler, à éditer et à lire (pour les fichiers que vous pourriez vouloir éditer)

Importation d’une bibliothèque ou d’une dépendance

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.

Les fichiers chargés à partir de l’instruction d’importation sont placés dans le dossier .deps de l’explorateur de fichiers** de l’espace de travail actuel.

Sous le capot, Remix vérifie si les fichiers sont déjà chargés dans le répertoire .deps. Si ce n’est pas le cas, il les récupère via unpkg s’il s’agit d’une librairie NPM.

Voici quelques exemples de déclarations d’importation :

Importer de NPM

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

Note: Dans l’exemple ci-dessus, @openzeppelin est le nom de la bibliothèque npm. Dans l’exemple suivant, le nom de la bibliothèque ne commence pas par un @ - mais Remix ira chercher dans npm une bibliothèque de ce nom.

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

Importer à partir d’une URL Github

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

Vous devez spécifier l’étiquette de la version (lorsqu’elle est disponible), sinon vous obtiendrez le code le plus récent de la branche master. Pour les contrats OpenZeppelin, vous ne devez utiliser que le code publié dans une version officielle. L’exemple ci-dessus importe les contrats OpenZeppelin v2.5.0.

Importer depuis Swarm

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

Importation à partir d’IPFS

import 'ipfs://Qmdyq9ZmWcaryd1mgGZ4PttRNctLGUSAMpPqufsk6uRMKh';

Importer un fichier local qui n’est pas dans .deps

Pour importer un fichier qui ne se trouve PAS dans le dossier .deps, utilisez un chemin relatif (./). Par exemple, vous pouvez utiliser un chemin relatif (./) :

import "./myLovelyLovelyLib.sol";

Note: Il n’est pas possible d’importer entre les espaces de travail.

Importation d’un fichier à partir du système de fichiers de votre ordinateur

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.

En savoir plus sur le mot-clé import

Pour une explication détaillée du mot-clé import, voir la [documentation Solidity] (https://docs.soliditylang.org/en/latest/layout-of-source-files.html?highlight=import#importing-other-source-files).

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.

Boutons d’importation dans l’onglet d’accueil de Remix

Les boutons Gist, Github, Swarm, IPFS, et HTTPS sont là pour vous aider à obtenir des fichiers dans Remix afin que vous puissiez les explorer.

En cliquant sur l’un des boutons d’importation, vous ferez apparaître une fenêtre modale comme celle-ci :

Il n’est pas nécessaire de mettre les données entre guillemets.

Chargement avec une commande remix dans la console

Les 2 commandes remix pour le chargement sont :

  • 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')

Accès aux fichiers chargés à partir de l’onglet Accueil ou d’une commande de remixage

Lorsque vous chargez depuis github, un dossier nommé github est créé à la racine de votre espace de travail actuel. Pour importer un fichier depuis le dossier github, vous devez utiliser une commande comme celle-ci :

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

Notez que cette déclaration d’importation n’inclut pas les informations de version qui se trouvaient dans la commande remix.load(url). Il est donc recommandé d’utiliser les méthodes décrites en haut de cette page pour importer des dépendances que vous n’avez pas l’intention de modifier.

Supposons que le fichier .sol contenant la déclaration d’importation ci-dessus se trouve dans le dossier contracts. Remarquez que cette instruction d’importation n’a pas besoin de remonter jusqu’au dossier github avec un chemin relatif comme : ../github.