Как да изграждаме, минтваме и трансферираме NFT към Archway

KeithbmBG
5 min readJul 22, 2022

--

Въведение

Незаменяемите токени, или NFT, бяха най-актуална тема през изминалата година. От CryptoKitties до манията за маймуните и Twitter, който ги приема като профилни снимки, NFT се превърнаха в основен компонент на децентрализирания дигитален свят.

В това ръководство ще научим как да напишем, внедрим и трансферираме интелигентен договор за събиране на NFT в Archway с помощта на CosmWasm.

NFT стандарт за CosmWasm

За да създадем NFT интелигентен договор, трябва да следваме стандарт за токени, който съдържа интерфейс с общи крайни точки и формат на съобщенията. Тези стандарти гарантират, че токенът ще се държи по специфичен начин и ще бъде съвместим един с друг.

Най-известната спецификация за NFT договори е ERC-721 и тя беше въведена за първи път в Ethereum от CryptoKitties. В CosmWasm, следвайки същата конвенция, наричаме този стандарт CW721. Разглеждайки спецификацията, виждаме, че тя дефинира няколко съобщения и заявки, които трябва да следваме, като най-важните са:

  • Mint {token_id, owner, token_uri}
  • TransferNft {recipient, token_id}
  • Tokens {owner}
  • OwnerOf {token_id}

Това са основните аспекти на NFT: начална точка за процеса на минтване, друга за трансфер и начини за запитване за тяхната собственост.

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

За да създадете NFT Смарт контракт в Archway, ще ви е необходим Archway developer CLI. Ако все още не сте го конфигурирали, проверете ръководството за бързо стартиране.

След това, ще създадем 2 акаунта, единият за изграждане и минтване на NFT и друг за получателя на NFT трансфер.

$ archway accounts -a deployer
$ archway accounts -a alice

Сега нека създадем нов проект и в списъка за избор на шаблон изберете шаблон #4 — CW721 с он-чейн метадата:

$ archway new nft-on-chain

Предимството на използването на този шаблон е, че той инстанцира нашия договор с помощта на cw721-base crate, основна реализация на спецификацията CW721, която може лесно да бъде разширена за нашите нужди.

Съхраняване на NFT метаданни

Метаданните на активите са критичен елемент за всеки NFT. Те дефинират информация като име, URL адрес на изображението и други свойства, които могат да бъдат изтеглени от пазарите на NFT, за да показват подходяща информация за потребителите. Неща като рядкост, персонализирани характеристики и т.н., всички се съхраняват тук. Спецификацията за тех се определя от Metadata JSON Schema.

В нашия пример ние ще запазим тази информация във веригата или, с други думи, договорът ще съхранява метаданните в тяхното вътрешно състояние. Ето как дефинираме структурата на метаданните във файла src/lib.rs :

В кода cw721-base тези метаданни се съдържат в свойството за разширение на TokenInfo struct:

Публикуване и инстанциране на Договора

Преди да разгърнем договора, трябва да поискаме токени от крана към нашия акаунт. Това може да стане с командата archway faucet

Сега сме готови да внедрим и инстанцираме договора. Инстанцирането на договора изисква три параметъра:

  • name: NFT име на колекцията.
  • symbol: символ на токен за представянето му.
  • minter: адресът на портфейла позволяващ минтването на нов NFT с помощта на този договор.

За да го внедрим, изпълняваме командата за deploy/разгръщане с предишните параметри, конфигурирани в командния ред:

$ archway deploy -a '{ "name": "My NFT Collection", "symbol": "MYNFT", "minter": "archway1e5fglhr2ml6rwhvqzezd9035hhwfl37l8u4c4h" }'

Адресът на minter трябва да е същият като акаунта на deployer, който създадохме по-горе.

След като проектът завърши компилирането, ще бъдете попитани от кой портфейл да изпратите транзакцията. Просто напишете deployer и продължете.

Минтване и запитване

За да изпълним минт на NFT, трябва да изпратим транзакция със структурните данни MintMsg struct data/ MintMsg като JSON аргумент с метаданните, включени в свойството на разширението. Това е JSON string, който ще използваме:

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

$ archway tx --args '{ "mint": { "token_id": "1", "owner": "archway1e5fglhr2ml6rwhvqzezd9035hhwfl37l8u4c4h", "extension": { "name": "Autumn Sunset", "description": "Sunset in Berlin during autumn.", "image": "ipfs://QmSmUJPHNRjkA47AvvQ9eA7AzEGDJ9o4azrZvhUAViFLzk/autumn-sunset.gif", "attributes": [ { "trait_type": "city", "value": "Berlin" } ] } } }'

Mint

За да потвърдим, че нашите NFT се съхраняват правилно във веригата, стартираме командатаquery указваща token_id , който използвахме в предишната команда

$ archway query contract-state smart --args '{ "nft_info": { "token_id": "1" } }'

NftInfo

Прехвърляне

За трансфер на токен, трябва да изпратим съобщениетоTransferNft message с адрес на получател(в нашия случай, alice) и token_id:

$ archway tx --args '{ "transfer_nft": { "recipient": "archway1t5mqd4mcp5jy88m5fed9zaegpgzcrrfjnet76t", "token_id": "1" } }'

TransferNft

След това, може да запитваме състоянието на договора и потвърдим това alice е новият получател на токен, използвайки съобщениетоOwnerOf message:

$ archway query contract-state smart --args '{ "owner_of": { "token_id": "1" } }'

OwnerOf

Заключение

Както можете да видите, създаването на NFT интелигентен договор в Archway е невероятно просто и изисква минимални усилия. И с магията на Archway, за всяка транзакция, направена с NFT колекцията, разработчикът получава награди, записани в самия протокол!

Ако искате да проверите изходния код, обхванат в този урок, той е наличен в нашето contracts examples repository/ хранилище с примери за договори. Ако се интересувате да научите за еволюцията на NFT, препоръчвам ви да разгледате това много информативно ръководство от OpenSea.

В последваща публикация ще научите как да създадете приложение за интерфейс, за да покажете колекцията, която току-що създадохме. Останете на линия!

Имате въпроси? Присъединете се към Discord, там ще намерите отговорите!

Archway е платформа за интелигентни договори, която възнаграждава разработчиците. Проектиран за гъвкаво развитие и лесно внедряване в Cosmos, Archway позволява мащабируеми dApps между веригата, които достигат до възможно най-много потребители и активи.

Готови ли сте да изграждате? Проверете нашета документация.

Искате ли да сте в течение с най-новото в Archway?

Newsletter // Discord // Twitter // Github

Оригинална статия: https://blog.archway.io/how-to-build-mint-and-transfer-nfts-on-archway-64f80c62ffe5

--

--

KeithbmBG
KeithbmBG

Written by KeithbmBG

Bulgarian crypto enthusiast — разберете първи и участвайте заедно с мен! Twitter:KeithbmBG

No responses yet