MMS

Введение

Незаменимые токены или NFT были горячей темой в прошлом году. От CryptoKitties до мании обезьян и Twitter, принимающего их в качестве изображений профиля, NFT стали важным компонентом децентрализованного цифрового мира.

В этом руководстве мы узнаем, как написать, развернуть и передать смарт-контракт коллекции NFT в Archway с помощью CosmWasm.

Стандарт NFT для CosmWasm

Чтобы создать смарт-контракт NFT, мы должны следовать стандарту токена, который определяет интерфейс с общими конечными точками и форматом сообщений. Эти стандарты гарантируют, что токен будет вести себя определенным образом и его можно будет комбинировать друг с другом.

Наиболее известной спецификацией для контрактов NFT является ERC-721, и она была впервые представлена ​​на Ethereum компанией CryptoKitties. В CosmWasm, следуя тому же соглашению, мы называем этот стандарт CW721 . Глядя на спецификацию, мы видим, что она определяет несколько сообщений и запросов, которым мы должны следовать, наиболее важными из которых являются:

  • Монетный двор {token_id, owner, token_uri}
  • TransferNft {получатель, token_id}
  • Токены {владелец}
  • Владелец {token_id}

Это фундаментальные аспекты NFT: точка входа для их чеканки, еще одна для передачи и способы запроса их владения.

Создание смарт-контракта

Чтобы создать смарт-контракт NFT в Archway, вам понадобится CLI разработчика Archway . Если вы еще не настроили его, обратитесь к краткому руководству .

Далее мы настроим две учетные записи: одну для развертывания и создания NFT , а другую — для получателя перевода NFT .

$ учетные записи арки - деплойер 
$ учетные записи арки - алиса

Теперь создадим новый проект и в списке выбора шаблона выберем шаблон # 4 — CW721 с ончейн метаданными :

$ арка новый nft-on-chain

Преимущество использования этого шаблона заключается в том, что он создает экземпляр нашего контракта с использованием базового крейта cw721 , базовой реализации спецификации CW721, которую можно легко расширить для наших нужд.

Хранение метаданных NFT

Метаданные активов являются критическим элементом для любого NFT. Он определяет такую ​​информацию, как имя, URL-адрес изображения и другие свойства, которые могут быть извлечены торговыми площадками NFT для отображения релевантной информации для пользователей. Здесь хранятся такие вещи, как редкость, пользовательские черты и т. д. Спецификация для него определяется схемой метаданных JSON .

В нашем примере мы будем хранить эту информацию в цепочке или, другими словами, контракт будет хранить метаданные в своем внутреннем состоянии. Вот как мы определяем структуру метаданных в src/lib.rsфайле:

В базовом коде cw721 эти метаданные содержатся в свойстве расширения TokenInfoструктуры :

Опубликовать и создать экземпляр контракта

Перед развертыванием контракта нам необходимо запросить токены из сборщика на нашу учетную запись развертывателя . Это можно сделать archway faucetкомандой.

Теперь мы готовы развернуть и создать экземпляр контракта. Для создания контракта требуются три параметра:

  • name: имя коллекции NFT.
  • symbol: символ токена для его представления.
  • minter: адрес кошелька, разрешенный для создания нового NFT с использованием этого контракта.

Чтобы развернуть его, мы запускаем deployкоманду с предыдущими параметрами, настроенными в командной строке:

$ archway deploy -a '{ "name": "Моя коллекция NFT", "symbol": "MYNFT", "minter": "archway1e5fglhr2ml6rwhvqzezd9035hhwfl37l8u4c4h" }'
Адрес минтера должен совпадать с учетной записью развертывания , которую мы создали выше .

После завершения компиляции проекта вас спросят, из какого кошелька отправить транзакцию. Просто введите deployer и продолжайте.

Минтинг и запросы

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

Команда для выполнения транзакции:

$ archway tx --args '{ "mint": { "token_id": "1", "owner": "archway1e5fglhr2ml6rwhvqzezd9035hhwfl37l8u4c4h", "extension": { "name": "Осенний закат", "description": "Закат в Берлин осенью.", "image": "ipfs://QmSmUJPHNRjkA47AvvQ9eA7AzEGDJ9o4azrZvhUAViFLzk/autumn-sunset.gif", "attributes": [ { "trait_type": "city", "value": "Berlin" } ] } } } '
Mint

Чтобы убедиться, что наш NFT правильно хранится в цепочке, мы запускаем queryкоманду, указав, что token_idмы использовали в предыдущем вызове:

$ archway запрос состояния контракта smart --args '{ "nft_info": { "token_id": "1" } }'
NftInfo

Передача

Чтобы передать токен, мы должны отправить TransferNftсообщение с адресом получателя (в нашем случае Алиса ) и token_id:

$ archway tx --args '{ "transfer_nft": { "получатель": "archway1t5mqd4mcp5jy88m5fed9zaegpgzcrrfjnet76t", "token_id": "1" } }'
TransferNft

После этого мы можем запросить состояние контракта и подтвердить, что Алиса является новым владельцем токена, используя OwnerOfсообщение :

$ archway запрос состояния контракта smart --args '{ "owner_of": { "token_id": "1" } }'
OwnerOf

Вывод

Как видите, создание смарт-контракта NFT в Archway невероятно просто и требует минимальных усилий. И, благодаря магии Archway, за каждую транзакцию, совершенную с коллекцией NFT, разработчик получает вознаграждение, запеченное в самом протоколе!

Если вы хотите проверить исходный код, описанный в этом руководстве, он доступен в нашем репозитории примеров контрактов . Если вам интересно узнать об эволюции NFT, рекомендую ознакомиться с этим очень информативным руководством от OpenSea .

В следующем посте вы узнаете, как создать внешнее приложение для отображения только что созданной нами коллекции. Следите за обновлениями!

Есть вопросы? Присоединяйтесь к нашему каналу в Discord , и мы будем там, чтобы помочь вам!

Archway — это платформа смарт-контрактов, которая вознаграждает разработчиков. Разработанный для гибкой разработки и простого развертывания в Cosmos, Archway обеспечивает масштабируемые межсетевые приложения dApp, которые охватывают максимально возможное количество пользователей и активов.

Готовы начать строительство? Ознакомьтесь с нашими документами здесь .

Хотите быть в курсе последних новостей с Archway?

Новостная рассылка // Discord // Twitter // Github

Благодаря Майклу Каллинану

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *