NFT на базе The Open Network

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

Отличия TON от других блокчейнов

Начнем с того, что блокчейн TON сам по себе является отличным базисом для размещения NFT, и тому есть две причины:

1. Дешевое размещение токенов

Сеть TON славится своими низкими комиссиями за транзакции, это касается и NFT. За размещение 1 единицы NFT вам потребуется заплатить ~0.05$, что на порядок ниже, нежели в сети Ethereum. За условную NFT коллекцию, состоящую из 5000 элементов, вам потребуется заплатить 250$. Для сравнения, размещение точно такой же коллекции в сети Ethereum обойдется вам в ~100 000$. За счет такого дешевого размещения уменьшается порог входа для авторов, которые хотят разместить свои работы в блокчейне для продажи.

2. Быстрое и бесперебойное размещение токенов

Блокчейн TON построен на принципе шардирования (создания блокчейна в блокчейне). Этот метод позволяет блокчейну TON сохранять высокую скорость работы под колоссальными нагрузками, при которых любой другой блокчейн поднял бы комиссию за транзакции и увеличил бы время этих самых транзакций. В NFT эта особенность также нашла свое применение. Например, если автор захочет разом разместить 1 000 000 своих NFT на маркетплейсе, это никак не повлияет на скорость работы сети и на её комиссию за транзакции. Эта особенность блокчейна также подходит для создания метавселенных на базе TON.

Эти 2 ключевых момента являются показателем того, что работа NFT Смарт-контракта в сети TON будет являться эталонным примером для всех остальных блокчейнов.

Стандарты смарт-контрактов для NFT в TON

Теперь разберем принцип работы NFT Смарт-контракта в TON, его расширения и как его применимость может кардинально изменить рынок NFT.

Принцип работы NFT Смарт-контракта в TON

По текущему стандарту все NFT в TON делятся на две сущности: непосредственно NFT-токен и коллекция NFT-токенов. Стоит уточнить, что каждый токен, как и коллекция — это отдельный смарт-контракт, а значит и адрес в блокчейне TON.

Смарт-контракт NFT-коллекции является хранилищем общих данных каждого отдельного элемента NFT-коллекции. На примере NFT-коллекции Минтозавры: если у вашего NFT-элемента есть ссылка на его контент, то домен https://mintosaurs.com будет храниться в смарт-контракте NFT-коллекции, а остальная его часть — атрибут Generalissimus, — будет храниться в смарт-контракте NFT-элемента. В комбинации эти 2 смарт-контракта выдают нам https://mintosaurs.com/generalissimus.

Также смарт-контракт NFT-коллекции отвечает за добавление NFT в сам блокчейн (mint / minting / чеканка).

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

Расширения для смарт-контрактов TON

Для вышеописанных смарт-контрактов существуют расширения:

1. NFTRoyalty — параметр, отвечающий за процентные отчисления с будущих продаж данного токена. Например, вы установили параметр NFTRoyalty в размере 10%. Вы продали ваш токен покупателю и новый владелец решил перепродать ваш токен за 100 Toncoin. С этой перепродажи вы получите 10 Toncoin.

2. NFTEditable — добавляет в смарт-контракт NFT-элемента и NFT-коллекции параметр, отвечающий за возможность добавления адреса Редактора данных. Благодаря редактору данных появляется возможность взаимодействия NFT между собой. Например, вы купили NFT боевого меча и NFT огненных чар. Совместив эти 2 NFT вы получите совершенно новый NFT-элемент с измененными характеристиками и атрибутами.

3. NFTUpgradable — добавляет в смарт-контракт NFT-элемента и NFT-коллекции параметр, отвечающий за возможность добавления адреса Редактора кода. Благодаря редактору кода появляется возможность создания еще более интересного и продвинутого взаимодействия NFT между собой. Например, вы купили NFT боевого меча и NFT огненных чар. Совместив эти 2 NFT вы получите совершенно новый NFT-элемент с измененными характеристиками, атрибутами и внешним видом, который будет зависеть от того, какие NFT вы объединили друг с другом.

Расширения для смарт-контрактов NFT-элементов и коллекций в TON позволяют добиться новых и интересных механик, которые вы вряд ли увидите в других блокчейнах. Да, на данный момент известные NFT-коллекции вводят взаимодействие между своими NFT. Как пример — BAYC выпустили NFT Serum (сыворотку), которая при взаимодействии с их NFT Bored Ape изменяет его внешний вид и характеристики. Однако, данный процесс реализован не в самом блокчейне, а на отдельном сайте. В блокчейне TON вы сможете реализовать данную механику в самом смарт-контракте.

Формат хранения данных

Для хранения контента самой NFT-коллекции предусмотрено 2 варианта:

1. Offchain (Оффчейн) – смарт-контракт хранит только ссылку на JSON-файл.

2. Onchain (Ончейн) – смарт-контракт хранит все данные в блокчейне в формате ключ — значение. Ключом может выступать произвольная строка. Строки по типу «name», «description», «image» являются стандартизированными.

Оба варианта можно совместить для раздельного хранения части коллекции в оффчейне, и другой части в ончейне.

Как работают смарт-контракты NFT для маркетплейсов, аукционов и продажи

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

Пример NFT в блокчейне TON, выставленных на продажу на маркетплейсе:


Подробности о проекте читайте в Telegram-канале коллекции Минтозавры

Покупателю для участия потребуется лишь отправить Toncoin на адрес смарт-контракта аукциона. Если покупатель отправил достаточное количество Toncoin, то NFT автоматически передается покупателю, а Toncoin распределятся по заданным параметрам между продавцом, автором и маркетплейсом. Стоит уточнить, что аукционы с некорректными данными попросту не будут отображаться в интерфейсе маркетплейса.

Маркетплейсы вправе добавлять в свои смарт-контракты сторонних получателей, например, при условии партнерской программы или же отчислений в виде пожертвований в благотворительный фонд.

Технические особенности NFT-смарт контрактов в TON

Разберем теперь NFT-смарт контракт с технической точки зрения.

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

Обязательными для хранения определяются следующие поля:

1. index — порядковый номер токена в коллекции, либо уникальный номер единичного NFT, если он не содержится в коллекции;

2. collection_address — адрес смарт-контракта коллекции NFT, либо нулевой адрес для единичных NFT;

3. owner_address — адрес владельца токена;

4. editor_address — адрес редактора токена;

5. individual_content — произвольное содержимое конкретного токена.

Для реализации смарт-контракта NFT-элемента предлагаются четыре обязательные функции:

1. transfer — внутренний метод для смены владельца токена, в нем передается информация о новом владельце и описание того, что данный владелец должен сделать с данным токеном;

2. edit — внутренний метод, позволяющий отредактировать содержимое смарт-контракта конкретного токена, а также передать права на редактирование другому редактору;

3. get_nft_data — публичный метод, возвращающий все обязательные поля токена (статус инициализации, информацию о коллекции, владельца, редактора и содержимое);

4. get_static_data – отправляет в ответ неизменяемые данные: порядковый номер и адрес смарт-контракта коллекции.

Выше мы описывали расширения для стандарта смарт-контракта NFT в TON. Разберем NFTRoyalty с технической точки зрения.

Расширение добавляет еще один обязательный метод в виде royalty_params. Он отвечает за процентные отчисления с последующих продаж NFT-элемента. Здесь же указывается адрес, на который будут приходить эти отчисления. На входящее сообщение get_royalty_params смарт-контракт должен отправить в ответ royalty_params данного NFT-элемента.

Больше подробностей о технических аспектах блокчейна TON в Telegram-канале Дайте TON!