NFT sur Ethereum

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”.
    • .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:
    •  epitech.mintNFT("0x479234D0c5D648a0D48FF234802ae90161CC697e", “http://127.0.0.1:4444/flask/api/v1/epitech/“)

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!!!! 🙂

Rating: 1 out of 5.

Leave a Reply

Your email address will not be published. Required fields are marked *