NFT Metadata или сказ о долговечности NFT.
Казалось бы, наши горячо любимые NFT - это нечто неизменное. Через год-два а может быть, и все 10, они останутся точно такими же, как в момент покупки. А вдруг вы даже мечтаете подарить их любимому внуку на совершеннолетие?
Такую уверенность подпитывает вера в великий и могучий блокчейн, в котором что записано узлом, то не вырубишь и топором. Так-то оно так, но справедливо ли это для всех NFT? И дело тут даже не в том, что ушлый фаундер устроит сайлент экзит скам. Проблема тут немного глубже.
Задумывались ли вы о том, чем на самом деле владеете? Что вы получаете, когда покупаете NFT? Картиночку? Увы и ах, но нет.
Проблемы блокчейна
Блокчейн обладает огромным количеством преимуществ, за что мы его и любим. Но мир устроен так, что все должно быть в балансе. За неизменяемость и надёжность блокчейн платит невероятной стоимостью загрузки в него данных. Если вы просто отправляете транзакцию, то майнер фактически вписывает несколько строк (килобайт) в цепочку. Именно за это вы, собственно, и платите комиссию в несколько баксов. Подробнее про это тут.
Но что, если дело доходит до крупных файлов?
К примеру, мы хотим запихнуть в блокчейн фильм Blade Runner 2049. Ок. Для начала вспоминаем, что размер каждого полного блока, обрабатываемого блокчейном эфириум, составляет около 1 МБ, что уже сулит ряд проблем. Но мы не из пугливых. Идем дальше. Дабы не утомлять вас формулами да расчетами, сразу скажу, что загрузка 1 ГБ данных в блокчейн эфира стоит в районе 17500 ETH (в зависимости от газа) или $31 500 000 (в зависимости от курса). Соответственно, если вы собираетесь поместить в цепочку вышеупомянутый фильм, то загрузка в более-менее приличном качестве обойдётся вам дороже, чем продакшн всего фильма.
Что там с NFT?
Тем временем все изображения NFT коллекции c саплаем 10000 в среднем весят приблизительно тот самый гигабайт. Теперь представьте, как много проектов готовы потратить столько денег, чтобы увековечить все свои картиночки.
Что же делать в этой ситуации?
Решение дилеммы оказалось достаточно простым. Внутри каждого NFT есть ссылка на картинку или любой другой медиа файл (каким способом и где это добро хранится - вопрос со звездочкой.). Так что по сути, покупая NFT, вы получаете запись, что вы владелец токена порожденного неким смарт контрактом. И уже внутри этого токена лежит ссылка на те файлы, которые принадлежат вам. Для простоты понимания представьте ПТС и сам автомобиль.
Для того чтобы нам лучше осознавать, почему мы фактически владеем ссылкой, как себя обезопасить, чего ждать и что вообще происходит, нам нужно немного погрузиться в понятие Metadata.
Пляски с Metadata
Для начала давайте уясним два простых факта.
Первое: смарт контракт коллекции - это адрес, который содержит некий код. Этот код является своеобразной конституцией, в которой прописаны основные правила/законы, регулирующие жизнь коллекции. Никаких картинок она не содержит.
Второе: когда мы говорим о своем NFT, технически мы говорим о ERC721 токене. Картиночки в нем тоже, увы, нет. Зато он позволяет прикрепить JSON файл с metadata, в котором содержится чудесный рассказ именно об этом токене. Эта метадата и есть тот самый вкус и цвет любого NFT. Это именно то, что делает токены невзаимозаменяемыми/уникальными. И только в этом месте появляется информация, в каких степях искать наш неуловимый джипег.
Из кода ERC721 следует, что функция tokenURI в качестве значения получает токен ID, преобразует его уникальный JSON файл и возвращает вам строку с метатадой.
Давайте посмотрим на примере Hedz by Matt Furie.
Открываем любой маркетплейс, находим коллекцию и кликаем на иконку смарт контракта.
Далее "Contract" → "Read contract"
Находим функцию "tokenURI" и передаем ей ID токена.
После копируем линк, вставляем в поисковую строку браузера и видим метадату.
Находим линк на картинку, переходим по ней и наконец-то получаем нашу прелесть.
На данном этапе мы нашли путь к картиночке, что уже неплохо. Благодаря этому мы можем понять, где именно она хранится. И вот тут начинается самое интересное. Очевидно, что не все способы хранения одинаково полезны. Давайте выяснять, какими они бывают, в чем плюсы и минусы.
Способы хранения
Централизованные серверы
Самый не тру способ. Но большинство коллекций хранят свои джипеги именно так, потому что для разработчика этот способ самый быстрый и самый дешевый. Цель его использования до банальности очевидна: как можно быстрее залить пачку картинок и выпустить этот скам на рынок. А что со всем этим добром будет через неделю, никого не волнует.
Плюсы здесь только для создателя. Ну а все минусы достаются холдеру. Начиная с того, что девелопер по желанию левой пятки может изменить содержащийся по адресу файл (в том числе удалить) и заканчивая тем, что сервер может устать и прилечь отдохнуть. В этом случае в блокчейне останется запись, что вы - владелец некого токена. Вот только ссылка на картинку превратится в тыкву, ибо линк, по которому она запрашивается, теперь ведет на страничку, где красуется "404 not found".
Исходя из всего этого, данный способ является наименее предпочтительном. Он не ваш бро. Если у вас есть подозрения, что приглянувшаяся вам коллекции используют этот метод, то время холда должно стремиться к нулю.
Примерами проектов, выбирающих такой способ, выступают большинство низкопробных деген коллекций, о которых даже нет смысла говорить.
Распределённые узлы хранения
Существует более надежный способ. Это децентрализованные серверы, которые превращают множество компьютеров в узлы хранения. Например, IPFS.
Прелесть в том, что невозможно узнать, какой именно узел поддерживает тот или иной файл. Соответственно, пока хотя бы один из множества узлов хранит эти данные (а они будут распределены по многим узлам) их невозможно вывести из сети.
И тут, казалось бы, проблема решена. Но я бы не спешил радоваться.
Да, мы больше почти не переживаем за упавший сервер. Гуд. Но тут тоже есть свои нюансы. Во-первых, это шаловливые ручонки разработчика, который все еще может в любой момент изменить картинку. За примерами далеко ходить не нужно. В сентябре 2022-го подобное проворачивали ребята из RTFKT с CloneX. Нежданно-негаданно они изменили картинку у CloneX #7968 и сделали ее похожей на Леброна Джеймса.
Леброна мы, конечно, любим, но децентрализацию мы любим больше.
Но все не так плохо. Этого можно избежать, если metadata коллекции была заморожена. В этом случае создатель коллекции чисто физически никогда не сможет ее изменить.
У вас есть уверенность, что компании, предоставляющее эти хранилища, будут пребывать в добром здравии все то время, на которое вы рассчитываете хранить ваш айтем? Ибо если они, к примеру, разорятся, то у меня есть огромные сомнения, что они продолжат поддерживать эти узлы.
Так что если вы хотите подержать NFT несколько месяцев или даже лет, то это вполне себе рабочий метод (при условии замороженной метадаты). Но если у вас горизонт планирования чуть дальше, то стоит регулярно ставить свечку за здравие сервиса, который хранит медиа вашей коллекции.
Примеров проектов, использующих такой метод, масса. Практически все более-менее приличные PFP коллекции выбирают именно его.
On-Chain
В предыдущих способах основная проблема в том, что вам следует полагаться на каких-то третьих лиц. А мы в крипте не для того, чтобы доверять чему-то кроме блокчейна. Благо в индустрии есть гигачады, которые умудряются засунуть изображение в блокчейн напрямую.
Как они это делают? Нет, они для этого не платят конские комиссии (хотя есть и такие). Чаще они выдумывают какие-то хитроумные способы, чтобы добиться этого символами.
Отличными примерами могут служить Autoglyphs и Art Blocks. Я про них уже подробно писал тут и тут, так что не буду повторяться.
OnChainMonkey, в свою очередь, яркий пример PFP коллекции, которая, используя векторный формат графики SVG (язык разметки) записывает в блокчейн свою картинку текстом. Мы могли бы подробнее рассмотреть именно их, но поддержим отечественного производителя и покопаемся в ежах от Spiridono. Там используется тот же метод.
Действуя по уже известному алгоритму, находим метадату для Edgehog #4072.
Копируем код картинки и вставляем в поисковую строку браузера.
Стоит ли говорить, что метод On-Chain самый предпочтительный? Коротко говоря, это ваш единственный настоящий бро.
И давайте еще рассмотрим пару интересных методов, к которым прибегают некоторые коллекции, чтобы доказать нам легитимность своих картинок, минимально задействуя блокчейн.
Как это делают Cryptopunks
Причисленные Пастафарианской церковью к лику святых Cryptopunks на момент своего выхода тоже прекрасно понимали ограничения блокчейна. Но очевидно, что эти тигры нашли выход.
Они собрали из всех панков одно большое изображение 2400х2400px, высчитали его SHA256 хэш и прописали этот хэш в контракте.
Соответственно, вы тоже можете лично высчитать хэш этой картинки и сверить получившиеся значение с указанным в контракте. Финт в том, что если вдруг хотя бы один пиксель пикчи будет изменен, то хэш не совпадет, и вы с чистой совестью сможете расстроиться, а следом пожаловаться твиттеру/маме/ЕСПЧ.
Благо Мэтт и Джон сами понимали, что это тот еще костыль. Спустя четыре года после выхода коллекции таки преобразовали панков в SVG и залили их в новый контракт. Теперь в новом контракте, который называется "CryptoPunks: Data", с помощью функции "punkImageSvg" можно получить код любого панка прямо из контракта.
Правда, браузер вам такое собрать не поможет, так что воспользуйтесь, например, SVG редактором от FreeCodeFormat.
Как это делают Bored Ape Yacht Club
Гарные хлопцы из Yuga Labs пошли похожим маршрутом. Они поочередно высчитали хэш от изображения каждой обезьяны, затем конкатенировали все результаты в один мегахэш длинной в 640 000 знаков и уже от него высчитали новый хэш, который и прописан в контракте. Ребята явно читали книгу "Кради как художник".
Соответственно, чтобы все это проверить, вы тоже можете провести аналогичные вычисления. У - удобство. Если все-таки решитесь этим заняться, то флаг вам в руки, барабан на шею и вот этот линк в помощь.
Заключение
Мир NFT - это еще тот дикий запад, где каждый норовит вас одурачить и забрать столько денег, сколько вы из-за своей неосведомленности готовы отдать. И не так обидно, когда это происходит во время флипов. Там всем очевидно, что это игра в горячую картошку и кто последний, тот и холдер. Совсем другой разговор, когда вы покупаете что-то дорогое в надежде хранить много лет, а по факту опять остаётесь ни с чем.
Так что твердо и четко запоминаем: в подавляющем большинстве случаев
невзамозаменяемый != неизменяемый
При планировании долгосрочных крупных инвестиций в NFT обязательно помните этот неоспоримый факт. Лично проверяйте, что там под капотом каждой коллекции, и не садитесь за стол с шулерами.