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)

  • 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.