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 projet
- npm 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”.

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.




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()
- Avoir le symbole du contrat = epitech.symbol()
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:
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!!!! 🙂
Originally published at https://jessicanono.filparty.com.