Блог

Урок за 5 минут: Что такое динамический NFT и его возможности

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

Что такое динамический NFT (dNFT)

Во-первых, самое большое преимущество динамического NFT, как и его название, - высокая вариативность и масштабируемость. Она может представлять больше элементов, чем статические NFT, таких как анимация, звуки, интерактивные изображения и т. д., и производить изменения метаданных в зависимости от времени или условий. Например, динамическая NFT-артикуляция может представлять различные стили или выражать другие эмоции в разные моменты времени; динамический NFT-реквизит игры может быть улучшен по мере продвижения, что повышает интерактивность и удобство игры.
Динамический NFT может обновлять содержимое метаданных, тем самым изменяя внешний вид и атрибуты NFT.
В основном это связано с тем, что он принимает данные. Вы можете изменить атрибуты NFT с помощью "данных на цепочке" или "данных вне цепочки". К первым можно получить прямой доступ через смарт-контракт, а вторые необходимо получить в режиме онлайн через Oracle и затем добавить в блокчейн.

Как создавать свои собственные dNFT

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

Шаг 1: Определите дизайн

Прежде всего, вам необходимо определить дизайн NFT. Обратите внимание, что это относится не только к образу вашего NFT, но и ко всем планам этого проекта (white paper, roadmap и т.д.), потому что это напрямую повлияет на будущие изменения dNFT и написание смарт-контрактов. Например, вашим dNFT могут быть произведения искусства, игровой реквизит, музыкальные произведения, привязки физических активов и т.д. Вы должны учитывать изменяемость и интерактивность элементов, а также то, как они могут обеспечить большую ценность и опыт для владельца.
В dNFT, выпущенных MLB в прошлом году, данные игроков будут меняться вместе с игровыми записями.
Шаг 2: Выберите свой блокчейн

Далее вам нужно выбрать публичную цепочку, которую вы хотите опубликовать. Ethereum, BNB Smart Chain, Polygon и т. д. - все эти платформы поддерживают создание и выпуск динамических NFT. Обратите внимание, однако, что выбранная вами цепочка будет напрямую влиять на язык программирования, используемый для написания смарт-контрактов.

Шаг 3: Написание смарт-контрактов

Написание смарт-контрактов - важнейший шаг в создании динамических НФТ. Для разработки смарт-контрактов необходимо использовать Solidity или другие языки программирования, поддерживающие создание NFT (например, Rust, Vyper и Move). Этот контракт будет объединять метаданные для определения атрибутов и изображений НМТ. При создании динамического NFT необходимо определить, как и как часто будут меняться динамические элементы, а также как они будут взаимодействовать со смарт-контрактом после развертывания.
Давайте посмотрим на один из простых кодов dNFT:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";

contract DynamicNFT is ERC721URIStorage {
   using Counters for Counters.Counter;

   Counters.Counter private _tokenIds;

   constructor() ERC721("DynamicNFT", "DNFT") {}

   struct NftMetadata {
       string name;
       string description;
       string image;
       uint256 price;
       uint256[] dynamicAttributes;
   }

   mapping(uint256 => NftMetadata) private _nftMetadata;

   function createNft(
       address recipient,
       string memory tokenURI,
       string memory name,
       string memory description,
       string memory image,
       uint256 price,
       uint256[] memory dynamicAttributes
   ) public {
       _tokenIds.increment();

       uint256 newItemId = _tokenIds.current();

       _mint(recipient, newItemId);
       _setTokenURI(newItemId, tokenURI);

       _nftMetadata[newItemId] = NftMetadata(
           name,
           description,
           image,
           price,
           dynamicAttributes
       );

       emit NftCreated(
           newItemId,
           recipient,
           tokenURI,
           name,
           description,
           image,
           price,
           dynamicAttributes
       );
   }

   function getNftMetadata(uint256 tokenId)
       public
       view
       returns (NftMetadata memory)
   {
       require(
           _exists(tokenId),
           "DynamicNFT: metadata query for nonexistent token"
       );

       return _nftMetadata[tokenId];
   }

   function updateDynamicAttribute(
       uint256 tokenId,
       uint256 attributeIndex,
       uint256 newValue
   ) public {
       require(
           _exists(tokenId),
           "DynamicNFT: attribute update for nonexistent token"
       );

       NftMetadata storage metadata = _nftMetadata[tokenId];

       require(
           attributeIndex < metadata.dynamicAttributes.length,
           "DynamicNFT: invalid attribute index"
       );

       uint256 oldValue = metadata.dynamicAttributes[attributeIndex];

       metadata.dynamicAttributes[attributeIndex] = newValue;

       emit NftAttributeUpdated(tokenId, attributeIndex, oldValue, newValue);
   }

   event NftCreated(
       uint256 newItemId,
       address recipient,
       string tokenURI,
       string name,
       string description,
       string image,
       uint256 price,
       uint256[] dynamicAttributes
   );

   event NftAttributeUpdated(
       uint256 tokenId,
       uint256 attributeIndex,
       uint256 oldValue,
       uint256 newValue
   );
}

//This code is for educational purposes only, please do not invest in any assets.
Шаг 4: Напишите внешний интерфейс

После того как смарт-контракт написан, необходимо написать внешний интерфейс (Dapp, который может подключаться к кошельку), чтобы пользователи могли взаимодействовать с NFT. Вы можете использовать фреймворки вроде Web3.js для написания внешних интерфейсов, которые могут взаимодействовать с блокчейнами вроде Ethereum для осуществления продаж, переводов и запуска условий изменения NFT.

Шаг 5: тестирование и выпуск

Наконец, необходимо протестировать динамический NFT, убедиться в его работоспособности и выпустить его на блокчейн. После этого вы можете провести первичную продажу на платформе (созданной на шаге 4) или напрямую выставить NFT на продажу или аукцион на существующем вторичном рынке, таком как OpenSea, Rarible и т. д.

Заключение

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

Если вы ищете профессионального разработчика dNFT, обращайтесь к нашим экспертам по блокчейну.
Блокчейн и NFT