Launch your own NFT marketplace by pressing one button. Yes, really.
Own an NFT collection? Then you're just a few clicks away from creating your own custom marketplace. No built-in fees.
Rarible

Today, we enable literally anyone who owns an Ethereum NFT collection to build their own customizable marketplace via one button. Few clicks. Zero code. Zero fees. Endless possibilities.
But first things first. If you follow our Twitter, read our newsletter or keep up with our blog, you’ve probably noticed we’re super bullish on community marketplaces.
Not in the loop in those? That’s okay, we’ll get you up to speed. A community marketplace is a customized NFT marketplace for one project’s collections. That has a few advantages:
- No fake collections: This ensures all community members buy the real deal
- Custom fees: You can set lower fees and send the proceeds to community/DAO wallets to benefit the community.
- On-brand trading experience: Buying and selling NFTs on a marketplace with the same vibe as the community—not a third-party marketplace.
- Greater decentralization: Community marketplaces exist independently from the top trading platforms, which can hypothetically go down/delist your NFTs at any point.
- Built-in liquidity: Powered by Rarible Protocol, community marketplaces automatically import sale orders and bids from OpenSea, X2Y2, LooksRare, Rarible.com, sudoswap (with more marketplaces to be added soon).
So unless you’re only looking for a quick flip, community marketplace > third-party marketplace. So far, we’ve hand-picked the projects we partner with for community marketplaces. A few of these are:
But now, we’re enabling any NFT collection owner on Rarible to build their own marketplace with NO built-in fees.
Introducing: “Create marketplace” button. It allows you to launch your own NFT marketplace in just a few clicks.
Getting started
No need to sign in because you keep at least 3 Rarible.com tabs open anyways for good luck (you do, right?). If you don’t, connect the wallet that owns the collection you want to create a marketplace for and sign in/up to Rarible.com.
Next, simply navigate to the collection and click “Create marketplace”. This button only works for collection owners, so make sure you’re connected with the right wallet.

Launching your NFT marketplace
Now it’s time for some basic paperwork. You’ll see this form:

Yes, your email address is the only required field for now and you can change everything else later via the editor. So if you own an NFT collection and an email address, you can create your custom NFT marketplace pretty much instantly.
All the fields here are self-explanatory, except for the Community fee one: This is the transaction fee your marketplace will charge on each transaction. Those fees will be sent to the wallet address you specify in the next field, so it can be the address for your community treasury or your DAO’s wallet, for instance. Rarible charges NO fee on the marketplaces created via this generator, so 100% fees go directly to the wallet affiliated with your project. Or you can even have no fees whatsoever (in that case you just need to set Community fee to 0%) — this generator is all about the freedom that Web3 provides.
After you’re done with that form and click ‘Create’, your marketplace is live!
Now to the marketplace editor, which enables you to customize your new platform. You can access the editor at any time via the three dots on the top right (see ‘Settings’).
The editor has 4 sections that enable you to customize your marketplace, starting with the General one:

As you can see, this one is all about the visuals: you can pick a theme (dark/light), base color, primary color, fonts, and upload your logo—quite a few options to make sure the marketplace nails the !vibe of your collection.
Then you have a toggle that allows you to display/hide stats (i.e. the floor price, number of items, volume)—we recommend leaving it on so that people who are considering buying in can do their due diligence.
Now to the second section, called Main page.

A quick explanation of the fields here:
- Fullscreen hero: This makes the top section of your marketplace fullscreen instead of showing additional information.
- Title: This will be the title of the tab in the browser, Google results, etc. It’s easiest to simply put the collection name, but feel free to get creative.
- Description: This goes under the headline—explain your collection (and/or marketplace) in a few words.
Next, there is Explore section:

This one is as straightforward as it gets—you only have to upload your background picture that will show up on the ‘Explore’ page of your marketplace.
Finally, the last section is for Social media links:

Here, you simply put in the socials for your collection so that people can easily find and connect with your community, be it on Twitter, Discord, or Instagram.
Your new marketplace is ready
Finish the process and… ta-da! You’ve now got your own custom marketplace on which your community can trade NFTs. When you launch it, it imports orders from all of Rarible Protocol, including sale orders and bids from OpenSea, Looksrare, X2Y2, Sudoswap Rarible.com (with more to be added soon)—that way, your community can ape in immediately.
But remember to get people to list on your marketplace so that they can trade at minimal fees (0% on the Rarible side and then whatever percent you choose to charge on behalf of your project). It’s a win-win for everyone.
Как создать свой маркетплейс для продажи NFT?
Раньше NFT были доступны лишь на специализированных площадках и торговались в узком кругу криптоэнтузиастов. В 2022 все уже слышали про NFT, они стали частью культуры. После успешных интеграций с люксовыми одежды брендами, мировые бренды стали активно внедрять NFT. В их числе McDonald’s, Samsung, Visa, Shopify, NBA, Marvel.
NFT — это не просто хайп. По сравнению с 2020 годом, объем продаж NFT вырос в 400 раз (с 33 млн. до 13 млрд долларов США). Оборот OpenSea в декабре 2021 был 3 млрд. долларов США, а всего за несколько дней января 2022 перевалил $700 млн!
Но не одним OpenSea едины. Сейчас отличное время изучать новые сценарии и схемы бизнеса с NFT. Например, платформа для создания интернет-магазинов Shopify анонсировала интеграцию NFT для своих пользователей.
Через неё бренды могут создавать и продавать NFT в своих магазинах.
Благодаря простоте и удобству использования, скорости создания eCommerce проектов — Shopify занимает лидирующие позиции в рейтингах платформ для создания интернет-магазинов. Ещё в июле 2021 года Shopify приняла решение предоставить пользователям возможность для продажи NFT-токенов.
Для многих пользователей это событие стало эпохальным. У них появилась возможность конвертировать цифровую продукцию в NFT и продавать ее без затруднений. Кроме того, теперь NFT можно покупать и продавать используя дебетовые и кредитные карты.
Теперь если вы автор и/или владелец цифровых продуктов (видео, изображения, игры, и т. д.), вы можете их продать в качестве NFT в своём магазине на Shopify.
Зачем продавать NFT на Shopify?
Продавая на своей платформе, Вы не делитесь комиссией с маркетплейсом, а также получаете полный доступ к данным о покупателях и аналитике вашей витрины NFT.
Все пользователи Shopify имеют доступ к интегрированным платежным системам. Пользователи могут продавать товары и услуги напрямую, без участия посредников и сторонних сервисов, что заметно облегчает процесс. Если вы владеете Интернет-магазином на Shopify, вы можете также принимать платежи через собственную платежную систему Shopify, Stripe, PayPal и даже платежи в криптовалюте.
Почти все эти методы поддерживает операции с токенами NFT как с цифровыми продуктами. Любой пользователь, зарегистрировавшись на платформе Shopify, может оцифровать свои продукты и выставить их на продажу.
Теперь покупать и продавать NFT можно как за криптовалюту, так и за обычные деньги (Фиат). Наличие крипто-кошелька уже не является обязательным условием для купли-продажи NFT.
Начать продавать NFT на Shopify, используя базовый набор функций, доступный по подписке Basic. Однако, если вы хотите использовать все возможности NFT, вам понадобится тариф Shopify Plus.
Для Shopify Plus-пользователей Shopify анонсировала программу NFT Beta Program. Например, чтобы мотивировать покупателей и расширить пользовательскую базу, программа предоставляет функционал:
— Раздача NFT (airdrops)
— Вознаграждения за покупки NFT
— Закрытый контент для владельцев NFT
— сертификаты подлинности (COA).
Программа доступна для Shopify Plus магазинов, зарегистрированных на территории США.
Для торговли NFT на Shopify доступны три блокчейн-платформы – Ethereum, Polygon и Flow. Иными словами, пользователь может создавать токены на любой из них и продавать их, запустив Интернет-магазин на Shopify. Без сомнения, Shopify будет расширять список интеграций, однако в данный момент доступны только эти три платформы.
Следует отметить, что Shopify не отвечает за безопасность NFT. Именно продавец принимает необходимые меры для защиты авторских прав на контент и предотвращения утечек. Читайте статьи и обзоры о том, как правильно продавать NFT с помощью Shopify и о различиях между продажей через собственные интернет-магазины (Shopify) и маркетплейсы (OpenSea).
Shopify предлагает самые разнообразные платежные сервисы. Он поддерживает более 300 криптовалют (Bitcoin, Litecoin, Ethereum и т. д.), а также более 130 официальных валют. Помимо этого, платформа поддерживает ряд электронных платежных систем, таких как:
- Shopify payment (владелец — Shopify)
- PayPal
- Authorize.net
- WorldPay
- 2CheckOut
Shopify поддерживает несколько криптовалютных сервисов:
- GoCoin
- CoinPayment.net
- Coinbase Commerce
- BitPay
В свою очередь, эти системы поддерживают огромное количество криптовалют, и вы можете продавать цифровые продукты, используя любую популярную систему.
Например, Coinbase Commerce, будучи партнером Shopify, обеспечивает безопасное взаимодействие между системой и Shopify с помощью API и делает возможными операции с использованием всех популярных криптовалют (Bitcoin, Bitcoin Cash, DAI, и т. д.) Для этого необходимо выполнить несколько простых шагов:
- Зарегистрироваться на Coinbase Commerce
- Создать API-ключ
- Добавить Coinbase Commerce в список провайдеров платежных услуг2
В этом разделе описаны шаги и процедуры, необходимые для продажи токенов NFT на Shopify (с учетом того, что вы уже знаете что такое NFT и как их создать). Вот, что вам понадобится:
Помимо классического подхода к разработке, Shopify предлагает большое количество разных шаблонов и визуальный редактор магазина.
Все ключевые элементы интернет-магазина доступны в админке с удобным интерфейсом. Настройка магазина по шаблону максимальна проста и доступна даже новичкам.
Если вы хотите сделать уникальный дизайн, кастомный функционал или успешно запустить ваш проект, можете всегда обратиться в ECORN.
Shopify предлагает собственные, а также поддерживает сторонние платежные системы. Их список вы можете найти выше, а уточнить подойдут ли они к вашему проекту — в процессе создания сайта.
Поскольку Shopify поддерживает криптовалюты, у вас есть возможность подключить платежи в криптовалюте и ориентироваться на растущую аудиторию, которая расплачивается криптокошельками.
Теперь, когда вы выбрали платежную систему, еще раз проверьте ваш сайт. Убедитесь, что выбранная тема и контент вас устраивают. Если это то, что вам нужно, можно приступать к созданию токенов NFT.
Данный этап самый сложный. Как вы помните, Shopify не несет ответственности за хранение и передачу цифровых продуктов. За безопасность и передачу продуктов покупателю отвечает продавец. Команда Shopify обращает особое внимание на то, что все NFT должны соответствовать Правилам использования платформы.
Также, Shopify не предоставляет каких-либо инструкций или советов по созданию NFT. В то же время, имеются вполне достойные сторонние источники информации о продажах NFT. Первое сообщение о продаже токена появилось в июле 2021 года, когда баскетбольная команда «Чикаго буллз» «оцифровала» свое чемпионское кольцо и продала его на Shopify в качестве NFT.
Способ реализации NFT в интернет-магазине может быть как с помощью блокчейна, так и с помощью продажи обычного цифрового товара.
Вы можете создавать и продавать NFT используя блокчейны Ethereum, Polygon и Flow. Это будет чуть сложнее и самостоятельно реализовать вряд ли получится.
Есть более упрощённые способы: приложения SendOwl (позволят продавать цифровые товары) и Foridev (используется для продажи лицензионных ключей активации).
Ведение любого бизнеса, в том числе и продаж NFT, едва ли возможно без использования эффективной маркетинговой стратегии. Планируйте эти вещи заранее, многие NFT проекты становятся виральными ещё до запуска продаж!
Используйте white-листы и airdrops — это классические инструменты для NFT проектов.
Shopify не предоставляет подробной информации о NFT или Блокчейн платформах. Однако, необходимо соблюдать правила и политику платформы, а также следить за возможными изменениями в них. К примеру, нам уже известно, что платформа поддерживает три Блокчейн-сети – Ethereum, Polygon и Flow, однако все может измениться, т.к. на этом рынке всё быстро меняется.
Если вы планируете заняться продажей NFT, вам необходимо понять принцип работы платформы, на которой вы продаёте ваш продукт. Важно разбираться в вопросах, касающихся авторских прав, и понимать разницу между разовыми и регулярными сделками. Необходимо четко и ясно обозначать условия передачи NFT. Это поможет избежать споров и конфликтов.
NFT — это крутой тренд, который не исчезнет завтра. Помимо продаж на классических платформах, появляются новые юзкейсы и бизнес модели c NFT. Продажа через Shopify — одна из них. Хотя Shopify только запускает интеграцию NFT, платформа открыта для всех желающих, а каждый месяц выходят новые Shopify Apps для NFT.
Платформа Shopify дает возможность продавать NFT качественно новым способом и помогает вам получить дополнительное преимущество перед конкурентами.
Не решились переходить на Shopify? — воспользуйтесь бесплатным пробным периодом. Если у вас возникнут вопросы — изучайте доступные материалы (они постоянно обновляются) или обращайтесь к профессиональным разработчикам: )
NFT это очень интересно!
Все что связанно с криптой, ээто интересно!
Весь смысл маркетплейса в том, что на нем есть спрос и предложение. Это как свой рынок открыть с одной лавкой, на который никто не ходит. Зато не платишь комиссию
А что статья ради рефералки на Shopify это норм для VC?
Немало торговых площадок готовы бросить вызов OpenSea в 2022
https://t.me/criptosquirell/146
Торговые площадки NFT, которые бросят вызов OpenSea в 2022
OpenSea стала ведущим рынком NFT в 2021 году с профитом 3,25 миллиарда долларов только за декабрь 2021 года, давайте посмотрим кто попытается сместить ее с трона:
Coinbase NFT
Делает ставку на элементы централизации как н.
Торговые площадки NFT, которые бросят вызов OpenSea в 2022
OpenSea стала ведущим рынком NFT в 2021 году с профитом 3,25 миллиарда долларов только за декабрь 2021 года, давайте посмотрим кто попытается сместить ее с трона:
Coinbase NFT
Делает ставку на элементы централизации как на основной фактор массового внедрения, по заявлениям компании будет одноранговой сетью (P2P) с интуитивно понятным дизайном- интерфейс (UX и UI), список ожидающих запуск платформы превысил 1,1 миллиона человек, это больше, чем база OpenSea
FTX NFT
В отличие от OpenSea и Coinbase NFT, это не P2P-платформа, то есть является централизованной, работает на основе Solana, но также поддерживает и коллекции на Ethereum.
Данные пользователей записываются и хранятся в конкретной сети, пользователи и коллекционеры в некотором смысле отказываются от права собственности
Rarible
Децентрализовання плафторма, поддержка NFT в блокчейнах Flow и Tezos, и в ближайшем будущем планируется поддержка Solana и Polygon, что делает его серьезным соперником в 2022 году
Zora
Нулевая комиссия, художники и создатели имеют больше автономии и права собственности на свои творения
Magic Eden
Низкая комиссия за транзакции- 2% дает платформе конкурентное преимущество, листинг бесплатный
Как создать nft маркетплейс
Пошаговое руководство по разработке NFT маркетплейса
Поскольку рынок невзаимозаменяемых токенов достигает огромного объема, полезно оглянуться на первые дни NFT и вспомнить проблемы, обнаруженные Cryptokitties.
Cryptokitties были первым примером потенциального массового внедрения NFT, созданным командой Dapper Labs. С тех пор были представлены новые рыночные платформы NFT, такие как Rarible, Sorare и OpenSea, чтобы стимулировать развитие NFT. В исследовании, опубликованном на NonFungible.com, говорится, что общая стоимость транзакций NFT в 2020 году увеличилась на 299% по сравнению с 2019 годом и превысила 250 миллионов долларов. Эксперты прогнозируют, что невзаимозаменяемые токены станут движущей силой виртуальной экономики в ближайшие 10 лет.
Что такое торговая площадка NFT?
Торговые площадки NFT будут продолжать набирать популярность в 2021 году, и NFT растут как новый класс активов в криптопространстве. Платформа NFT marketplace — это децентрализованная платформа, которая позволяет пользователям создавать, покупать, продавать и хранить невзаимозаменяемые токены.
Торговые площадки NFT ориентированы на продажу определенных активов. Например, торговая площадка Valuables NFT позволяет пользователям покупать и продавать твиты.
Нишевые торговые площадки набирают популярность, поскольку у них есть четко определенная целевая аудитория. Поэтому вам следует подумать о типе платформы, которую вы запустите, прежде чем создавать рынок NFT.
Как работает торговая площадка NFT?
- Во-первых, пользователь должен зарегистрироваться на платформе и установить цифровой кошелек для хранения NFT.
- Затем пользователи могут создавать свои активы, загружая элементы для демонстрации своей работы.
- Пользователь также может выбрать, какие платежные токены он хотел бы принять за свое искусство, и установить комиссию, если платформа предлагает это.
- Следующим шагом в рабочем процессе является составление списка выставленных на продажу товаров.
- Пользователь может выбрать ставку по фиксированной цене или аукцион.
- При выставлении объекта на продажу создается транзакция для запуска личного торгового смарт-контракта для кошелька пользователя.
- Платформе может потребоваться модерация коллекции, и NFT появятся в списке после утверждения.
Как начать разработку NFT Marketplace?
Поскольку вы знаете, как работают торговые площадки NFT и какие типы платформ представлены на рынке, вам необходимо понимать, для кого вы разрабатываете свою платформу и какие проблемы она может решить.
Вам нужно определиться со списком функций и выбрать технологические стеки и стандарты NFT для вашего рынка.
Ниже приведены некоторые функции, которые можно добавить на рынок NFT:
- Витрина (Торговая площадка NFT должна иметь витрину, которая предлагает пользователям всю информацию, необходимую для товара: ставки, владельцев, предварительный просмотр или историю цен.)
- Фильтры (Использование фильтров упрощает навигацию по сайту, особенно если вы планируете создать торговую площадку для большого количества предметов коллекционирования. Добавив функцию фильтров, пользователи могут выбирать товары по способу оплаты, статусу листинга, категории и коллекции.)
- Поиск предметов (Платформа торговой площадки NFT должна поддерживать тегирование и управление категориями, чтобы пользователи могли искать предметы коллекционирования. Используйте панель поиска на сайте и добавляйте категории.)
- Создание списков (Пользователь должен иметь возможность создавать и отправлять предметы коллекционирования. Используя эту функцию, пользователь должен загружать файлы и вводить информацию о токене, такую как имя, теги, описание.)
- Покупка и предложение (Платформа торговой площадки NFT должна иметь функцию, позволяющую пользователям покупать и предлагать ставки на NFT, перечисленные на платформе. Функция назначения ставок должна включать дату истечения срока действия ставки и позволять пользователям просматривать подробную информацию о текущем статусе ставок.)
- Кошелек (Платформа NFT Marketplace должна иметь кошелек, который позволяет пользователям хранить, отправлять и получать невзаимозаменяемые токены. Самый простой способ интегрировать эту функцию — предоставить пользователям подключенный кошелек, который они уже используют. Например, вы можете интегрировать самые популярные кошельки, такие как Coinbase, Formatic или MyEtherWallet.)
Стек технологий, необходимый для создания торговой площадки NFT
- Ethereum (Ethereum — одна из самых популярных платформ, когда дело доходит до рынка NFT или разработки невзаимозаменяемых токенов. Поскольку история транзакций и метаданные токенов доступны для публичной проверки в Ethereum, легче доказать историю владения. Поскольку все продукты Ethereum имеют общий бэкэнд, NFT становятся переносимыми между продуктами. Кроме того, Ethereum никогда не падает; следовательно, токены всегда будут доступны для продажи.)
- Flow (Flow — это быстрый и децентрализованный блокчейн, разработанный для нового поколения цифровых активов, приложений и игр. Платформа широко используется для создания как торговых площадок NFT, так и NFT с использованием языка программирования Cadence.)
- Tezos (Tezos — это блокчейн-платформа с открытым исходным кодом для приложений и ресурсов, поддерживаемая сообществом разработчиков, исследователей и валидаторов. Используя предварительно скомпилированный контракт FA2 NFT, написанный на языке смарт-контрактов LIGO, Tezos поддерживает развитие торговых площадок NFT.)
- Cardano (Cardano — это блокчейн-платформа с технологиями и инструментами, необходимыми для обеспечения непревзойденной безопасности и устойчивости децентрализованных систем и приложений. Он также поддерживает развитие NFT и других цифровых активов.)
- IPFS — это одноранговый гипермедийный протокол, предназначенный для децентрализованного хранения медиаконтента. Поскольку медиафайл, связанный с NFT, не может храниться непосредственно в цепочке блоков, IPFS может хранить все эти данные.
- Filecoin — это децентрализованная сеть хранения, разработанная специально для хранения самой важной информации, такой как медиафайлы. Платформа хранения включает в себя все, что потребуется разработчику для начала работы с децентрализованным хранилищем для NFT. Зная о своих преимуществах, Truffle Suite также запустил шаблон разработки NFT с Filecoin Box.
- Pinata также является одной из популярных платформ для загрузки файлов и управления ими в IPFS. Он предоставляет безопасные и проверяемые файлы для NFT.
- ERC-721
- ERC-1155
- FA2
- dGoods
- TRC-721
- React
- Angular
- Vue
В этой статье демонстрируется пример создания торговой площадки NFT с использованием цепочки блоков Flow и сети IPFS Pinata.
Как разработать NFT Marketplace с помощью IPFS и Flow?
Мы поделились примером создания контракта,выпуска токена, создания приложения для просмотра NFT, сделанных с помощью этого контракта, и создания торговой площадки для перемещения NFT другим пользователям.
Начнем с создания контракта и выпуска токена.
Установите Flow CLI в вашу систему.
Существуют разные команды для установки CLI в зависимости от разных операционных систем.
Например, чтобы установить Flow CLI на macOS, используйте команду:
Файлы активов будут храниться в IPFS.
В этом примере мы собираемся использовать Pinata для хранения файлов. Вы можете зарегистрировать бесплатную учетную запись и получить ключ API здесь.
Также важно установить NodeJS и текстовый редактор, чтобы выделить код смарт-контракта Flow.
Второй шаг — создать каталог для проекта с помощью команды:
Инициализируйте новый потоковый проект и поместите его в этот каталог:
Теперь откройте проект в редакторе кода и приступим к работе. Сначала создайте папку с именем cadence. Добавьте в эту папку еще одну папку с именем contracts . Наконец, создайте файл в папке контрактов с именем PinataPartyContract.cdc
Прежде чем двигаться дальше, важно указать на все, что мы делаем в отношении платформы блокчейна Flow.
Настройте файл для среды эмулятора, и тогда мы можем приступить к написанию контракта.
Нам нужно обновить объект контракта в flow.json, используя код:
Обновите объект развертывания в этом файле, используя приведенный ниже код:
Это позволит Flow CLI использовать эмулятор для развертывания нашего контракта. Этот код также ссылается на учетную запись и контракт, которые мы собираемся написать в ближайшее время.
Контракты
Нам нужно создать контракты для выпуска NFT, связывания метаданных с NFT и обеспечения того, чтобы метаданные указывали на базовые активы, хранящиеся в IPFS.
Откройте PinataPartyContract.cdc и выполните следующий код:
Первый шаг — составить контракт.
Давайте начнем с определения PinataPartyContract и создадим внутри него ресурс. Ресурсы — это элементы, сохраненные в учетных записях пользователей, которые доступны через меры контроля доступа.
NFT должны быть идентифицируемыми, а свойство id позволяет идентифицировать токены.
Затем создается интерфейс ресурсов, чтобы определить, какие возможности доступны другим.
Поместите приведенный выше код под кодом ресурса NFT. Интерфейс ресурса NFTReceiver сообщает, что ресурс может вызывать следующие методы:
Затем необходимо определить интерфейс сбора токенов. Рассматривайте его как кошелек, в котором хранятся NFT всех пользователей.
Переменная ownedNFTs отслеживает все NFT, которыми пользователь может владеть от контактора. Переменная metadataObjs уникальна, поскольку мы расширяем функциональность контракта Flow NFT, чтобы хранить отображение метаданных для каждого NFT.
Она сопоставляет идентификатор токена с соответствующими метаданными, что означает, что идентификатор токена необходим, прежде чем мы сможем его установить. Переменные инициализируются, чтобы определить их в ресурсе внутри Flow.
Наконец, у нас будут все доступные функции, необходимые для ресурса коллекции NFT. Так же, как стандартный контракт NFT был расширен для включения отображения metadataObjs, мы расширим функцию депонирования по умолчанию, чтобы она принимала дополнительный параметр метаданных.
Это сделано для того, чтобы гарантировать, что только майнер токена может добавить метаданные к токену.
Мы ограничиваем первоначальное добавление метаданных выполнением майнинга, чтобы сохранить его конфиденциальность. Добавьте следующий код ниже ресурса Collection:
Во-первых, у нас будет функция для создания пустой коллекции NFT при вызове. Пользователь, взаимодействующий с контрактом, будет иметь место хранения, которое отображает определенный ресурс Collection.
После этого мы создадим еще один ресурс. Без него мы не сможем выпускать токены. NFTMinter включает в себя idCount, который увеличивается каждый раз, чтобы у нас не было дублирующихся идентификаторов для NFT. Он также содержит функцию для создания NFT.
Добавьте инициализатор основного контракта ниже ресурса NFTMinter:
Функция инициализатора вызывается только при развертывании контракта. Она выполняет три действия:
Создает пустую коллекцию для развертывателя коллекции, чтобы контракт-владелец мог создавать и владеть NFT из контракта.
Ресурс NFTMinter хранится в хранилище счета для создателя контракта. Это означает, что только создатель контракта может выпускать токены.
Ресурс Collection публикуется в публичном месте со ссылкой на интерфейс NFTReceiver, созданный в самом начале. Так мы сообщаем контракту, что любой может вызывать функции, определенные в NFTReceiver.
Когда контракт готов, давайте развернем его. Прежде чем развернуть его:
Протестируйте его на игровой площадке Flow Playground.
Перейдите на Flow Playground и нажмите на первый аккаунт в левой боковой панели.
Замените весь код на код контракта и нажмите кнопку Развернуть.
Если все прошло успешно, вы должны увидеть журнал в нижней части экрана:
16:48:55 Deployment Deployed Contract To: 0x01
Поскольку теперь настало время развернуть контракт на локально запущенном эмуляторе, выполните следующую команду:
Запустив эмулятор и настроив файл flow.json, можно развернуть контракт с помощью следующей команды:
Если все прошло успешно, вы должны увидеть результат, подобный этому:
Deploying 1 contracts for accounts: emulator-account
Теперь перейдем к выпуску NFT.
В этом разделе мы обсудим процесс выпуска NFT с помощью приложения и пользовательского интерфейса. Для получения демонстрации того, как метаданные работают с NFT на Flow, мы будем использовать командную строку и скрипты Cadence.
Создайте новую директорию в корне нашего проекта pinata-party и назовите ее «transactions». После создания папки создайте в ней новый файл с именем MintPinataParty.cdc.
У нас должен быть файл, на который мы будем ссылаться в метаданных, предлагаемых NFT. Файл загружается в IPFS через Pinata. В этом учебном пособии NFT сфокусированы на продаваемых видеороликах о том, как Pinata разбивается на вечеринках. В этой демонстрации мы загрузим видео ребенка, разбивающего Pinata на вечеринке по случаю дня рождения. Вы можете загрузить любой медиафайл и связать его с NFT.
После загрузки файла вам будет присвоен хэш IPFS. Скопируйте хэш, так как он будет использоваться в процессе выпуска. Теперь добавьте следующий код в файл MintPinataParty.cdc.
Во-первых, мы определили две ссылочные переменные, minterRef и receiverRef. В этом сценарии мы одновременно являемся получателем и создателем NFT. Эти переменные ссылаются на ресурсы, созданные в контракте. Транзакция завершится неудачей, если лицо, выполняющее ее, не имеет доступа к ресурсу.
Приведенный выше контракт будет выпускать и депонировать НФТ. Теперь мы отправим транзакцию и зачислим NFT. Но перед этим нам нужно подготовить счет. Создайте закрытый ключ для подписи из командной строки в корневой папке проекта.
Выполните приведенную ниже команду:
Он предоставит вам открытый и закрытый ключи. Обязательно защитите свой закрытый ключ.
Закрытый ключ понадобится вам для подписания транзакции, который нужно вставить в наш файл flow.json. Также необходимо указать алгоритм подписания, и вот как должен выглядеть ваш объект счетов в файле flow.json:
Если вы хотите хранить что-либо из этого проекта в удаленном git-репозитории или на Github, вам не следует включать закрытый ключ. Вам может понадобиться .gitignore всего flow.json. Хотя мы используем только локальный эмулятор, хорошо бы держать ключи под защитой.
Последнее, что нам нужно сделать, это проверить, что токен находится в нашем аккаунте, и получить метаданные. Чтобы проверить это, нам нужно написать простой сценарий и вызвать его из командной строки.
Создайте новую папку scripts в корне вашего проекта. Создайте внутри папки файл CheckTokenMetadata.cdc. Добавьте в этот файл следующий код:
В этом сценарии мы импортируем контракт с развернутого адреса. Мы определяем главную функцию и определяем три переменные внутри нее:
- nftOwner
This account owns the NFT.
- capability
Capabilities are access-controlled. If a capability is not available to the address attempting to borrow it, the script gets failed. In this example, we borrow capabilities from the NFTReceiver resource.
- receiverRef
The variable takes our capability and states the script to borrow from the deployed contract.
Мы хотим убедиться, что адрес, о котором идет речь, получил NFT, который мы выпустили, а затем мы хотим просмотреть метаданные, связанные с токеном.
Запустите скрипт с помощью следующей команды и посмотрите, что мы получим:
Вы получите результат, подобный этому:
Наконец, вы создали смарт-контракт Flow, создали токен, связали метаданные с токеном и сохранили базовые цифровые активы токена на IPFS.
Затем мы создадим внешнее приложение React, которое позволит вам отображать NFT, получая метаданные.
Отображение предметов коллекционирования NFT
Мы будем создавать простое приложение React, которое взаимодействует со смарт-контрактами Flow для проверки и получения NFT, принадлежащих пользователям.
Настройка React и зависимостей
Создайте приложение React в родительском каталоге pinata-party. Выполните следующую команду, чтобы создать приложение React:
Когда вы закончите установку, вы увидите новый каталог с именем pinata-party-frontend. Перейдите в этот каталог и установите зависимости. Для первой части настройки внешнего интерфейса запустите:
Мы будем хранить некоторые значения как глобальные переменные для нашего приложения и использовать переменные среды. В качестве реакции это означает создание файла .env и установку пар ключ-значение, в которых вам нужно добавить префикс REACT_APP.
Затем создайте файл конфигурации, который будет использоваться для взаимодействия с Flow JS SDK. Создайте файл config.js в каталоге src и добавьте следующий код:
Этот файл конфигурации просто помогает JS SDK работать с блокчейном Flow (или в данном случае с эмулятором). Чтобы сделать этот файл доступным во всем приложении, откройте index.js файл и добавьте эту строку:
Важно иметь функцию аутентификации в приложении, чтобы обеспечить безопасную передачу активов NFT. Нам нужен компонент аутентификации. Создайте файл AuthCluster.js в каталоге src. Добавьте в этот файл следующее:
Чтобы добавить этот компонент в приложение, замените файл app.js следующим:
После добавления вышеуказанного кода вы увидите страницу с кнопкой регистрации при запуске приложения. Теперь пришло время создать возможность получать NFT для учетной записи и отображать их.
Получение NFT из FLOW
Чтобы отображать созданные нами NFT, необходимо взаимодействовать с блокчейном Flow. В этом руководстве мы должны иметь возможность общаться с эмулятором Flow.
Давайте создадим компонент, который позволяет получать данные и отображать данные NFT. Создайте файл TokenData.js в каталоге src и добавьте в него следующий код:
В этом файле мы создаем компонент с кнопкой для получения данных токена. Мы также создали кнопку для очистки данных токена. При нажатии кнопки выборки вызывается функция fetchTokenData. Функция использует Flow JS SDK для запуска скрипта, который мы выполнили из командной строки. Получение результатов выполнения и установка результатов в переменную состояния nftInfo. Если переменная существует, пары ключ-значение отображаются из метаданных NFT на экране и кнопки для очистки данных.
Получение медиа из IPFS
Поскольку мы уже зарегистрировались в учетной записи Pinata и добавили видеофайл в IPFS через интерфейс загрузки Pinata, вы попадаете на шлюз Pinata IPFS, где содержимое IPFS отображается при нажатии на хэш в проводнике контактов.
В файле TokenData.js добавьте способ отображения видеофайла, полученного из IPFS. Обновите файл, чтобы он выглядел так:
Элемент видео с источником указывает на файл в IPFS. URI, созданный с помощью NFT, выглядит как ipfs: // Qm…
Мы сделали это так, потому что настольный клиент IPFS позволяет нажимать и открывать ссылки.
Теперь NFT станет настоящим живым цифровым активом на блокчейне.
Теперь мы включим передачу NFT.
Прежде всего, нам нужно создать контракты на создание торговой площадки. Контракты будут заключаться на:
- Механизм оплаты взаимозаменяемых токенов
- Настройки подачи токенов
- Возможности передачи токенов
Давайте создадим взаимозаменяемый токен-контракт, который будет использоваться для платежей при покупке NFT.
Мы создадим взаимозаменяемый контракт токена, определив пустой контракт:
Переменные публикации токена, связанные с ресурсами токена и провайдера, необходимо добавить в контракт.
Добавьте вышеуказанный контракт в пустой контракт.
Интерфейс ресурса под названием Provider определяет общедоступную функцию, но владелец учетной записи может только вызывать ее. Затем мы определим еще два интерфейса общедоступных ресурсов:
Вышеупомянутые интерфейсы располагаются непосредственно под интерфейсом ресурсов провайдера. Интерфейс Receiver включает функцию, которую может выполнить любой. Это гарантирует, что депозиты на счет могут выполняться до тех пор, пока получатель инициализирует хранилище для обработки токенов, созданных в рамках контракта. Ресурс Balance возвращает баланс нового токена для любой предоставленной учетной записи.
Давайте создадим ресурс Vault и добавим следующий код под ресурсом Balance:
Добавьте следующую функцию в интерфейс хранилища:
Как следует из названия, функция создает пустой ресурс Vault для учетной записи. Баланс равен 0.
Следовательно, теперь нам нужно настроить возможность минтинга. Добавьте следующий код под функцией createEmptyVault:
Ресурс VaultMinter является общедоступным, но доступен только владельцу контрактной учетной записи.
Ресурс VaultMinter включает в себя только одну функцию: mintTokens, для которой требуется сумма, которую нужно монетизировать, и получатель. Вновь отчеканенные токены могут быть депонированы в эту учетную запись, если у получателя будет храниться ресурс Vault.
Переменную totalSupply необходимо обновлять при чеканке токенов. Следовательно, отчеканенная сумма добавляется к предыдущему запасу для получения нового запаса.
Теперь нам нужно инициализировать контракт и добавить следующий код после ресурса VaultMinter:
При заключении контракта важно установить общий объем поставки. В этом примере мы инициализировали контракт с поставкой 30 и установили имя токена как «Пинни».
Развертывание и выпуск токенов
Обновите файл flow.json в проекте, чтобы развернуть новый контракт. Убедитесь, что файл flow.json ссылается на новый контракт и содержит ссылку на ключ учетной записи эмулятора:
В другом окне терминала в каталоге проекта стороны пината запустите развертывание проекта потока. Теперь давайте протестируем функцию чеканки. Мы создадим транзакцию, которая позволит нам создавать токены Pinnie. Но сначала нам нужно обновить файл flow.json.
Измените json под учетной записью эмулятора:
Поле ключа становится полем privateKey, и мы добавляем свойства, включая sigAlgorithm, цепочку и hashAlgorithm.
Разработка торговой площадки NFT
Прежде чем приступить к работе над внешним интерфейсом торговой площадки, у нас должен быть контракт на создание и управление торговой площадкой.
В папке cadence / контракты создайте новый файл с именем MarketplaceContract.cdc.
Нам нужно импортировать как контракт NFT, так и контракт заменяемого токена. В определении контракта мы определили четыре события:
- ForSale: продажа NFT
- PriceChanged: изменение цены на NFT.
- TokenPurchased: при покупке NFT
- SaleWithdrawn: когда NFT удаляются с торговой площадки.
Мы добавили интерфейс ресурса под названием SalePublic под эмиттерами событий. Интерфейс должен быть общедоступным для всех, а не только для владельца контракта.
Нам нужно добавить ресурс SaleCollection под интерфейсом SalePublic. Мы определили несколько переменных в этом ресурсе. Например, отображение токенов для продажи, отображение цен на каждый токен для продажи и защищенная переменная, доступная только владельцу контракта, под названием ownerVault.
Нам нужно инициализировать переменные при их определении на ресурсе. Это выполняется в функции init и инициализируется ресурсом хранилища владельца и пустыми значениями.
Затем важно определить функции для управления действиями торговой площадки NFT. Функции:
- listForSale
- changePrice
- withdraw
- idPrice
- purchase
- destroy
- getIDs
Как упоминалось выше, три из этих функций общедоступны, это означает, что listForSale, remove, destroy и changePrice доступны только для перечисленных владельцев NFT. Например, changePrice не доступен публично, потому что мы не хотим, чтобы кто-либо менял цену NFT.
Последняя часть рыночного контракта — это функция CreateSaleCollection. Это позволяет добавить коллекцию в качестве ресурса к учетной записи. После написания этого контракта мы развернем его с учетной записью эмулятора. Выполните следующую команду из корня вашего проекта:
Как создать NFT-маркетплейс с полным стеком
![]()
Из этого руководства вы узнаете, как разработать, развернуть и протестировать полнофункциональный NFT-маркетплейс на Ethereum. Мы также рассмотрим развертывание на Polygon.
Уже нельзя не замечать того, как быстро набирают обороты и внедряются такие решения по Ethereum-масштабированию, как Polygon, Arbitrum и Optimism. Эти технологии позволяют разработчикам создавать те же приложения, что и непосредственно на Ethereum, только с дополнительными преимуществами в виде более низкой стоимости газа и более высокой скорости транзакций.
Учитывая выгодность этих технологий, а также отсутствие руководств по ним, я буду создавать проекты и туториалы по разработке полнофункциональных приложений с использованием различных решений по Ethereum-масштабированию. В этой статье начну с проекта на Polygon.
Предварительные условия
Для успешного следования данному руководству необходимо подготовить следующее.
- Фреймворк Node.js (версии 16.14.0 или более поздней), установленный на вашем компьютере. Рекомендую устанавливать Node с помощью nvm или fnm.
- Расширение для кошелька Metamask, установленное в качестве расширения браузера.
Это руководство предполагает создание приложения с полным стеком.
- Фреймворк для веб-приложений — Next.js.
- Среда разработки Solidity — Hardhat.
- Файловое хранилище — IPFS.
- Библиотека веб-клиента Ethereum — Ethers.js.
Хотя это не входит в состав данного руководства, я покажу, как создать более надежный уровень API с использованием протокола The Graph. Это позволит обойти ограничения в шаблонах доступа к данным, предоставляемых нативным уровнем блокчейна.
О проекте
Проект, который мы будем создавать, называется Metaverse Marketplace. Он представляет собой NFT-маркетплейс.
Когда пользователь выставляет NFT на продажу, право собственности на предмет переходит от создателя к контракту на маркетплейсе.
Когда пользователь покупает NFT, стоимость покупки переходит от покупателя к продавцу, а позиция переходит из маркетплейса к покупателю.
Владелец маркетплейса может установить плату за листинг. Она будет взиматься с продавца и перечисляться владельцу контракта после завершения продажи. Это позволит владельцу маркетплейса получать постоянный доход от любой продажи, совершенной на маркетплейсе.
Логика работы маркетплейса будет состоять всего из одного смарт-контракта — NFT Marketplace Contract. Такой контракт позволяет пользователям майнить NFT и размещать их на торговой площадке.
Мне нравится данный проект тем, что использованные в нем инструменты, методы и идеи закладывают основу для многих других типов приложений на этом стеке, связанных с такими элементами, как платежи, комиссии и передача прав собственности на уровне контракта, а также с возможностью использовать этот смарт-контракт для создания производительного и приятного на вид пользовательского интерфейса для клиентского приложения.
В дополнение к смарт-контракту я также покажу, как построить подграф, чтобы сделать запрос данных из смарт-контракта более гибким и эффективным. Как вы увидите, создание представлений для наборов данных и обеспечение вариативных и высокопроизводительных шаблонов доступа к данным сложно реализовать непосредственно из смарт-контракта. The Graph значительно упрощает эту задачу.
О Polygon
“Polygon — это протокол и фреймворк для создания и соединения блокчейн-сетей, совместимых с Ethereum. Агрегирование масштабируемых решений на Ethereum с поддержкой многоцепочечной экосистемы Ethereum”.
Polygon примерно в 10 раз быстрее, чем Ethereum, и при этом транзакции на Polygon более чем в 10 раз дешевле.
Что все это значит? Для меня это означает, что я могу использовать те же знания, инструменты и технологии, которые я применял для создания приложений на Ethereum, в процессе построения приложений, которые будут быстрее и дешевле для пользователей. В результате я не только обеспечу оптимальный пользовательский опыт, но и получу возможность разработки многих типов приложений, которые просто невозможно было бы создать непосредственно на Ethereum.
Как уже упоминалось, существует множество других решений для Ethereum-масштабирования, таких как Arbitrum и Optimism, которые обладают похожим функционалом. Большинство этих решений по масштабированию имеют технические различия и относятся к различным категориям, таким как сайдчейн, второй уровень и каналы состояния.
Компания Polygon образовалась в результате ребрендинга Matic, поэтому слово Matic используется как взаимозаменяемое при упоминании о Polygon. Оно все еще служит названием для некоторых частей экосистемы, например используется в названиях ее токенов и сетей.
Чтобы узнать больше о Polygon, ознакомьтесь с их документацией здесь.
Теперь, после обзора проекта и связанных с ним технологий, приступим к разработке!
Настройка проекта
Чтобы начать работу, создадим новое приложение Next.js. Для этого откройте терминал. Создайте или перейдите в новый пустой каталог и выполните следующую команду:
Затем перейдите в новый каталог и установите зависимости с помощью менеджера пакетов, например npm , yarn или pnpm :
Настройка Tailwind CSS
Для стилизации будем использовать Tailwind CSS. Настроим его на этом этапе.
Tailwind — это CSS-фреймворк на основе концепции utility-first, который позволяет легко добавлять стили и создавать красивые сайты без особых усилий.
Итак, установим зависимости Tailwind:
Далее создадим конфигурационные файлы, необходимые для работы Tailwind с Next.js ( tailwind.config.js и postcss.config.js ), выполнив следующую команду:
Затем настроим пути к шаблону content в файле tailwind.config.js :
Наконец, удалим код в styles/globals.css и обновим его следующим образом:
Настройка Hardhat
Далее инициализируйте новую среду разработки Hardhat из корня проекта:
Если получите ошибку при ссылке на README.md, удалите README.md и запустите npx hardhat снова.
В корневом каталоге вы увидите следующие файлы и папки.
- hardhat.config.js — файл, где содержится все настройки Hardhat, т.е. конфиг, плагины и настраиваемые задачи.
- scripts — папка, содержащая скрипт под названием sample-script.js , который при выполнении развернет смарт-контракт.
- test — папка, содержащая пример скрипта тестирования.
- contracts — папка, содержащая пример смарт-контракта Solidity.
Теперь обновите конфигурацию в файле hardhat.config.js следующим образом:
В этой конфигурации мы настроили локальную среду разработки Hardhat, а также тестовую сеть Mumbai (на данный момент закомментированную).
Подробнее об обеих сетях Matic можно прочитать здесь.
Смарт-контракт
Далее создадим смарт-контракт!
В этом файле я постараюсь максимально прокомментировать все, что происходит в коде.
Создайте новый файл в каталоге contracts под названием NFTMarketplace.sol . Добавьте в него следующий код:
В этом контракте мы следуем ERC721-стандарту, реализованному OpenZeppelin.
Теперь, когда работа над кодом и средой смарт-контракта завершена, можно протестировать его.
Для этого создадим локальный тест, который будет выполнять большую часть функций, таких как выпуск токена, выставление его на продажу, продажа позиции пользователю и запрос токенов.
Чтобы создать тест, откройте test/sample-test.js и обновите его следующим кодом:
Затем запустите тест из командной строки:
При успешном выполнении теста должен произойти вывод массива, содержащего две позиции маркетплейса.
Разработка фронтенда
Теперь, когда смарт-контракт работает и готов к использованию, можно приступить к созданию пользовательского интерфейса.
Первое, о чем стоит подумать, — настройка макета. Она позволит подключить навигацию, которая будет сохраняться на всех страницах.
Для этого откройте файл pages/_app.js и обновите его следующим кодом:
Навигация содержит ссылки на домашний маршрут, а также страницу для продажи NFT, просмотра купленных вами NFT и дашборд для просмотра NFT, выставленных вами на продажу.
Запрос контракта для позиций на маркетплейсе
Следующей страницей, которую мы обновим, будет pages/index.js. Это главная точка входа в приложение, и именно здесь мы будем запрашивать продаваемые NFT и выводить их на экран.
Когда страница загрузится, мы запросим смарт-контракт для всех непроданных NFT и выведем их на экран вместе с метаданными о позициях и кнопкой для их покупки.
Создание и листинг NFT
Далее создадим страницу, которая позволит пользователям создавать NFT и выставлять их на продажу.
Эта страница позволит пользователю выполнять несколько функций:
- Загрузка и сохранение файлов в IPFS.
- Создание нового NFT.
- Настройка метаданных и цены позиции, а также выставление позиции на продажу на маркетплейсе.
После того, как пользователь создаст и выставит позицию, он будет перенаправлен на главную страницу для просмотра всех позиций, выставленных на продажу.
Просмотр только тех NFT, что приобретены пользователем
В смарт-контракте NFTMarketplace.sol мы создали функцию fetchMyNFTs , которая возвращает только NFT, принадлежащие пользователю.
В pages/my-nfts.js будем использовать эту функцию для их получения и отображения.
Такая функциональность отличается от работы основной страницы запросов pages/index.js, поскольку нам нужно запросить у пользователя его адрес и использовать его в контракте, пользователь должен подписать транзакцию, чтобы функция получила ее соответствующим образом.
Дашборд
Следующая страница, которую мы создадим, — это дашборд, который позволит пользователю просматривать все позиции, выставленные им на продажу.
Эта страница будет использовать функцию fetchItemsListed из смарт-контракта NFTMarketplace.sol , которая возвращает только те позиции, которые соответствуют адресу пользователя, выполняющего вызов функции.
Создайте новый файл dashboard.js в каталоге pages со следующим кодом:
Перепродажа токена
Последняя страница, которую мы создадим, позволит пользователю перепродать NFT, приобретенный у кого-то другого.
Эта страница будет использовать функцию resellToken из смарт-контракта NFTMarketplace.sol .
Запуск проекта
Чтобы запустить проект, нам понадобится скрипт развертывания для разворачивания смарт-контрактов в блокчейн-сети.
Развертывание контрактов в локальной сети
При создании проекта Hardhat сгенерировал пример скрипта развертывания в scripts/sample-script.js.
Чтобы четче обозначить назначение этого скрипта, измените название scripts/sample-script.js на scripts/deploy.js.
Затем обновите scripts/deploy.js следующим кодом:
Этот скрипт развернет контракт в блокчейн-сети и создаст файл config.js , в котором будет храниться адрес смарт-контракта после его развертывания.
Сначала протестируем его в локальной сети, а затем развернем в тестовой сети Mumbai.
Чтобы развернуть локальную сеть, откройте терминал и выполните следующую команду:
Создастся локальная сеть с 20 аккаунтами.
Теперь, сохраняя узел запущенным, откройте отдельное окно терминала для развертывания контракта.
В отдельном окне выполните следующую команду:
Когда разворачивание будет завершено, CLI выведет адрес развернутого контракта:
Вы также должны увидеть файл config.js , заполненный адресом этого смарт-контракта.
Импорт аккаунтов в MetaMask
Вы можете импортировать аккаунты, созданные узлом, в свой кошелек Metamask, чтобы опробовать их в приложении.
Каждый из этих аккаунтов пополнен на 10000 ETH.
Чтобы импортировать один из этих аккаунтов, переключите сначала сеть вашего кошелька MetaMask на Localhost 8545.
Затем в MetaMask нажмите на Import Account в меню аккаунтов:
Скопируйте и вставьте один из приватных ключей (Private Keys), выведенных CLI, и нажмите Import. После импорта аккаунта вы должны увидеть в нем определенное количество Eth:
Рекомендую проделать эту процедуру с 2 или 3 аккаунтами, чтобы протестировать различные функции взаимодействия между пользователями.
Запуск приложения
Теперь наконец можно протестировать приложение!
Чтобы запустить его, выполните следующую команду в CLI:
Чтобы все проверить, попробуйте выставить токен на продажу, а затем переключиться на другой аккаунт и приобрести его.
Развертывание в Polygon
Теперь, когда проект запущен и протестирован локально, развернем его в Polygon. Начнем с развертывания в Mumbai, тестовой сети Polygon.
Первое, что вам нужно будет сделать, это сохранить один из своих приватных ключей из кошелька в качестве переменной среды.
Чтобы получить приватный ключ, можете использовать один из приватных ключей, предоставленных Hardhat, или экспортировать их непосредственно из MetaMask.
Если вы работаете на Mac, можете установить переменную среды из командной строки следующим образом (не забудьте запустить скрипт развертывания из этого же терминала и сессии):
Приватные ключи никогда и ни при каких обстоятельствах нельзя распространять публично. Приватный ключ не рекомендуется жестко кодировать в файле. Если вы все же решили это сделать, убедитесь, что используете кошелек для тестирования, и ни при каких обстоятельствах не размещайте файл с приватным ключом в системе управления версиями исходного кода и не выкладывайте его в открытый доступ.
Конфигурирование сети
Теперь нам нужно переключиться с локальной тестовой сети на тестовую сеть Mumbai.
Для этого следует создать и настроить конфигурацию сети.
Сначала откройте MetaMask и нажмите на Settings (Настройки).
Далее нажмите на Networks (Сети), а затем Add Network (Добавить сеть):
На этом этапе добавьте конфигурации для тестовой сети Mumbai:
- Network Name (имя сети): Mumbai TestNet.
- New RPC URL (новый URL RPC): https://rpc-mumbai.maticvigil.com.
- Chain ID (идентификатор цепи): 80001.
- Currency Symbol (символ валюты): Matic.
Сохраните эти настройки, после чего сможете переключиться на новую сеть и использовать ее!
Наконец, для взаимодействия с приложениями вам понадобятся токены тестовой сети Matic.
Чтобы получить их, можете посетить “кран” этой сети Matic Faucet и ввести адреса кошельков, с которых вы хотели бы запросить токены.
Развертывание в сети Matic/Polygon
Теперь, когда у вас есть токены Matic, вы можете провести развертывание в сети Polygon!
Для начала убедитесь, что на адрес, связанный с приватным ключом, с помощью которого вы развертываете свой контракт, поступили токены Matic для оплаты газовых сборов за транзакцию.
Также не забудьте раскомментировать конфигурацию mumbai в hardhat.config.js :
Для развертывания в Matic выполните следующую команду:
Если у вас возникла ошибка при развертывании, возможно, причина в перегрузке публичного RPC (сервиса вызова удаленных процедур). В производственной среде рекомендуется использовать провайдер RPC, например Infura, Alchemy, Quicknode и Figment DataHub.
После развертывания контрактов обновите вызов функции loadNFTs в pages/index.js , чтобы включить новую конечную точку RPC:
Теперь вы можете обновить адреса контрактов в вашем проекте и провести тесты в новой сети!
Если вы столкнулись с ошибкой, причина может заключаться в неверном адресе контракта, выводимого в консоль Hardhat, из-за бага, с которым я недавно столкнулся. Здесь можно найти правильные адреса контрактов. Нужно вставить адрес, с которого были развернуты контракты, чтобы увидеть последние транзакции и получить адреса контрактов из данных транзакций.
Развертывание в Mainnet
Для развертывания в основной сети Matic/Polygon можете использовать те же шаги, которые выполняли для тестовой сети Mumbai.
Основное отличие заключается в том, что вам нужно будет применить конечную точку для Matic, а также импортировать сеть в ваш кошелек MetaMask, как указано здесь.
Вот пример обновления, которое требуется для этого в вашем проекте:
Публичные RPC, подобные приведенному выше, могут иметь ограничения в плане трафика или скорости в зависимости от конкретного случая. Вы можете подписаться на бесплатное использование URL RPC посредством таких сервисов, как Infura, MaticVigil, QuickNode, Alchemy, Chainstack и Ankr.
Пример с Infura:
Следующие шаги
Поздравляю! Вы развернули нетривиальное приложение в Polygon.
Самое приятное в работе с такими решениями, как Polygon, — это то, что не нужно прикладывать дополнительные усилия или изучать что-то новое, чего нельзя сказать о разработке непосредственно в системе Ethereum. Почти все API и инструменты на 2-м уровне и сайдчейнах остаются неизменными, что позволяет применять те же навыки на различных платформах, таких как Polygon.
В качестве следующих шагов я бы предложил перенести запросы, реализованные в приложении, на The Graph. Этот протокол открывает гораздо больше шаблонов доступа к данным, включая, среди прочего, пагинацию, фильтрацию и сортировку, которые необходимы для любого реального приложения.