Comment importer des contrats intelligents externes et des bibliothèques dans Solidity
OpenZeppelin est le référentiel réutilisable de référence pour les contrats intelligents Ethereum. Dans ce projet, nous allons installer le dépôt de contrat en tant que dépendance, puis importer le contrat propriétaire afin de pouvoir restreindre l’accès à certaines fonctions.
Vous avez peut-être déjà vu ou utilisé un schéma similaire. Lorsque le contrat est initialisé, le msg.sender
l’adresse est stockée dans une variable d’état indiquant le propriétaire du contrat. Utilisation d’un modificateur personnalisé _onlyOwner
, certaines fonctions restreignent l’accès en exigeant que le msg.sender
est égal au propriétaire.
Dans la racine du référentiel, exécutez:
Une fois terminé, vous devriez voir un nouveau dossier dans votre racine nommé node_modules/
(si vous avez utilisé Node ou npm avant de tout savoir).
À l’intérieur node_modules
, npm a téléchargé le repo OpenZeppelin / contrats, dans lequel vivent tous les contrats et bibliothèques qu’OpenZeppelin a à offrir. Prenez un moment pour parcourir ce qui est proposé.
Nous allons utiliser le contrat propriétaire, qui, de la racine du projet, réside dans @openzeppelin-solidity/contracts/access/Ownable.sol
.
dans le contracts/
dossier, créez un nouveau fichier Solidity qui importera le Ownable
Contrat. Je vais appeler le mien TestContract.sol
.
La première chose est de déclarer la version du compilateur Solidity, nous utilisons 0.6.0
; alors nous devons importer le Ownable
contrat en utilisant le chemin que nous l’avons trouvé; et enfin, nous devons déclarer le contrat et qu’il s’étend de Ownable
.
Figure 2 montre le contrat squelette une fois que nous avons fait tout cela.
Croyez-le ou non, c’est à peu près tout!
Lors de l’écriture de nouvelles fonctions dans ce contrat, nous pouvons ajouter le onlyOwner
modificateur juste après la public
, private
, internal
, ou external
des modificateurs pour déclarer que la fonction ne doit être exécutée que par le propriétaire.
Voici un exemple simple:
Pour vous assurer que le contrat se compile lorsque vous avez ajouté vos nouvelles fonctions restreintes, exécutez:
Si tout va bien, vous pouvez commencer à migrer vos contrats vers une blockchain locale, à écrire des tests et à les déployer sur un testnet public!