May 16, 2022

NFT мини техничка

Привет всем молодым миллионерам! С вами Тёма!

Сегодня мы будем разбираться в том, что такое нфт и как они вообще работают

Сразу предупрежу самых умных любителей флипа - тут не будет ничего про сигнатуру и фронтран!

Начнем!

NFT = токен

Я считаю что стоит начать с самых основ. Поэтому начнем с того, что НФТ по сути своей является токеном, да, таким же как $USDT, $SAND, $UNI, просто другого формата

Что это за форматы такие?

Разберем три основных формата

Нативный токен

Это основной токен сети, в котором платится комиссия (в эфире - эфир, в полигоне - матик и тд). Информация о балансах таких токенов хранится прямо в самом блокчейне

ERC-20

Это уже не просто токен, это кастомный токен. Практически все монетки на эфире являются производной от данного алгоритма, те же $USDT, $SAND, $UNI и тд. Хранятся они не на кошельке, а в смартконтракте (да да, $USDT это смартконтракт по своей сути), то есть прямо в контракте хранится информация подобного вида:

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

Вот например контракт $USDT, ТЫК

Чтобы узнать баланс, перейдите в "Contract" (с зеленой галочкой штука), после в "Read Contract" и там найдите поле "BalanceOf". Вбейте туда интересующий вас адрес и получите количество $USDT на этом кошельке

ERC-721

Вот мы наконец и подобрались к НФТ (ERC-721 - научное название нфт)

НФТ - Non-fungi... Да, согласен, это все мы и так миллион раз слышали, поэтому объясню чуть по-другому. Если в случае с нативным токеном и ERC-20 токеном вы можете отсылать их в каком угодно количестве, хоть 10, хоть 0.123583, то ERC-721 токены (нфт) можно отсылать только поштучно

Нфт так же хранятся не на кошельке, а на контракте. Выгляди схема хранения нфт примерно вот так:

Слева указывается номер нфт, а справа адрес, которому принадлежит нфт. Соотвественно мы можем передать в контракт номер нфт и получить кошелек холдера

Вот например контракт Otherdeed (земли BAYC) ТЫК

Мы все так же можем перейти в "Contract", после в "Read Contract" и там найти уже новое поле, а именно "ownerOf". Вбиваем туда интересующей нас номер нфт и получаем адрес холдера!

Так, теперь мы уже крутые и знаем разницу между разными протоколами, но все же, что такое это ваше нфт и как там вообще оказались картинки???

Нфт = сайт

Да, любая нфт является по своей сути обычным сайтом!

А теперь разберемся более подробно

Существует два основных вида хранения нфт: On-Chain и Off-Chain

Off-Chain

Это хранение нфт не в блокчейне! Да, вот и децентрализация ваша надуваловом оказалась (ладно, шучу, дальше об этом подробнее)

Это наиболее распространенный вариант для нфт, потому что он тратит меньше газа на минт (подробнее о газе в статьях про EVM), но если коротко, то ссылка (просто небольшой набор символов) занимает намного меньше памяти, чем полноценная картинка (очень много символов, в разы больше), а газ очень сильно зависит от объема передаваемой памяти (чем больше информации передаете, тем больше газа платите)

Но чем по своей сути является хранение Off-Chain?

Это просто хранение ссылки на сторонний ресурс (просто сайт) с картинкой. Давайте разберем это на примере все тех же Otherdeed (земли BAYC), напоминаю их контракт - ТЫК

Теперь мы снова переходим в контракт и находим поле "TokenURI" и вводим туда номер интересующей нас нфт

Вау! А вот и ссылка! Давайте по ней перейдем (просто вбейте в поисковую строку)

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

Но где же картинка???

Теперь мы копируем поле "image" (я его уже выделил) и снова просто вбиваем его в поисковую строку

Оп! А вот и картинка появилась!

Как мы можем увидеть справа в инструментах разработчика (серое поле) у нас имеется просто ссылка на .jpg файл и все, вот ваше нфт

On-Chain

А вот и децентрализация подъехала, ведь это хранение нфт непосредственно в блокчейне! Но как???

Суть тут в том, что мы храним полноценную картинку в тексте, то есть если раньше по запросу "TokenURI" вам выдавала ссылку на сайт, то теперь вам выдает просто сайт, в том смысле что это ПОЛНОСТЬЮ КОД ВСЕЙ СТРАНИЦЫ САЙТА

Давайте так же на примере попробуем разобрать работу данного вида нфт

Для примера возьмем контракт коллекции OnChainMonkey - ТЫК

Переходим во все то же поле "Contract", там снова в "Read Contract", снова находим "TokenURI" и вводим туда номер интересующей нас нфт

Блин, в этот раз выглядит в разы страшнее!

Так, не отчаиваемся, берем себя в руки и снова копируем все что видим и вбиваем в поисковую строку

Еще один набор непонятных символов? Опять же, нет!

Тут мы так же можем увидеть название нфт "OnChain Monkey #1111", трейты и тд, но самое главное тут снова в поле "image". Снова копируем и вставляем в поисковую строку

(по факту то, что мы скопировали - svg завернутый в base64, если вы не поняли что я сейчас написал, то вам это и не надо)

Вау! BAYC на минималках привет!

Что мы видим перед собой? Да ничего особенного, простую страничку, на которой при помощь разнообразных геометрических фигур (справа в панели разработчика они описаны) изображена наша нфт!

Надеюсь статья была интересной и понятной!

Мой телеграмм канал - https://t.me/ortomich_crypto