Создание NFT в сети полигонов с помощью Truffle и Infura

Создание NFT в сети полигонов с помощью Truffle и Infura

16 мая 2022 г.


Введение


Популярность невзаимозаменяемых токенов (NFT) резко возросла за последний год. И с использованием NFT для искусства, PFPs, брендов стиля жизни, спорта, игр, [метавселенной]. (https://pages.consensys.net/nfts-the-metaverse-ready-for-take-off) и многое другое, они не исчезнут в ближайшее время. Но нынешнее состояние NFT имеет несколько проблем — в частности, майнинг на Ethereum может быть непомерно дорогим, а метаданные, лежащие в основе этих NFT, часто централизованы.


В этой статье мы рассмотрим один из способов решения этих проблем путем создания и развертывания NFT в сети полигонов и использования IPFS для хранения метаданных. В нашем примере мы будем использовать Truffle в качестве среды разработки и Infura для подключения и взаимодействия с блокчейном. и ИПФС.


Краткий обзор NFT


Взаимозаменяемые токены — это криптографические токены, которые можно обменять на любой другой такой же токен (1 == 1). К ним относятся криптовалюты, такие как биткойн (BTC) или ETH. Один биткойн точно такой же, как и любой другой биткойн.


Напротив, NFT не взаимозаменяемы — один токен нельзя заменить другим, и они могут иметь различные значения (1 != 1). NFT — это неоспоримое представление цифровой собственности. Его можно использовать для представления любой цифровой собственности, такой как изображения, видео, музыка и многое другое.


NFT на Ethereum и втором уровне


Большинство NFT создаются в сети Ethereum Network, поскольку это обеспечивает максимальное чувство безопасности и децентрализации. Однако для обычного человека существует серьезная проблема: транзакции на уровне 1 сети Ethereum обходятся дорого.


В течение 2021 года популярность приобрели несколько решений этой проблемы. Решения уровня 2, такие как Arbitrum, zkSync и Polygon Network здесь, чтобы сделать его более удобным для пользователя. Плата за транзакции в этих сетях составляет лишь часть того, что было бы на уровне 1, и в большинстве случаев значительно быстрее.


Еще одна текущая проблема с NFT заключается в том, что содержащиеся в них метаданные не всегда хранятся децентрализованно. Если организация, размещающая метаданные, исчезнет, ​​исчезнет и ценность вашего NFT. Лучшее решение — разместить метаданные с помощью глобальной одноранговой файловой системы, такой как InterPlanetary File Storage (IPFS).


Сочетание таких технологий, как Polygon и IPFS, создает экономически эффективный метод развертывания и хранения NFT более децентрализованным и постоянным способом. Хотя мы могли бы использовать службы без кода, такие как предоставляемые ConsenSys, гораздо интереснее развернуть их самостоятельно, и вы получите лучшее понимание того, как все это работает за кулисами.


Итак, давайте посмотрим, как вы можете создать и развернуть NFT в сети полигонов. Мы будем использовать Truffle в качестве среды разработки и Infura для подключения и взаимодействия с блокчейном, а также для хранения метаданных с помощью IPFS.


Перед развертыванием мы проверим локальный экземпляр блокчейна с помощью Ganache. Когда он будет готов к запуску, мы выполним развертывание в тестовой сети Polygon Mumbai и проверим NFT на OpenSea, самой популярной в мире платформе NFT.


Проект


Чему вы научитесь


  • Загрузите изображение NFT и метаданные в IPFS через Infura

  • Настройте Polygon Network в MetaMask и получите средства для тестирования

  • Настроить среду разработки Truffle

  • Напишите смарт-контракт NFT

  • Тестовое развертывание локально с помощью Ganache.

  • Развертывание в тестовой сети Polygon с помощью консоли Truffle и Infura.

  • Проверьте NFT на opensea.io

Что тебе понадобится


  • NodeJS/NPM — установка и управление пакетами

  • Truffle - среда разработки

  • Ganache — локальный экземпляр блокчейна для тестирования

  • [Учетная запись Infura] (https://infura.io/) — используется для взаимодействия с IPFS и Polygon Networks.


Дополнительные ресурсы









Настройка учетных записей


Прежде чем мы перейдем к интересным частям, таким как сборка и тестирование, давайте настроим наши учетные записи и поставим все на свои места. Это гарантирует, что остальная часть процесса пройдет гладко.


Получить учетную запись Infura


Infura — поставщик узлов и API Ethereum. Это позволит нам легко подключиться к сети полигонов, а также предоставит простой в использовании метод использования IPFS.


Первое, что нам нужно сделать, это зайти на infura.io и создать бесплатную учетную запись. После проверки нашего адреса электронной почты мы можем получить доступ к панели управления, где мы можем создавать новые проекты. Однако полигональная сеть не включена по умолчанию.


Мы можем добавить Polygon в наш план, выбрав вкладку «Дополнения» в левой части экрана и прокрутив вниз до «Сетевые дополнения». Затем мы выбираем «Polygon PoS Add-On» и следуем подсказке, чтобы добавить его.


Теперь мы готовы создать новый проект. Вернемся к панели инструментов и нажмем кнопку «Создать новый проект». Мы выберем Ethereum в качестве продукта и назовем наш проект Polygon-NFT.


После того, как наш проект создан, нужно отметить несколько вещей:


  • Идентификатор проекта

  • Секрет проекта

  • Выбор конечных точек

  • Ссылка на нашу конечную точку

Давайте изменим нашу конечную точку с MAINNET на POLYGON MUMBAI, которая является тестовой сетью Polygon. Наша ссылка на конечную точку изменится. Значения на этой странице понадобятся нам позже, а пока мы закончили со страницей проекта.



IPFS через Infura


Поскольку мы уже находимся в нашей учетной записи Infura, давайте продолжим и создадим еще один проект. Это будет для использования IPFS для хранения изображения и метаданных нашего NFT. На этот раз, когда мы создадим новый проект, мы выберем IPFS в качестве продукта. Давайте назовем это Polygon-NFT-Metadata.


Для следующих шагов нам понадобится идентификатор проекта, секрет проекта и URL-адрес конечной точки, но сначала нам нужно изображение для нашего NFT.


![Просто щелкните правой кнопкой мыши и сохраните это на свой компьютер;)]


Не стесняйтесь использовать свое собственное изображение в будущем. OpenSea рекомендует размер изображения 350 x 350 пикселей.


Теперь давайте загрузим изображение в IPFS!


Используя командный терминал, мы перейдем в папку, где хранится наше изображение.


Чтобы загрузить изображение, введите следующую команду:


``` ударить


curl -X POST -F file=@myfile \ -u "PROJECT_ID:PROJECT_SECRET" \


"https://ipfs.infura.io:5001/api/v0/добавить"


Примечание:


  • @myfile должно быть именем файла изображения в текущей папке. Итак, в нашем случае @polygon-nft.jpg.

  • PROJECT_ID и PROJECT_SECRET будут ключами, указанными в настройках нашего проекта Infura.

Вывод команды должен выглядеть примерно так:



Наиболее важной частью вывода будет наш «Хэш». Мы действительно можем убедиться, что изображение было успешно загружено, вставив этот хеш в следующий URL-адрес: https://ipfs.io/ipfs/YOUR_HASH_HERE


Важно отметить, что Infura по умолчанию прикрепляет наши данные к IPFS. Если мы когда-нибудь захотим удалить элемент из IPFS, нам нужно открепить его. Теперь, когда наше изображение хранится в IPFS, давайте также сохраним метаданные. Согласно стандартам OpenSea, нам нужны наши метаданные в формате JSON, например:


```json


"name": "Мой сладкий многоугольник NFT",


"description": "Наш удивительный NFT развернут в сети Polygon",


"изображение": "ipfs://ВАШ_ХЭШ_ЗДЕСЬ"


Итак, давайте создадим новый текстовый файл в той же папке на нашем локальном компьютере, что и наш образ NFT. Для этого мы можем использовать любой текстовый редактор; это не должно быть чем-то вычурным.


Мы добавим метаданные в том же формате, что и выше. Однако вместо использования YOUR_HASH_HERE мы вставим фактический хеш для нашего изображения, которое мы только что проверили. Мы сохраним файл как nft-metadata.json. Нам также нужно убедиться, что после последнего элемента в нашем файле JSON нет запятой. Если есть запятая, то OpenSea не будет правильно отображать NFT.


Теперь мы можем добавить этот файл в IPFS, используя ту же команду, что и в прошлый раз; нам просто нужно заменить имя файла на @nft-metadata.json.


Превосходно! Теперь у нас есть наши метаданные, прикрепленные к IPFS, в которых есть ссылка, указывающая на наше уже закрепленное изображение. Мы скопируем хэш в выводе, чтобы использовать его позже.


Настройка метамаски


Чтобы взаимодействовать с сетью Polygon и оплачивать комиссию за транзакции, нам потребуется настроить кошелек Web3. Для этого мы будем использовать MetaMask. Он устанавливается как расширение для браузера и позволяет нам подключаться к децентрализованным приложениям (dApps).


Перейдем к metamask.io и загрузим расширение для нашего браузера. При использовании криптокошелька, такого как MetaMask, рекомендуется понимать безопасность кошелька.


Remember: Никогда никому не сообщайте свою исходную фразу! Любой, у кого есть ваша сид-фраза, может снять ваши токены.


Нам нужно будет использовать исходную фразу из 12 слов при настройке нашего проекта Truffle. Поэтому обязательно запишите это и сохраните на потом. После того, как мы установим MetaMask и откроем его на панели инструментов, нам нужно добавить Polygon в раскрывающийся список Networks.



Когда мы щелкаем раскрывающийся список, он показывает кнопку для добавления новых сетей в список. Итак, мы нажимаем кнопку «Добавить сеть» и [добавляем и основную сеть Polygon, и тестовую сеть Mumbai] (https://docs.polygon.technology/docs/develop/metamask/config-polygon-on-metamask/) .


Нам нужно будет ввести следующую информацию:


Тестнет Мумбаи


Сетевое имя: Мумбаи (полигон тестовая сеть)


Новый URL-адрес RPC: https://rpc-mumbai.maticvigil.com/


Идентификатор цепи: 80001


Символ валюты: MATIC


URL-адрес обозревателя блоков: <https://mumbai.polygonscan.com/](https://mumbai.polygonscan.com/)


Полигон Основная сеть


Сетевое имя: Polygon Mainnet


Новый URL-адрес RPC: https://polygon-rpc.com/


Идентификатор цепи: 137


Символ валюты: MATIC


URL-адрес обозревателя блоков: <https://polygonscan.com/](https://polygonscan.com/)


Теперь у нас есть полигональная сеть, добавленная в нашу метамаску, но если мы переключимся на Мумбайскую тестовую сеть, MATIC не будет! Давайте изменим это. Нам нужно будет скопировать адрес нашего кошелька, который указан под именем нашей учетной записи. Он начинается с 0x…


Далее мы перейдем к https://faucet.polygon.technology/, сборщику, предоставляющему тестовые средства для разработки. Нам нужно выбрать Mumbai Network, а затем вставить наш адрес в текстовое поле. Как только мы нажмем «Отправить», мы должны увидеть несколько токенов MATIC в нашем кошельке MetaMask через минуту или две.


Примечание: Если у вас есть несколько учетных записей в кошельке MetaMask, Truffle по умолчанию использует первую из них. Поэтому обязательно добавьте тестовые токены MATIC в первую учетную запись в вашем списке.


Теперь, когда мы загрузили наш кошелек несколькими тестовыми токенами, мы готовы двигаться дальше.


Установить трюфель и ганаш


Трюфель


Truffle — это среда разработки, которая предоставляет инструменты, значительно упрощающие создание блокчейна. Чтобы установить его через командную строку, нам понадобится NodeJS v8.9.4 или новее и диспетчер пакетов Node (npm). Если он еще не установлен, перейдите по этой ссылке.


Как только он будет установлен на нашем компьютере, мы можем установить Truffle с помощью этой команды в терминале:


``` ударить


npm установить -g трюфель


После этого мы можем ввести команду «truffle version», чтобы убедиться, что она установлена ​​правильно. Если есть какие-либо ошибки, обязательно добавьте модули npm в свой путь.


Ганаш


Далее мы установим Ganache, локальный экземпляр блокчейна, используемый для тестирования перед развертыванием в тестовой сети Мумбаи.


У Ganache есть версия с графическим интерфейсом, которую можно скачать здесь, но мы будем использовать терминальную версию для остальной части этого руководства. Его можно установить с помощью этой команды:


``` ударить


npm установить ганаш --global


Опять же, мы можем проверить правильность установки, проверив версию: ganache --version


Настройка нашего проекта


Теперь, когда наши учетные записи настроены и все установлено правильно, давайте начнем собирать все это вместе. Первый шаг — перейти в нашем терминале туда, где мы хотим создать наш проект, и создать новый каталог.


``` ударить


mkdir полигон-nft-проект && cd полигон-nft-проект


Одна невероятно полезная особенность Truffle заключается в том, что они предлагают полный набор «boxes» для быстрого начала работы. По сути, это шаблоны, которые включают в себя полезные модули, готовые смарт-контракты, интерфейсные представления и многое другое. Для этого проекта мы будем использовать [Polygon Box] (https://trufflesuite.com/boxes/polygon/) от Truffle. Установка проста; нам просто нужно ввести эту команду:


``` ударить


трюфель распаковать полигон


После установки мы видим несколько новых файлов в папке нашего проекта. Наиболее важными из них, с которыми мы будем работать, являются файл README.md, файл truffle-config.polygon.js, файл 1_deploy_simple_storage.js в папке migrations и файлы SimpleStorage.sol. , который можно найти в папке contracts.


Скорее всего, вы увидите папку ethereum и polygon в разделе contracts. Это связано с тем, что обычно, когда проект развертывается в Polygon, его также следует развертывать в Ethereum, чтобы пользователи могли легко соединять свои активы туда и обратно. Мы можем удалить контракты SimpleStorage.sol, так как мы не будем их использовать.


Быстро просмотрев файл README.md, мы видим, что для развертывания в Polygon Network нам нужно будет добавить две вещи:


  1. Мнемоническая фраза (сид-фраза) кошелька, который мы используем

  1. Идентификатор проекта Infura

Мы хотим сохранить их в файле .env и убедиться, что он добавлен в наш .gitignore, чтобы мы случайно не загрузили эти секреты при сохранении нашего проекта в общедоступном репозитории.


Загрузка Polygon Truffle Box также установила для нас пакет .dotenv. Все, что нам нужно сделать, это создать файл .env в нашей корневой папке.


Мнемоническую фразу для нашего кошелька можно найти в настройках MetaMask под заголовком «Безопасность и конфиденциальность». Идентификатор проекта можно найти под заголовком «Ключи» в настройках нашего проекта Infura. Наш файл .env будет выглядеть примерно так:


```javascript


MNEMONIC="ваши двенадцать слов здесь..."


INFURA_PROJECT_ID="ID проекта # здесь"


Следующее, что нам нужно сделать, это обновить Truffle, чтобы использовать последнюю версию Solidity. В нашем файле truffle-config.polygon.js мы можем добавить версию компилятора, которую хотим использовать.


В разделе компиляторы в фигурных скобках solc мы добавим следующее: версия: «0.8.11» (последняя версия Solidity на момент написания этой статьи).


Это должно выглядеть так:


```javascript


// Настройте свои компиляторы


компиляторы: {


соль: {


версия: "^0.8.11"


Примечание: Если вы не удалили контракты SimpleStorage.sol, вам потребуется обновить их версию Solidity для правильной компиляции. Просто измените строку pragma на следующую: pragma solidity >=0.4.21 <0.9.0;


Последней частью подготовительной работы является установка библиотеки контрактов OpenZeppelin, так как мы будем импортировать несколько контрактов. Мы можем установить его, набрав эту команду в корневом каталоге нашего проекта:


``` ударить


npm установить @openzeppelin/contracts


Мы используем библиотеку OpenZeppelin, чтобы сделать наш смарт-контракт проще и безопаснее. Контракты, которые мы будем использовать, прошли тщательный аудит безопасности, и это гарантирует, что мы придерживаемся отраслевого стандарта для NFT.


Когда наш проект настроен правильно, мы готовы перейти к самой важной части… Создание NFT!


Смарт-контракт


Мы откроем предпочитаемый нами редактор кода из корневой папки нашего проекта. (Я использую vscode, поэтому команда code .). Создайте новый файл в папке contracts с именем PolygonNFT.sol.


Примечание: Если вам нужно освежить знания языка программирования Solidity, ознакомьтесь с моей Серией Основы Solidity.


Мы будем использовать следующий смарт-контракт для нашего NFT:


```javascript


// SPDX-идентификатор лицензии: MIT


прочность прагмы ^0,8,11;


// Импорт контрактов OpenZeppelin


импортировать "@openzeppelin/contracts/token/ERC721/ERC721.sol";


импортировать "@openzeppelin/contracts/utils/Counters.sol";


импортировать "@openzeppelin/contracts/access/Ownable.sol";


// Объявляем наш контракт и наследуем от контрактов OpenZeppelin ERC721 и Ownable


контракт PolygonNFT соответствует стандарту ERC721, может принадлежать {


// Помощники для безопасного подсчета и преобразования данных в строки


использование счетчиков для Counters.Counter;


использование строк для uint256;


// Переменная состояния для хранения текущего идентификатора токена


Counters.Counter частные _tokenIds;


// Сопоставить идентификаторы токенов с URI токена


сопоставление (uint256 => строка) частных _tokenURI;


// ERC721 требует имя для коллекции NFT и символ


конструктор() ERC721("PolygonNFT", "PNFT") {}


// Установить URI (метаданные) для tokenId


function _setTokenURI(uint256 tokenId, string memory _tokenURI)


внутренний


виртуальный


_tokenURIs[tokenId] = _tokenURI;


// Возвращаем URI токена — требуется для корректного просмотра в OpenSea


tokenURI функции (uint256 tokenId)


публичный


Посмотреть


виртуальный


отменить


возвращает (строковая память)


require(_exists(tokenId), "Токен не существует");


строковая память _tokenURI = _tokenURIs[tokenId];


вернуть _tokenURI;


// Отчеканить NFT по предоставленному адресу, используя предоставленный URI метаданных


// Только адрес кошелька, который развернул этот контракт, может вызывать эту функцию


функция монетного двора (адрес получателя, строковая память uri)


публичный


тольковладелец


возвращает (uint256)


_tokenIds.increment();


uint256 newItemId = _tokenIds.current();


_mint (получатель, newItemId);


_setTokenURI(newItemId, uri);


вернуть новыйItemId;


Довольно коротко, правда?! Это прекрасная вещь в компонуемости Web3. OpenZeppelin выполняет здесь большую часть тяжелой работы со своим стандартом ERC721.


По сути, мы просто определяем коллекцию и символ NFT, предоставляем метаданные NFT через функцию _setTokenURI(), объединяем их с нашей функцией `mint(), а затем предоставляем OpenSea или кому-либо еще способ получить Метаданные NFT через нашу функцию tokenURI().


Тестирование развертывания с помощью Ganache


Развертывание в блокчейне довольно простое, но прежде чем мы сможем это сделать, нам нужно изменить файл 1_deploy_simple_storage.js в папке migrations. Нам просто нужно заменить каждый экземпляр SimpleStorage тем, что мы назвали нашим смарт-контрактом NFT. В нашем случае: PolygonNFT. Мы также должны переименовать файл в 1_deploy_polygon_nft.js, чтобы избежать путаницы.


Наш файл миграции теперь должен выглядеть так:


```javascript


const PolygonNFT = артефакты.require("PolygonNFT");


module.exports = функция (развертыватель) {


deployer.deploy(PolygonNFT);


Прежде чем развертывать наш проект в действующей цепочке блоков, обычной практикой является тестирование его на локальном экземпляре цепочки блоков. Для этого мы будем использовать Ганаш. В новом окне терминала мы будем использовать эту команду, чтобы запустить его:


``` ударить


ганаш


Терминал должен вывести несколько доступных учетных записей, их закрытые ключи и т. д.


Чтобы развернуть наш проект в Ganache, откройте исходное окно терминала. В корневом каталоге нашего проекта набираем команду:


``` ударить


миграция трюфелей --config=truffle-config.polygon.js --network=development


Поскольку в нашем проекте два файла конфигурации, нам нужно указать, какой из них использовать. Truffle будет использовать файл truffle-config.js по умолчанию. После нажатия Enter мы видим, что Truffle компилирует наши контракты, а затем начинает миграцию. Если все пройдет успешно, вы получите квитанцию ​​о транзакции, которая будет выглядеть примерно так:


консоль трюфеля --config=truffle-config.polygon.js --network=development


Обратите внимание на адрес договора


Теперь, когда наш контракт успешно перенесен в наш локальный экземпляр блокчейна, мы можем использовать Truffle Console взаимодействовать с ним. Консоль Truffle — это мощный инструмент, который позволяет нам использовать javascript для прямого взаимодействия с нашим контрактом без необходимости настраивать внешний интерфейс. Чтобы использовать его, введите команду:


``` ударить


консоль трюфеля --config=truffle-config.polygon.js --network=development


Обратите внимание, как командная строка меняется на truffle(development)>. Теперь мы готовы начать взаимодействие с нашим смарт-контрактом.


Во-первых, нам нужно получить экземпляр нашего контракта. Скопируйте адрес контракта из квитанции о транзакции, чтобы использовать его в этой строке кода:


``` ударить


let instance = await PolygonNFT.at("YOUR_CONTRACT_ADDRESS_HERE")


Он вернет undefined, но если мы введем «экземпляр», он должен вывести наш ABI контракта. Теперь мы можем вызвать функцию монетного двора. Нам понадобится контрактный адрес, по которому можно отправить NFT и наш URI IPFS ранее в формате: ipfs://YOUR_HASH_HERE


``` ударить


ожидание instance.mint("АДРЕС_ВАШЕГО_КОШЕЛЬКА", "ВАШ_МЕТАДАТА_URI")


Важно отметить, что функция монетного двора вызывается по адресу, который развернул контракт, потому что это тот, с которым мы вошли в консоль Truffle по умолчанию. Адрес, который мы разместили в приведенном выше коде, является получателем NFT.


Если все прошло хорошо с нашим кодом выше, мы не должны увидеть никаких ошибок после того, как нажмем Enter! Теперь мы знаем, что наш контракт работает, и мы можем создать из него NFT. К сожалению, поскольку это локальный экземпляр блокчейна, у нас нет OpenSea или PolygonScan для проверки того, что
NFT действительно существует. Для этого мы развернемся в тестовой сети Мумбаи.


Развертывание в тестовой сети Polygon


Процесс развертывания в Mumbai Testnet очень похож на запуск в нашем экземпляре блокчейна Ganache. Нам просто нужно выйти из консоли Truffle, дважды нажав ctrl+c, а затем выполнить те же действия, что и выше. Единственная разница в том, что мы заменим network=development на polygon_infura_testnet.


Прежде чем двигаться вперед, нам нужно убедиться, что наша мнемоническая фраза и идентификатор проекта правильно настроены в нашем файле .env, иначе следующие шаги не будут работать. (См. шаги в разделе «Настройка нашего проекта».) Теперь наши команды будут выглядеть так:


``` ударить


миграция трюфеля --config=truffle-config.polygon.js --network=polygon_infura_testnet


Миграция займет немного больше времени, чем наш экземпляр Ganache. По завершении он выведет квитанцию ​​​​транзакции, похожую на нашу последнюю. На этот раз мы можем убедиться, что наш контракт был успешно перенесен в тестовую сеть Мумбаи, введя адрес нашего контракта в __https://mumbai.polygonscan.com/__address/ ВАШ_АДРЕС_ЗДЕСЬ



Превосходно! Наш контракт действует в тестовой сети Мумбаи! Теперь давайте взаимодействуем с ним и создадим наш NFT!


Мы получим доступ к консоли Truffle, используя те же команды, что и раньше, снова заменив network= development на polygon_infura_testnet.


``` ударить


консоль трюфеля --config=truffle-config-polygon.js --network=polygon_infura_testnet


Получите экземпляр нашего контракта, используя адрес контракта, который был выведен в квитанции о транзакции Mumbai Testnet:


``` ударить


let instance = await PolygonNFT.at("YOUR_CONTRACT_ADDRESS_HERE")


И теперь, на данный момент мы строим всю эту статью! Отправьте наш NFT на желаемый адрес, используя наш IPFS URI в формате: ipfs://YOUR_HASH_HERE


``` ударить


ожидание instance.mint("АДРЕС_ВАШЕГО_КОШЕЛЬКА", "ВАШ_МЕТАДАТА_URI")


Если ошибок нет, мы можем снова проверить наш контракт на mumbai.polygonscan и увидеть, что была вызвана наша функция mint()! На этот раз мы можем убедиться, что наш NFT действительно существует, проверив его в OpenSea.


Подтвердите наш NFT на OpenSea


Мы можем легко проверить наш новый NFT в OpenSea, скопировав адрес нашего контракта в строку поиска по адресу https://testnets.opensea.io/. Адреса Ethereum имеют [две версии] (https://support.mycrypto.com/general-knowledge/ethereum-blockchain/ethereum-address-has-uppercase-and-lowercase-letters/), одна из которых имеет контрольную сумму а тот что нет. Разница в том, что версия без контрольной суммы написана строчными буквами. Возможно, нам потребуется использовать версию без контрольной суммы, чтобы найти наш NFT в OpenSea. Мы можем получить этот адрес, щелкнув Txn Hash на mumbai.polygonscan, а затем скопировав адрес напротив «Interacted With (To):»


(Ваш контрактный адрес будет другим)


Если наши метаданные были введены правильно, теперь мы должны увидеть нашу прекрасную новую NFT вживую на OpenSea!



Вывод


Поздравляем! Вы успешно развернули NFT в тестовой сети Polygon Mumbai! Вы загрузили свой образ NFT и метаданные в IPFS с помощью API Infura, настроили свой проект Truffle и написали смарт-контракт для создания NFT, протестировали локальное развертывание с помощью Ganache, развернули в тестовой сети Polygon с помощью Truffle, Infura и MetaMask и, наконец, подтвердил ваш NFT на OpenSea.


Теперь у вас есть знания для развертывания в основной сети Polygon, просто убедитесь, что у вас есть настоящие токены MATIC в вашем кошельке MetaMask. Кроме того, при развертывании обязательно используйте network=polygon_infura_mainnet вместо polygon_infura_testnet.


Следующими вашими шагами будет развертывание в основной сети Ethereum, чтобы иметь возможность соединить ваш NFT со 2-го уровня на 1-й. Это тема для другой статьи, поэтому обязательно ознакомьтесь с [Документацией по Polygon] (https://docs). .polygon.technology/docs/develop/ethereum-polygon/getting-started) тем временем.


Спасибо, что следовали этому руководству! Берегите себя и счастливого строительства!


(Код этого проекта можно найти здесь: https://github.com/paul-mcaviney/polygon-nft-project)


Также опубликовано здесь



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE