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

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

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

NFT изнутри или что не так с вашими 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
Token + media = cryptoart JUSTIN CONE

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

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

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

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

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

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

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

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

On-chain

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

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

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

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

Источники

1616
22 комментария

Фил, спасибо тебе огромное. Ты большущий молодец!)... У меня тут созрело несколько вопросов. 1. Как отличить NFT от не NFT? 2. Какие еще задачи, помимо токенов, может обслуживать смарт-контракт? И чем они могут быть полезны создателю и пользователю? 3. Мне понятно, как обстоят дела со статичными медиа, и возможно даже с не статичными файлами, но как, например, обстоят дела с играми? Не до конца понятен алгоритм как со стороны создателя, так и со стороны пользователя, который приобрел игру на NFT, если так вообще можно. Или не игру, а игровой элемент, который он собирается использовать в какой-либо игре. 4. Хотелось бы еще узнать про разные кошельки и в особенности про crypto wallet от Opera. 5. Также интересно узнать подробнее о блокчейне на валюте Tron. 6. Можно ли встроить в блокчейн такую программу, которая будет как бы видоизменять медиа? Что-то вроде генератива внутри? И можно ли вообще туда прикрутить какие-то проги, например, те же нейронки, которые будут восстанавливать медиа по хэшу? 7. Хочется подробнее про газ узнать. Как происходит весь этот процесс и при чём тут вообще газ? 8. Не знаю, слышал ли ты про скандал на арт станции и, если слышал, то хочется подробнее узнать, почему пользователи отказались от введения NFT на площадке. И наверное ещё куча вопросов, но пока не могу вспомнить 😅. Возможно, ответы на какие-то вопросы ты уже писал, но тема обширная и сложная, так что не обессудь 😉. Ещё раз спасибо большое!

3
Ответить

Буду постепенно отвечать.
Сходу,
6) Можно,  уже сделано: https://async.art
7) https://blog.bybit.com/ru-ru/learn-ru/eth-gas-ru/

2
Ответить

Лучшая статья про нфт. Спасибо, именно это информация и интересовала. Жду новых статей)

2
Ответить

Еще вопрос. "Rarible - Hash для метаданных и для медиа - IPFS."
 А откуда у Вас эта информация? Просто если открыть видео на рарбле то оно показывает адрес storage.opensea.io
Например, здесь
https://rarible.com/token/0xd07dc4262bcdbf85190c01c996b4c06a461d2430:387934:0x629b9443dac3e80171f847b4dade69565602beb6

Ответить

В интерфейсе сайта может использоваться более быстрый источник, чем IPFS. важно, какой URI отдает метод tokenURI (или аналог) смарт-контракта

1
Ответить

"NFT на самом популярном блокчейне, Ethereum, это просто записи в таблице смарт-контракта, обслуживающего операции с этим токеном." - можете, пожалуйста, разить эту тему, или сказать где узнать подробнее про это, так чтобы новичок понял. Я так понимаю площадка (допустим рарибл) создает смарт-контракты и в ее таблицу вписывается запись, каждый раз когда создается новый токен на этой площадке? Просто как эта таблица хранится и как она связана с другими транзакциями сети эфириума? 
Просто у меня обывательское представление о блокчейне как о блоках, которые накрывают старые блоки. Вопрос в том, есть ли отличие у НФТ токенов в сети эфириума созданных в 2019 году и тех что создаются сейчас. Еще раз спасибо за статью!

Ответить

Спасибо,  Фил,за тонкости, которых не знал.  Опенси не серьёзные оказались.  А на иных блокчейнах стоит ли запускать NFT? 

Ответить