Créez, déployez et vendez votre propre NFT dynamique



Jetons non fongibles (NFT) sont des outils qui ne se trouvent tout simplement pas en dehors de l’espace blockchain, permettant un large éventail d’applications et de possibilités. Construire une dynamique et NFT randomisé est un bon début pour ceux qui cherchent à se lancer dans la construction d’objets de collection, de jetons indépendants, de billets, d’applications de jeu ou de tout ce que la norme de jetons ERC721 permet. Mais que pouvons-nous en faire maintenant ? Ne serait-il pas génial de montrer vos nouveaux personnages aléatoires ou dynamiques ?

Nous pensons que ce serait aussi. Dans ce didacticiel, nous vous expliquerons toutes les étapes pour déployer votre propre NFT dynamique ou aléatoire sur la place de marché OpenSea. Voici un exemple de ce à quoi cela ressemblera à la fin.

Image d'OpenSea
Image d’OpenSea

Apprenons à faire quelque chose comme ci-dessus !

ERC721 (également connu sous le nom de NFT) définit un cadre pour la création de jetons uniques et différents les uns des autres (d’où le terme non fongible), tandis que le populaire ERC20 La norme définit les jetons qui sont « fongibles », ce qui signifie que les jetons sont tous interchangeables et garantis d’avoir la même valeur. Nous allons plonger un peu plus profondément dans la façon de les construire et comment la communauté les représente sur toutes les plateformes. Vous pouvez en savoir plus dans le Bible OpenSea NFT également.

Si vous n’avez pas consulté le dernier article sur l’obtention de nombres aléatoires dans un NFT, assurez-vous de revenir là-bas et de jeter un œil ! L’onglet Développeurs regorge de didacticiels, de guides et de procédures sur divers contrat intelligent et les enseignements d’ingénierie blockchain.

Dans notre dernier blog, nous avons appris à créer des NFT aléatoires. Nous allons maintenant passer au niveau supérieur en utilisant une autre pièce importante avec la norme ERC721 : métadonnées.

Tous les NFT ont ce qu’on appelle des métadonnées. Vous pouvez lire à ce sujet dans l’original Proposition ERC/EIP 721. Fondamentalement, ce que la communauté a découvert, c’est que le stockage d’images est vraiment pénible et coûteux à faire sur Ethereum. Si vous souhaitez stocker une image 8 x 8, stocker autant de données est assez bon marché, mais si vous voulez une image avec une résolution décente, vous devrez dépenser beaucoup plus.

Le coût du stockage des données est (environ) de 640 000 gaz par Kb de données. Si le prix actuel du gaz est d’environ 50 Gwei ou 0,000000050 ETH et que 1 ETH équivaut actuellement à 600 $, vous dépenserez 20 $.

Petite image pour un ERC721
1 Ko d’image

20 $ pour ajouter cela à la blockchain. Cela n’a pas vraiment excité les créateurs de NFT.

Nous sommes conscients que Ethereum 2.0 résoudra beaucoup de ces problèmes de mise à l’échelle (également FÉLICITATIONS À Eth 2.0 POUR UN LANCEMENT RÉUSSI), mais pour l’instant, la communauté avait besoin d’une norme pour l’aider. Les métadonnées sont cette aide.

Les métadonnées fournissent des informations descriptives pour un tokenId qui est stocké hors chaîne. Ce sont des API simples que les interfaces utilisateur hors chaîne appellent pour rassembler toutes les informations sur le jeton. Chaque Identifiant du jeton a une spécificité jetonURI qui définit cet appel d’API, qui renvoie un objet JSON qui ressemble à ceci :

{
    "name": "You NFT token name",
    "description": "Something Cool here",
    "image": "https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png",
    "attributes": [. . .]
}

Vous remarquerez que les métadonnées ont quatre clés distinctes.

  • Nom qui définit le nom lisible par l’homme de tokenIds
  • la description qui donne des informations générales sur le jeton
  • image qui est un autre URI vers une image
  • les attributs qui vous permettent d’afficher les statistiques de votre token

Il est important que si votre NFT interagit avec d’autres NFT pour vous assurer que les attributs du tokenURI correspondent aux attributs de votre contrat intelligent NFT, sinon vous risquez de vous perdre lorsque les batailles ou les interactions ne se déroulent pas comme prévu !

Une fois que nous avons attribué des tokenId à leur jetonURI, les places de marché NFT pourront afficher votre token, vous permettant de montrer votre créativité. Vous pouvez voir celui que nous avons créé en utilisant la mise à jour Dépôt NFT aléatoire de Donjons & Dragons sur le Marché OpenSea sur le réseau de test Rinkeby. Il y a beaucoup de ces marchés comme monnayable, Rareté, et OpenSea.

Vous pouvez toujours stocker toutes vos métadonnées en chaîne (en fait, c’est le seul moyen pour vos jetons d’interagir), mais de nombreuses places de marché NFT ne savent pas encore lire les métadonnées en chaîne. _Donc, pour le moment, utiliser les métadonnées hors chaîne pour visualiser votre token, tout en ayant toutes les métadonnées on-chain est idéal pour que vos tokens puissent interagir les uns avec les autres.

Le nom, la description et les attributs sont faciles à stocker sur la chaîne, mais l’image est la partie difficile. De plus, où stockons-nous cette API pour le tokenURI ? Beaucoup de gens choisissent d’exécuter des serveurs pour héberger les informations, ce qui est bien, mais c’est un endroit centralisé pour visualiser le jeton. Ce serait mieux si nous pouvions stocker nos images en chaîne afin qu’elles ne puissent pas tomber ou être piratées. Vous remarquerez dans l’exemple ci-dessus, leur image utilise une URL qui pointe vers IPFS, et c’est un moyen populaire de stocker des images.

IPFS signifie InterPlanetary File System et est un protocole hypermédia peer-to-peer conçu pour rendre le Web plus rapide, plus sûr et plus ouvert. Il permet à n’importe qui de télécharger un fichier, et ce fichier est haché de sorte que s’il change, son hachage change également. C’est idéal pour stocker des images car cela signifie que chaque fois que l’image est mise à jour, le hash/tokenURI en chaîne doit également changer, ce qui signifie que nous pouvons avoir un enregistrement de l’historique des métadonnées. Il est également très facile d’ajouter une image sur IPFS et ne nécessite pas l’exécution d’un serveur !

Maintenant que nous savons ce que nous cherchons à faire, construisons et déployons ! Une fois que vous avez déployé votre jeton NFT et votre place de marché, un jeton ressemblera à ceci :

Chainlink Knight d'OpenSea
Chainlink Knight d’OpenSea

Les niveaux la section est l’endroit où vous verrez les statistiques aléatoires de votre jeton !

Comment déployer votre place de marché NFT dynamique

Encore une fois, nous utiliserons la version mise à jour du Donjons & Dragons référentiel qui contient également des instructions dans le fichier readme.

Voici ce que nous allons faire :

  1. Construisez un personnage D&D aléatoire vérifiable à l’aide du VRF Chainlink
  2. Ajouter un tokenURI en utilisant IPFS
  3. Ajout de vos NFT aléatoires à l’OpenSea Marketplace

Gardez à l’esprit que vous pouvez modifier le référentiel afin qu’il fonctionne pour les NFT dynamiques. Vous pouvez facilement échanger le VRF contre Flux de prix Chainlink ou API Chainlink.

Ce dépôt ne fonctionne pour le moment qu’avec Rinkeby, alors assurez-vous de passer directement à Rinkeby ! Nous allons recommencer à zéro, donc pas de soucis si vous n’avez pas lu le dernier article.

Vous aurez besoin d’avoir Rinkeby Testnet ETH et Rinkeby Testnet LIEN dans votre portefeuille pour continuer.

Configurer les variables d’environnement

Vous aurez besoin d’un MNÉMONIQUE et une patinoire RINKEBY_RPC_URL variable d’environnement. Ton MNÉMONIQUE est votre phrase de départ de votre portefeuille. Vous pouvez trouver un RINKEBY_RPC_URL des services de fournisseur de nœuds comme Infura

Ensuite, soit les mettre dans un bash_profile fichier ou exportez-les dans votre terminal comme :

export MNEMONIC='cat dog frog....'

export RINKEBY_RPC_URL='www.infura.io/asdfadsfafdadf'


Ensuite, vous pouvez commencer avec :

Cloner le dépôt et migrer

git clone https://github.com/PatrickAlphaC/dungeons-and-dragons-nft

cd dungeons-and-dragons-nft

npm install

truffle migrate --reset --network rinkeby


Cela déploiera votre D&D NFT !

Générer un personnage

Vous pouvez maintenant l’essayer :

truffle exec scripts/fund-contract.js --network rinkeby

truffle exec scripts/generate-character.js --network rinkeby

truffle exec scripts/get-character.js --network rinkeby


Cela créera un nouveau personnage avec des statistiques aléatoires !

Selon la fréquence à laquelle vous vous déployez, vous pouvez choisir quel personnage en changeant le dnd.getCharacterOverView(1) commande dans get-character.js pour échanger le 0 avec n’importe quoi Identifiant du jeton du personnage que vous aimez.

Cela vous donnera un aperçu de votre NFT. Tu verras NE puisque l’appel renvoie de gros nombres, vous pouvez les convertir en ints pour voir ce qu’ils sont. Ou vous pourriez aller plus loin…

Voir sur Etherscan

Vous pouvez obtenir un Clé API Etherscan gratuitement et interagissez avec les NFT en chaîne. Ensuite, réglez ETHERSCAN_API_KEY comme variable d’environnement.

npm install truffle-plugin-verify

truffle run verify DungeonsAndDragonsCharacter --network rinkeby --license MIT


Cela vérifiera et publiera votre contrat, et vous pourrez accéder au Lire le contrat section d’Etherscan qu’il vous donne.

Sinon, vous pouvez utiliser oneclickdapp et ajoutez simplement l’adresse du contrat et l’ABI. Vous pouvez trouver l’ABI dans le construire/contrats dossier. Rappelez-vous simplement que ce n’est pas tout le fichier qui est l’ABI, juste la section qui dit AIDER.

Une fois que nous avons créé nos NFT, nous devons leur donner un jetonURI. Les TokenURI sont la norme pour montrer les données des NFT au monde. Cela facilite le stockage d’éléments tels que des images, car nous n’avons pas à gaspiller le gaz de les ajouter à la chaîne.

Les URI du jeton représente une URL ou un autre identifiant unique, et c’est un .json fichier avec quelques paramètres.

{

    "name": "Name for it ",

    "description": "Anything you want",

    "image": "https://ipfs.io/ipfs/HASH_HERE?file.png",

    "attributes": [...]

}


Maintenant, nous allons stocker ces images et métadonnées dans IPFS. Tu auras besoin:

  1. IPFS
  2. Compagnon IPFS
  3. Pinata

Le compagnon IPFS nous permet de visualiser les données IPFS de manière native dans nos navigateurs comme Brave ou Chrome. Et Pinata nous permet de conserver nos fichiers IPFS même lorsque notre nœud est en panne (ne vous inquiétez pas pour le moment). Vous saurez que le compagnon IPFS fonctionne si vous cliquez sur ce lien dans votre navigateur : https://ipfs.io/ipfs/QmTgqnhFBMkfT9s8PHKcdXBn1f5bG3Q5hmBaR4U6hoTvb1?filename=Chainlink_Elf.png

Et ce qui suit s’affiche :

Elfe à mailles losangées
Elfe à mailles losangées

Ajoutez votre image à IPFS

Une fois que notre nœud IPFS est opérationnel, nous pouvons commencer à y ajouter des fichiers. Nous voulons d’abord télécharger l’image de notre NFT. Rendez-vous dans la section « fichiers » de votre installation IPFS.

Fichiers IPFS
Fichiers IPFS

A quoi ressemble ce personnage de D&D ? Ajoutez-le à votre nœud IPFS, puis « Épinglez-le ». Pour l’instant, n’hésitez pas à épingler une image vierge ou quelque chose de stupide.

Ajoutez votre fichier de métadonnées à IPFS

Ensuite, vous voudrez ajouter votre objet JSON de métadonnées à IPFS. Vous devrez obtenir votre nom et vos attributs à partir de votre jeton déployé. Nous avons fait une partie du travail pour vous dans le créer-métadonnées.js scénario. Cours juste

truffle exec scripts/create-metadata.js --network rinkeby 


Et vos métadonnées apparaîtront dans le métadonnées dossier. Il a juste besoin de l’URL de l’image maintenant ! Les métadonnées sont les nombres aléatoires et les statistiques que nous avons créés en utilisant le VRF à maillons de chaîne. Maintenant, nous obtenons le CID de l’image épinglée que nous avons créée et l’ajoutons à notre fichier JSON de métadonnées, puis nous ajoutons également ce fichier à IPFS et nous l’épinglons là ! Cela ressemblera à quelque chose comme ceci :

Le Chainlink Elf JSON
Le Chainlink Elf JSON

Pinata

Si notre nœud IPFS tombe en panne ou si nous éteignons notre ordinateur, nous ne pourrons pas extraire nos métadonnées, nous avons donc besoin d’un moyen de les garder épinglés et de faire en sorte que d’autres nœuds hébergent les données. C’est ici que Pinata entre. Ne vous inquiétez pas, c’est gratuit ! Cela aidera simplement à maintenir les données même lorsque notre nœud IPFS est en panne. Nous copions notre CID de notre fichier de métadonnées Image et JSON, et l’ajoutons à notre compte Pinata. L’inscription prend quelques secondes.

Pinata

Si notre nœud IPFS tombe en panne ou si nous éteignons notre ordinateur, nous ne pourrons pas extraire nos métadonnées, nous avons donc besoin d’un moyen de les garder épinglés et de faire en sorte que d’autres nœuds hébergent les données. C’est ici que Pinata entre. Ne vous inquiétez pas, c’est gratuit ! Cela aidera simplement à maintenir les données même lorsque notre nœud IPFS est en panne. Nous copions notre CID de notre fichier de métadonnées Image et JSON, et l’ajoutons à notre compte Pinata. L’inscription prend quelques secondes.z

Copier le CID
Copier le CID

Ce fichier json de métadonnées va être notre jetonURI, nous allons donc modifier notre set-token-uri.js avec le ID de jeton du NFT auquel nous donnons une image et en ajoutant le tokenURI ipfs.

Ensuite, nous l’exécutons avec :

truffle exec scripts/set-token-uri.js --network rinkeby


Maintenant, nous pouvons obtenir l’adresse de notre NFT et nous rendre sur le marché OpenSea testnet pour voir si nous l’avons fait correctement. Si c’est fait correctement, ça ressemblera à quelque chose comme ça. Nous devrons d’abord créer un compte avec OpenSea.

Voici le lien pour ajouter votre contrat NFT testnet à visualiser sur opensea. Ensuite, vous pouvez vous mettre au travail en vendant votre NFT !

Prochaines étapes

Et nous devrions être prêts ! Nous avons couvert BEAUCOUP d’informations ici, alors assurez-vous de contacter notre Discorde si vous avez des questions. La communauté des ingénieurs de contrats intelligents et de Chainlink est énorme, et de nombreuses personnes brillantes se réunissent pour mettre les NFT et les contrats intelligents sous les feux de la rampe. Discord est donc également un endroit idéal pour rencontrer d’autres personnes. Vous voudrez également consulter le programme Chainlink Builders, où vous pouvez gagner des prix intéressants pour la construction avec Chainlink !

Comme toujours, n’oubliez pas de visiter le documentation développeur et vous pouvez également vous abonner au Newsletter Chainlink pour rester à jour avec tout dans la pile Chainlink.

Si vous avez appris quelque chose de nouveau ici, si vous voulez montrer ce que vous avez construit ou développé une interface pour certaines des mises en dépôt de démonstration, assurez-vous de le partager sur Twitter, Discorde, ou Reddit, et hashtag vos dépôts avec #chainlink.

Site Internet | Twitter | Discorde | Reddit | Youtube | Télégramme | Événements | GitHub | Prix ​​Flux | DéFi

Related articles

NeftyBlocks | NFT Marketplace pour habiliter les créateurs et …

CONTINUER → NeftyBlocks est un marché convivial pour acheter, vendre et créer des objets de collection numériques. Découvrez la puissance des NFT aujourd’hui à l’aide d’outils communautaires.

Learn More

Comment transférer un NFT : guide étape par étape pour le faire correctement

CONTINUER → Que vous ayez déjà sauté dans le train NFT ou que vous fassiez simplement des recherches avant de plonger votre orteil dans l’eau, l’une des choses les plus importantes que vous devrez savoir est comment transférer correctement un NFT (et en toute sécurité). Après tout, c’est le monde de la cryptographie, et il […]

Learn More

Options de frappe NFT avancées : comment frapper traditionnellement

CONTINUER → Le monde des NFT regorge de possibilités, même en ce qui concerne les options de frappe. Mintable offre un certain nombre d’options pour frapper vos NFT, l’option la plus courante et la plus populaire étant la frappe sans gaz, quelque chose dont nous avons déjà parlé : Mintable se débarrasse des frais d’essence : […]

Learn More