Введение
Незаменимые токены или 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" } ] } } } '
Чтобы убедиться, что наш NFT правильно хранится в цепочке, мы запускаем query
команду, указав, что token_id
мы использовали в предыдущем вызове:
$ archway запрос состояния контракта smart --args '{ "nft_info": { "token_id": "1" } }'
Передача
Чтобы передать токен, мы должны отправить TransferNft
сообщение с адресом получателя (в нашем случае Алиса ) и token_id
:
$ archway tx --args '{ "transfer_nft": { "получатель": "archway1t5mqd4mcp5jy88m5fed9zaegpgzcrrfjnet76t", "token_id": "1" } }'
После этого мы можем запросить состояние контракта и подтвердить, что Алиса является новым владельцем токена, используя OwnerOf
сообщение :
$ archway запрос состояния контракта smart --args '{ "owner_of": { "token_id": "1" } }'
Вывод
Как видите, создание смарт-контракта NFT в Archway невероятно просто и требует минимальных усилий. И, благодаря магии Archway, за каждую транзакцию, совершенную с коллекцией NFT, разработчик получает вознаграждение, запеченное в самом протоколе!
Если вы хотите проверить исходный код, описанный в этом руководстве, он доступен в нашем репозитории примеров контрактов . Если вам интересно узнать об эволюции NFT, рекомендую ознакомиться с этим очень информативным руководством от OpenSea .
В следующем посте вы узнаете, как создать внешнее приложение для отображения только что созданной нами коллекции. Следите за обновлениями!
Есть вопросы? Присоединяйтесь к нашему каналу в Discord , и мы будем там, чтобы помочь вам!
Archway — это платформа смарт-контрактов, которая вознаграждает разработчиков. Разработанный для гибкой разработки и простого развертывания в Cosmos, Archway обеспечивает масштабируемые межсетевые приложения dApp, которые охватывают максимально возможное количество пользователей и активов.
Готовы начать строительство? Ознакомьтесь с нашими документами здесь .
Хотите быть в курсе последних новостей с Archway?
Новостная рассылка // Discord // Twitter // Github
Благодаря Майклу Каллинану