Cas pratique de création d’un contrat intelligent avec le standard ERC-721
Qu’est-ce qu’un NFT ?
Un NFT ou jeton non fongible est une représentation numérique de quelque chose d’unique, qui peut être collectionné et ne peut en aucun cas être répliqué.
Objectif de ce tutoriel
À la fin de ce tutoriel vous serez en mesure de créer un contrat intelligent qui permet d’émettre les NFTs et le deployer sur une Blockchain locale(testnet).
Création d’un nouveau projet
mkdir nft_test
=> pour créer un nouveau dossier où se trouvera notre projetnpm install -g truffle
=> installation de truffle- intallation de ganache : lien de téléchargement https://trufflesuite.com/ganache/
cd nft_test
truffle init


Contenu du projet créé
- contrats: dossier contenant les contrats intelligents.
- migrations: dossier contenant les scripts de déploiement.
- test: dossier servant aux tests des contrats
- truffle-config.js: le fichier de configuration pour le déploiement.
ERC-721 / Openzeppelin
- Openzepplin offre des librairies qui implémentent les standards de contrats intélligents sur Ethereum.
- ERC721 — un contrat de jeton non fongible qui suit EIP-721. Non fongible signifie que chaque jeton est différent, et donc unique. Un jeton ERC721 peut représenter la propriété de cet objet unique.
npm install @openzeppelin/contracts
=> pour installer
Ecrire le contrat
- Ouvrir le projet sur
nft_test
sur vscode. - Dans le dossier “contrats” créer un nouveau fichier “nft_test.sol”.
- .sol c’est l’extension de fichier solidity, qui est le langage de programmation des contrats intelligents sur ethereum.

Compiler et deployer le contrat intelligent sur la blockchain locale (ganache)
- Créer le ficher 2_deploy.js dans le dossier migrations.
- Insérer le code de migration du contrat “MyNFTH”.

- Démarrer Ganache
truffle console
(connection à la blockchain locale (testnet)avec truffle)- Configurer le fichier truffle-config.js en fonction de la version de solidity utilisée dans le contrat.


- deploy (dans le console de truffle).


Yeah vous avez déployé votre premier contrat sur Blockchain.
Aperçu sur ganache


Interagir avec le contrat (truffle)
- global = this
- epitech = await MyNFT.deployed()
- Avoir le nom du contrat = epitech.name()
- ‘EPITECH’ (resultat)
- Avoir le symbole du contrat = epitech.symbol()
- ‘NFT’ (resultat)
Mint(émettre) un NFT (image)
- Le fichier doit être mis sur un serveur de manière définitive.
- On a besoin d’une url qui retour un objet json qui décrit le NFT (metadata)
- Ici on utilisera en local: http://127.0.0.1:4444/flask/api/v1/epitech/

- On a besoin d’une adresse ethereum qui sera celle du propriétaire de ce nft. Pour cet exemple nous prenons l’ adresse du premier compte dans ganache qui a des ethers.
- Dans la console truffle, effectuer la commande ci-après en remplaçant l’adresse par la votre et l’url selon les cas:
- e
pitech.mintNFT("0x479234D0c5D648a0D48FF234802ae90161CC697e", “http://127.0.0.1:4444/flask/api/v1/epitech/“)
- e
Tandannnn votre premier “NFT” a été “minté” (créé)
Interagir avec le NFT
- Obtenir le propriétaire du NFT créé qui a été créé, tokenId 1 :
await epitech.ownerOf(1)
- Obtenir l’uri du metadata : await epitech.tokenURI(1)
Voilà vous avez inscrit un contrat intelligent sur ethereum et émis votre premier nft.
Yeah!!!! 🙂