June 11, 2022

NFT изнутри на основе ethereum

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

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

Блокчейн

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

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

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

Самый популярный блокчейн - блокчейн 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

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

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

On-chain*

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

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

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

IPFS \ Pinata

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

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

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

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

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

Пример хэша картинки:

QmahYjHD6SayTZTdyvH7GyaeiwU85HRm7FUPvnaNmfcghA

Вывод

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

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

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

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

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