Il n’y a vraiment rien de spécial ici dont vous devez vous soucier. J’ai utilisé une configuration OpenZeppelin typique qui n’a pratiquement pas de code personnalisé ici. Au cas où vous voudriez un passe-partout pour commencer, voici:
Je recommande d’utiliser un casque pour le déployer, car vous pouvez également l’utiliser pour vérifier votre contrat assez facilement (plus facile que j’ai eu avec la truffe). Pour cela, j’ai utilisé @nomiclabs/hardhat-etherscan
qui nécessite de créer une clé API etherscan, mais cela peut se faire très facilement et librement ici, tant que vous avez un compte etherscan : https://etherscan.io/myapikey
En ce qui concerne la configuration de votre casque, vous avez également besoin de très peu de choses spéciales ici. Voici ce que j’utilise, j’ai vraiment seulement ajouté cette importation d’etherscan en haut, qui enregistre le verify
commande, mais c’est fondamentalement ça.
Je recommande de faire ceci et l’étape suivante de télécharger ces deux dossiers sur Pinata (ou votre portail IPFS de votre choix) car l’URI de base que vous transmettez à votre constructeur de contrat lors du déploiement de votre contrat sera l’URL ipfs de votre dossier JSON, et tous ces fichiers auront image
attributs qui pointent vers des images dans le dossier IPFS avec toutes les images elles-mêmes. Donc, vous pouvez vraiment le faire quand vous le souhaitez, vous pouvez définir votre URI de base sur la chaîne aléatoire que vous voulez vraiment, juste au moment où vous voulez publier sur opensea, changez-le probablement en votre dossier JSON IPFSURI ou rien ne fonctionnera évidemment. Cela étant dit, passons au téléchargement d’images sur Pinata.
Cette étape est d’une simplicité trompeuse. Fondamentalement, ce que vous voulez faire est de mettre tous vos éléments d’image dans un dossier et de télécharger ce dossier entier lui-même sur Pinata. La raison pour laquelle vous voulez faire cela est que lorsque vous téléchargez un dossier entier sur Pinata, cela crée un CID ou un hachage d’ID de contenu qui est un hachage résultant du contenu réel de tous les fichiers de votre dossier. Cela vous permettra de faire quelque chose comme ipfs://<your cid>/1.png
ou tout autre fichier que vous souhaitez référencer dans ce dossier. Ce n’est pas aussi utile pour votre dossier d’images, car votre JSON sera celui pointant directement vers chaque fichier, donc cela n’a vraiment pas d’importance, mais autant le garder cohérent.
Retour au téléchargement sur Pinata. Voici à peu près les étapes que vous souhaitez effectuer :
- Mettez toutes vos images dans un dossier. Peu importe le nom du dossier, vous pouvez lui donner le nom que vous voulez plus tard.
- Accédez au tableau de bord de votre gestionnaire de broches Pinata ici : https://app.pinata.cloud/pinmanager
- Cliquez sur le bouton Télécharger
- Sélectionnez l’option « Dossier »
- Sélectionnez le dossier contenant tous les fichiers image
- À l’étape suivante, nommez-le comme vous voulez, cela n’a vraiment pas d’importance. J’ai choisi le nom de mon contrat, cas de brochette, puis pour la prochaine étape j’ai fait la même chose et j’ai juste ajouté
-json
à la fin de celui-ci afin que je sache qui était qui facilement. De plus, ils sont dans l’ordre dans la liste lors du tri par nom.
C’est tout pour télécharger des images sur Pinata. Assez facile, rendu plus difficile uniquement par mon manque de conviction pour la concision.
C’est une partie que j’ai trouvée mal décrite/documentée en ligne. Et c’est également la clé de voûte pour connecter réellement vos jetons de contrat à vos actifs IPFS.
Afin de comprendre cette étape, vous devez savoir deux choses.
- Quand opensea récupère les données d’un jeton, il appelle
tokenURI
sur votre contrat avec l’identifiant indiqué. Si vous naviguez vers cet URI dans votre navigateur, cela devrait éventuellement être un objet JSON qui respecte la spécification de métadonnées décrite par opensea. S’il s’agit d’un URI IPFS, vous aurez peut-être besoin d’une extension chrome pour le vérifier. - Ce fichier JSON n’a rien de spécial – il s’agit simplement d’un fichier qui respecte les spécifications de métadonnées d’opensea, servi via IPFS. OpenSea s’occupe de toute la récupération IPFS et de tous les trucs fantaisistes, à la fois pour le fichier JSON et pour l’image elle-même (qui a également un URI IPFS, si vous suivez ce guide).
J’imagine qu’il existe un moyen de générer automatiquement ces fichiers JSON, mais j’aime faire les choses à la main avant de dire à un ordinateur de les faire pour moi. Je dois créer de l’empathie pour nos futurs suzerains de robots.
De retour aux affaires. Tout d’abord, vous voulez créer un fichier JSON dont le nom est juste le numéro de jeton pour chaque jeton. Vous aurez donc un fichier nommé 0
ensuite 1
, 2
, 3
, Je pense que tu as la photo. Quel que soit le nombre de jetons dont vous disposez, vous avez besoin d’un fichier JSON par jeton. La raison pour laquelle vous ne pas besoin de .json
L’extension de fichier est parce que si vous essayez de télécharger l’un de ces fichiers sans extension et accédez à l’URI IPFS, vous verrez dans les en-têtes de la réponse qu’IPFS déclare automatiquement le type de contenu, donc nous gucci.
Maintenant que vous avez un fichier JSON par jeton, tous dans un dossier ensemble. Remarque : il s’agit d’un dossier différent de celui de vos ressources d’image. Je suppose que ce n’est pas nécessaire, mais cela semble mieux ainsi. Séparation des préoccupations quelque chose quelque chose quelque chose. À partir de là, vous souhaitez télécharger ce nouveau dossier sur Pinata exactement de la même manière que vous avez téléchargé votre dossier d’images. Peasy citron facile à presser, étape terminée.
C’est le bon moment pour vérifier. Comment ça va, ça va ? Si vous avez des questions, tweetez-moi @kyleholzinger, je suis toujours prêt à aider un autre développeur dans le besoin. À l’heure actuelle, vous devriez avoir deux dossiers dans votre tableau de bord du gestionnaire de broches IPFS, un avec tous vos éléments d’image et un avec tous les fichiers JSON correspondants par élément. Si vous avez cela, vous êtes bien assis. Passons aux trucs du contrat.
Après avoir téléchargé vos ressources et fichiers JSON sur IPFS, assurez-vous que lorsque vous déployez votre contrat, vous définissez le baseURI sur ipfs://<your JSON folder CID>/
. Vous n’êtes pas obligé de le faire, puisque vous avez probablement écrit un setBaseURI
méthode sur votre contrat (veuillez le faire), mais vous savez ce qu’ils disent, mesurez deux fois, déployez une fois. J’ai appris ça à la dure.
Afin de déployer votre contrat sur rinkeby, exécutez la commande suivante :
npx hardhat run scripts/run.js --network rinkeby
Je me suis simplifié la vie en créant des alias h
pour npx hardhat
, mais c’est ta vie. De plus, n’effacez pas l’historique de votre terminal après avoir exécuté cette commande.
Après avoir couru run.js
, il aurait dû cracher l’adresse de contrat de votre contrat nouvellement déployé. Afin de vérifier ce contrat sur etherscan, exécutez cette commande :
npx hardhat verify --network rinkeby "<your contract address>" "ipfs://<your json CID>/"
Cela peut prendre une seconde, mais devrait éventuellement cracher un message de réussite après une minute ou deux. Une fois qu’il est vérifié, vous pouvez aller sur rinkeby.etherscan.io et voir votre contrat vérifié à cette adresse avec tout son joli code source visible. Tu aimes le voir.
Vous n’aurez peut-être pas besoin de le faire. Assurez-vous simplement que votre baseURI
est correctement défini sur le lien IPFS vers le dossier contenant vos fichiers JSON. Je le répète, les fichiers JSON, pas vos ressources d’image. Les fichiers JSON doivent chacun être liés à l’actif d’image correspondant – l’actif de niveau supérieur demandé par opensea doit être ces données JSON pour chaque jeton.
Je suppose que vous utilisez OpenSea ici parce que c’est un peu standard, mais faites ce que vous voulez. C’est ce que je fais. Pour répertorier un projet déployé sur rinkeby sur opensea, vous devez en fait « importer » le jeton existant. C’est assez caché et se trouvait dans la page à laquelle vous arriviez lorsque vous cliquez sur « Créer », mais ce sont des bâtards cupides et ils veulent prendre tout votre argent pour cacher toutes les bonnes choses. La page pour importer votre propre jeton de contrat personnalisé ERC-721 vers OpenSea est ici : https://testnets.opensea.io/get-listed. Vous pouvez également utiliser cette page pour répertorier quelque chose sur le réseau principal, je ne sais pas pourquoi ils ne savent pas que vous souhaitez publier sur l’instance rinkeby étant donné que vous êtes sur testnets.opensea.io
mais peu importe.
Tout ce que vous faites ici est de leur donner l’adresse de votre contrat déployé, bada bing bada boom.
Vous devriez voir tous les jetons que vous avez déjà créés à partir du contrat (si vous l’avez fait, c’est-à-dire) remplir votre page de collection maintenant. Ils n’ont peut-être pas encore d’images affichées, je le teste généralement en allant sur l’un d’eux et en cliquant sur le bouton « Actualiser » en haut à droite. Si vous attendez quelques minutes et qu’il n’affiche toujours rien, essayez d’appeler tokenURI
sur votre contrat avec l’un des identifiants de jeton et en naviguant vers cet URI qu’il vous donne (quelque chose comme ipfs://lkasjdlkasjd/1
). Il doit s’agir de votre fichier JSON pour ce jeton, et si vous accédez à l’URI spécifié sous le image
attribut dans le JSON, qui devrait être l’image que vous souhaitez afficher sur opensea.
C’est à peu près tout, faites-moi savoir s’il existe un moyen plus simple de faire tout cela. Félicitations pour le déploiement de votre contrat, vous devez maintenant faire le plus dur et convaincre les gens d’aimer votre art.
Rejoindre Coinmonks Chaîne de télégramme et Chaîne Youtube en savoir plus sur le trading de crypto et l’investissement