Friday 14 January 2022

NFT изнутри или что не так с вашими NFT

 Моя первая статья вышла больше месяца назад. Я благодарен всем читателям и комментаторам за внимание и обратную связь! Это была статья ознакомительного уровня. Теперь давайте попробуем пойти немного глубже и посмотреть, как устроен невзаимозаменяемый токен изнутри. И какая из-за этого возникает важная проблема.

Сейчас ETH - самый популярный блокчейн для NFT.

Если вы покупаете NFT, то скорее всего вы покупаете NFT на эфире.

Исключение - карточки NBA Top Shots (блокчейн FLOW) и несколько коллекций на блокчейне WAX.

Основная же масса токенов, продающихся на OpenSea и Rarible, а также все работы на NiftyGateway и Foundation - это токены на эфире. Поэтому говорить пока будем про них.

Блокчейн, смарт-контракт, токен

Токены живут на блокчейнах. Давайте быстро освежим в памяти, что такое блокчейн. И причем тут смарт-контракты.

Блокчейн

Блокчейн - распределенный (децентрализованный) реестр. Или распределенная база данных. То есть данные, записанные в блокчейн, хранятся на множестве компьютеров одновременно, и поэтому не подчиняются никакому регулирующему органу. Данные хранятся в блоках. Данные новых блоков не должны противоречить данным предыдущих, иначе они не будут внесены в цепочку.

Блокчейны устойчивы к взломам, попыткам манипуляций и обеспечивают надежное хранение данных за счет распределенности.

В блокчейне можно хранить разные данные.

Самый популярный блокчейн - блокчейн Bitcoin. В нем хранятся только данные об операциях с этой криптовалютой.

Ethereum и смарт-контракты

Но что если компьютеры, обслуживающие блокчейн (ноды) будут не только хранить данные, но и исполнять код?

Наверное, какой-то такой вопрос задавал себе Виталик Бутерин перед тем, как придумать Ethereum - второй по популярности блокчейн в мире.

В Ethereum вы можете загрузить в блокчейн свою программу и она будет исполняться на нодах сети. Эта программа и называется смарт-контракт.

Возможность исполнять смарт-контракты - главная особенность Ethereum. А одноименная криптовалюта - это не ценность сама по себе, она нужна для того, чтобы обеспечивать расчеты внутри системы. Самый кайф в том, что раз валюта у нас тоже на блокчейне, то смарт-контракты могут сами отслеживать переводы и производить эти переводы.

Токены

Смарт-контракт может обслуживать любую задачу.

Одной из самых распространенных задач оказалось обслуживание операций с некоторыми условными единицами ценности - токенами.

Токен появляется в тот момент, когда появляется смарт-контракт, его обслуживающий.

То есть обеспечивающий учет владения токенами, передачу и обмен токенов, использование токенов для выполнения каких-либо задач.

Токен, по меньшей мере, токен на эфире - в этом смысле отличается от физической монеты или жетона, которые есть у вас несмотря ни на что.

Ваш токен - это просто запись в таблице смарт-контракта.

В этой таблице записано - сколько токенов принадлежит какому ETH кошельку.

Передача токенов - это просто исполнение функции в смарт-контракте, которая переписывает данные в таблице владения.

Создание токена - добавление новой записи в эту таблицу.

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

NFT

Вы наверняка уже встречались с этими обозначениями: токен стандарта ERC-721, стандарта ERC-1155, стандарта ERC-998.

Что это за стандарты?

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

А кроме этого, они как раз обеспечивают хранение информации о том, какие именно токены кому принадлежат.

То есть и ваш NFT - это тоже только запись в таблице смарт-контракта.

А где тогда картинка?

Вот мы и подобрались к самому интересному.

NFT = запись в блокчейне + метаданные + медиа

Про запись в блокчейне разобрались, а где все остальное?

Медиа и данные об этих медиа в большинстве существующих сейчас токенов не хранятся в блокчейне.

Хранить большие объемы данных в блокчейне Ehereum очень дорого. Даже если вы просто захотите хранить название и, к примеру, вектор характеристик вашего NFT меча в блокчейне, это будет вам стоить дополнительных 20-30 долларов в момент выпуска этого меча. И каждое изменение в его характеристиках (если вы будете его улучшать, например), тоже нужно будет вносить в блокчейн, а, значит, платить за газ.

А большие медиа хранить не просто дорого, но еще и неудобно.

Поэтому в блокчейне обычно хранится только адрес (URI), по которому можно найти информацию о токене (metadata) и медиа.

Token + media = cryptoart JUSTIN CONE

Почему это плохо?

Из-за такой ситуации сам токен и медиа оказываются не связанными друг с другом.

Создать объявление

Токен хранится на блокчейне, а метаданные и медиа - где-то еще.

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

Или медиа будет изменено. Это легко может произойти, если метаданные и само медиа раздаются с серверов создателей токена.

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

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

Существующие решения

On-chain

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

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

Проекты, которые хранят медиа полностью на блокчейне:

  • Autoglyphs от легендарных Larva Labs. Первый проект с генеративными изображениями, да еще и хранящимися в блокчейне. Цены на автоглифы вполне соответствуют их статусу.
  • Совсем свежий проект - ASCII Punks. 2048 панков, составленных из ASCII символов, которые прекрасно хранятся в блокчейне. На мой взгляд - лучший трибьют криптопанкам ever. На момент написания статьи, еще даже доступны к покупке на первичном рынке.
Autoglyph #170

On-chain*

Условное хранение на блокчейне. Тоже очень надежный, но все-таки накладывающий некоторые ограничения на характер произведения, способ.

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

Добавляем здесь "условно", потому что для того, чтобы восстановить исходный токен все-таки понадобится дополнительное ПО, генератор, который восстановит токен по ДНК. Но если у вас этот генератор есть (или он хранится в надежном распределенном же хранилище, вроде IPFS), то вы от создателей токена перестаете зависеть. ДНК - навсегда в блокчейне, генератор у вас. То есть у вас есть полный контроль и над токеном и над медиа этого токена.

Примеры проектов.

  • CryptoKitties - в представлении не нуждаются
  • Avastars от известной в NFT тусовке команды NFT42, которая работал с Pranksy над NFTBoxes, к примеру
  • DeekHash - хулиганский перспективный проект, где можно из любой строки угодно сделать Deek. Строка с помощью хэш-функции превращается в ДНК, а днк и определяет внешний вид персонажа. ДНК хранится в блокчейне, обеспечивая тем самым интероперабельность и сохранность персонажа. На момент написания статьи, доступны к покупке на первичном рынке, то есть на сайте проекта.
  • Pixelchain Art - очень крутой проект, пиксельная графика, которая целиком хранится на блокчейне. Цвет каждого пикселя обозначается символом, и получившаяся строка записывается в блокчейн. Чтобы восстановить картинку, достаточно просто прочитать строку и сформировать изображение из пикселей закодированного цвета.
  • Artblocks.io - платформа для художников, которые совместно с командой платформы могут создавать небольшие алгоритмически генерируемые изображения, которые соответственно могут быть описаны векторно, и эти вектора хранятся в блокчейне.

IPFS \ Pinata

Очень многие NFT проекты сейчас используют IPFS для хранения метаданных и медиа для своих токенов.

IPFS расшифровывается как InterPlanetary File System. Если говорить очень упрощенно, то это файловая система, распределенная по множеству компьютеров.

В целом, это неплохое решение.

Когда вы загружаете файл или картинку в IPFS, вы получаете хэш этого объекта.

Этот хеш и будет определять адрес, по которому можно получить доступ к объекту в IPFS.

QmahYjHD6SayTZTdyvH7GyaeiwU85HRm7FUPvnaNmfcghA

Как видно по его виду, этот хеш можно удобно хранить в контракте.

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

Единственный способ гарантировать сохранность - закрепить (pin) этот объект, подняв собственный IPFS узел, или заплатить тем, кто сделает это за вас.

Примером такого сервиса является Pinata.

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

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

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

Arweave

Arweave - это платформа для децентрализованного хранения (на самом деле, не только)

информации.

В основе архитектуры лежит концепция не цепочки блоков (blockchain), а полотна из блоков (blockweave) - когда каждый следующий блок связан с двумя предыдущими.

Для подтверждения транзакций используется механизм Proof of Access. Для того, чтобы подтвердить новую транзакцию (запись информации), узел должен подтвердить быстрый доступ к уже хранящейся.

Таким образом, в сети Arweave узлы финансово мотивированы обеспечивать быстрый и бесперебойный доступ к хранящимся объектам.

И, главное, что платить за хранение данных в Arweave нужно только один раз - в момент загрузки.

На момент написания статьи разработчики Arweave декларируют стоимость в $0.005/MB.

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

Пока очень малое количество проектов используют Arweave, в основном все пользуются IPFS.

Как определить надежность вашего NFT?

Пару месяцев назад вышел сервис для проверки надежности NFT.

Но я его испытал, и на момент написания статьи он работает коряво.

Например, для многих нормально реализованных по 721му стандарту токенов он вообще не может определить URI метаданных, хотя функция tokenURI() в контракте этих токенов работает исправно.

Поэтому я бы советовал изучать информацию по каждому проекту самостоятельно, гуглить, связываться с разработчиками в twitter или discord, или изучать смарт контракт на Etherscan.

Ниже - небольшой обзор способов хранения метаданных и медиа для самых популярных NFT-площадок.

ArtBlocks

Метаданные и медиа хранятся в блокчейне

AsyncArt

Hash для метаданных и для медиа - IPFS.

infiNFT

Метаданные - в блокчейне.

Медиафайл - хэш в IPFS + Arweave

KnownOrigin

Hash для метаданных и для медиа - IPFS.

MakersPlace

Hash для метаданных и для медиа - IPFS.

Mintbase

Метаданные и медиа: хэш в IPFS + Arweave

NiftyGateway

Метаданные: Название коллекции и имя артиста хранятся в блокчейне. Некоторые названия работ - в блокчейне, некоторые офф-чейн.

Работа: IPFS Hash

OpenSea

Технология LazyMinting осложняет однозначное хеширование ресурса.

Метаданные и арт хранятся на собственном хранилище проекта.

Rarible

Hash для метаданных и для медиа - IPFS.

SuperRare

Hash для метаданных и для медиа - IPFS.

Вывод

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

Информация о медиа (метаданные) и само медиа к этому токену за редкими исключениями не хранятся на блокчейне.

В связи с этим, нужно тщательно проверять, насколько надежно хранят метаданные и медиа те проекты, NFT которых вы покупаете.

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

Так обстоят дела с NFT на Ethereum.

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

Future work

Тема NFT огромная и вопросов в ней пока больше, чем ответов. Эта статья - часть моего гайда по NFT.

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

Источники

No comments:

Post a Comment

SafeMoon — почему к проекту приковано внимание (и конечно о рисках)

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