NFT-Библия (перевод статьи OpenSea)

Incrypted совместно с @gryazin специально для вас перевели статью OpenSea об NFT. Для более глубокого понимания темы NFT, мы решили переводить статью не «слово в слово»: мы заменили несколько английских идиом на русскоязычные, а некоторые обобщенные моменты сделали более детальными. Ну и еще добавили ссылок на контент от Incrypted. Приятного чтения!
Если вы живете в мире криптовалют какое-то время, то вы, вероятно, уже слышали о термине “Невзаимозаменяемый Токен” или “NFT”. Совершенно все равно, являетесь ли вы поклонником NFT или ничегошеньки о них не слышали. Этот пост будет полезен как ярым фанатам, так и абсолютно ничего незнающим о мире NFT людям.
Являясь маркетплейсом NFT, OpenSea повидал многое. Площадка знает почти каждый NFT-проект, появившийся в интернете с конца 2017 года. Как раз тогда и появился первый стандарт NFT. Спросите OpenSea о любом NFT-проекте. С большой вероятностью ребята знают про этот проект и даже разговаривали с его разработчиками. Экосистема NFT – это группа новаторов: от энтузиастов до разработчиков, от геймеров до предпринимателей и художников. Быть частью этого сообщества – огромная честь.
Этот пост написан для детального обзора NFT: технической анатомии ERC721, истории NFT, распространенных ошибочных представлений о NFT, а также текущего состояния рынка. OpenSea надеются, что он будет актуален как для новичков, так и для разбирающихся в данной сфере людей.
Что такое NFT?
Большинство дискуссий о NFT начинаются с идеи о возможности замещения, которая определяется как “способность заменить или быть замененным другим идентичным предметом”. Звучит очень сложно, не так ли? Чтобы получить представление о том, что может представлять собой NFT, просто подумайте о большинстве вещей, которыми вы владеете. Стул, на котором вы сидите, ваш телефон, ваш ноутбук: все, что вы можете пойти и продать на eBay. Все эти вещи подпадают под категорию NFT.
Невзаимозаменяемый Токен (англ. Non-Fungible Token) или NFT – это токен на блокчейне. Он представляет собой уникальный вид актива. Примеры: игровые и коллекционные предметы, цифровое искусство, билеты на мероприятия, имена доменов и даже права собственности.

Оказывается, взаимозаменяемые активы на самом деле являются чем-то необычными. Валюта – классический образец заменимого имущества. Пять долларов – это всегда пять долларов, независимо от серийного номера на конкретной пятидолларовой купюре, или от того, находятся ли эти пять долларов на вашей банковской карточке. Возможность заменить пятидолларовую купюру другой пятидолларовой (ну или пятидолларовой, если пошла такая пьянка) – вот что делает валюту взаимозаменяемой.
Обратите внимание, что взаимозаменяемость является относительной: на самом деле она применяется только при сравнении определенных вещей. Рассмотрим билеты бизнес-класса, эконом-класса и первого класса. Каждый билет взаимозаменяем в пределах своего класса, но вы не можете также поменять билет первого класса на билет бизнес-класса. Даже кресло, в котором вы сидите, взаимозаменяемо с креслом той же модели, если только вы не прикрепили к нему какую-то особенную спинку.
Любопытно, что взаимозаменяемость может быть субъективной. Возвращаясь к примеру авиабилета. Человек, которому небезразлично где он сядет: у окна или у прохода, не согласится, что два билета эконом-класса являются взаимозаменяемыми.
Примерно так же редкий пенни может стоить для меня 1 цент, но для коллекционера он будет стоить гораздо дороже. Далее мы увидим, что подобные нюансы становятся крайне важными при представлении перечисленных вещей на блокчейне.
NFT на блокчейне
Задолго до появления криптовалют, у нас уже были цифровые валюты (“милли” в Аэрофлоте, внутриигровые деньги). Точно также у нас были и невзаимозаменяемые активы. Например, доменные имена, билеты на мероприятия, внутриигровые предметы, юзернеймы в социальных сетях типа Twitter или Facebook. Все эти предметы мы можем назвать невзаимозаменяемыми цифровыми активами. Их можно различить по типам пригодности для торговли, ликвидности или способа использования. Многие из них невероятно ценны: только в 2018 году компания Epic Games заработала 2,4 миллиарда долларов на продаже костюмов в своей бесплатной игре Fortnite. По прогнозам, в 2025 году рынок билетов на мероприятия достигнет 68 миллиардов долларов, а рынок доменных имен продолжает уверенно развиваться.
У нас есть тонны цифровых вещей, мы просто никогда им не владели.
Теперь мы поняли, что имеем целые тонны цифровых вещей. Но в какой степени мы “владеем” ими? Если цифровое владение означает, что вещь принадлежит вам, а не кому-то еще, то в каком-то смысле она действительно принадлежит вам. Но если цифровое владение больше похоже на физическое владение (свобода владеть вещью и передавать ее кому-либо), то в случае с цифровыми активами дела обстоят иначе. Грубо говоря, вы владеете этими цифровыми активами в конкретных условиях. Например, попробуйте продать вещь из игры Fortnite на eBay. Вы обнаружите, что передачу цифровых активов от одного человека к другому вызовет массу трудностей.
И наконец на помощь приходит блокчейн! Блокчейн обеспечивает координационный слой (англ. coordination layer) для цифровых активов, давая пользователям право собственности и управления. Блокчейн добавляет в невзаимозаменяемые активы несколько уникальных свойств, которые в корне меняют отношения пользователя и разработчика с данным типом активов.
Стандартизация

Традиционные цифровые активы: от билетов на мероприятия до доменных имен не имеют единого лица в цифровом мире. Игра, скорее всего, представляет свои внутриигровые коллекционные предметы совершенно иначе, чем система продажи билетов в театр. Размещая NFT на блокчейне, разработчики могут создавать общие и пригодные для повторного использования, наследуемые стандарты, относящиеся ко всем NFT.
К ним относятся такие базовые примитивы, как право собственности, передача и контроль доступа. Дополнительные стандарты (например, особый вид NFT) могут быть наложены сверху для красивого отображения внутри приложений.
Они аналогичны другим блокам цифрового мира, таким как формат файлов JPEG или PNG для изображений, HTTP для запросов между компьютерами и HTML / CSS для отображения контента в Интернете. Блокчейн добавляет слой сверху, что дает разработчикам совершенно новый набор примитивов с контролем состояния, на основе которых строятся приложения.
Совместимость (англ. interoperability)
Стандарты NFT позволяют токенам легко перемещаться сразу в нескольких экосистемах. Когда разработчик запускает новый NFT-проект, NFT сразу же становятся доступны для просмотра в десятках кошельков, они продаются на маркетплейсах и даже отображаются в виртуальных мирах. Это возможно благодаря тому, что открытые стандарты обеспечивают понятный, последовательный, надежный и разрешенный API для чтения и записи данных.
Возможность торговли
Наиболее привлекательной функцией, предоставляемой совместимостью, является свободная торговля на открытых маркетплейсах. Впервые пользователи могут размещать товары на маркетплейсах и пользоваться инструментами торговли: например, аукционами в стиле eBay. Также, пользователи могут продавать NFT за любую валюту. Например, за стейблкоины.
Для разработчиков игр возможность торговли активами является переходом от закрытой экономики к открытой, свободной рыночной экономике. Разработчикам игр больше не нужно управлять каждой частью своей экономики: от предложения ресурсов до ценообразования и контроля над капиталом. Вместо этого они могут позволить свободным рынкам делать тяжелую работу!
Ликвидность
Моментальная торговля (англ.instant tradeability) NFT приводит к повышению ликвидности. Рынки NFT могут обслуживать разнообразную аудиторию: от прожженных трейдеров до начинающих игроков. Такой подход позволяет охватить наибольшую аудиторию. Как бум ICO в 2017 году породил новый класс активов, управляемых мгновенно ликвидными токенами, NFT расширяют рынок уникальных цифровых активов.
Неизбежная и доказуемая ограниченность (англ. Immutability and provable scarcity)
Смарт-контракты позволяют разработчикам устанавливать жесткие ограничения на размещение NFT и обеспечивать соблюдение правил, которые не могут быть изменены после выпуска NFT. Например, разработчик может запрограммировать создание определенного количества редких предметов, сохраняя при этом бесконечный запас более распространенных. Разработчики также могут прописать, чтобы эти правила не изменялись со временем. Это особенно интересно для искусства, которое в значительной степени опирается на жесткую ограниченность произведений.
Программируемость
Как и традиционные цифровые активы, NFT полностью программируемы. CryptoKitties (о которых мы поговорим позже) размещены в контракте, который содержит цифровых кошек. Многие из сегодняшних NFT имеют более сложную механику, такую как форжинг, крафтинг, случайная генерация и т.д.
Стандарты NFT
Стандарты NFT дают разработчикам гарантию, что активы будут вести себя определенным образом, и точно описывают, как взаимодействовать с базовой функциональностью активов.
ERC721
Впервые внедренный CryptoKitties, ERC721 стал первым стандартом для размещения NFT. ERC721 является наследственным стандартом контрактов Solidity smart. Это означает, что разработчики могут легко создавать новые контракты, совместимые с ERC721, импортируя их из библиотеки OpenZeppelin (прочитайте англоязычное полезное руководство по созданию вашего первого контракта на ERC721). На практике ERC721 относительно прост: он отображает уникальные идентификаторы, каждый из которых представляет собой один актив. А также адреса, которые отображают владельца этого идентификатора. ERC721 также предоставляет разрешенный способ передачи этих активов, используя метод transferFrom.
interface ERC721 {
function ownerOf(uint256 _tokenId) external view returns (address);
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
}
Если подумать, то эти два метода на самом деле все, что нужно для размещения NFT: способ узнать о принадлежности, и способ перемещения. Есть еще несколько других классных штуковин у этого стандарта, некоторые из них крайне важны для рынка NFT. Но ядро ERC721 является базовым.
ERC1155
ERC1155, разработанный командой Enjin, привнес в мир NFT идею “полувзаимозаменяемости”. В ERC1155 идентификаторы представляют не отдельные активы, а классы активов. Например, идентификатор может представлять собой “мечи”, а кошелек может владеть тысячами таких “мечей”. В этом случае метод balanceOf вернет количество мечей, принадлежащих кошельку, и пользователь может переслать кому угодно любое количество этих мечей через transferFrom, используя идентификатор “меч”.
interface ERC1155 {
function balanceOf(address _owner, uint256 _id) external view returns (address);
function transferFrom(address _from, address _to, uint256 _id, uint256 quantity) external payable;
}
Эффективность – это один из козырей ERC1155. С ERC721, если бы пользователь хотел передать 1000 мечей, ему пришлось бы изменять смарт-контракт через вызов transferFrom на 1000 уникальных токенов. С ERC1155 разработчику нужно всего лишь перевести от 1000 токенов. Такая эффективность, конечно же, сопровождается потерей информации: мы больше не можем проследить историю отдельного “меча”.
Обратите внимание, что ERC1155 предоставляет расширенный набор функций ERC721. Это означает, что актив ERC721 может быть построен с использованием ERC1155. У вас просто будет отдельный идентификатор и единичное количество для каждого устройства. Благодаря этим преимуществам, в последнее время мы стали свидетелями растущего внедрения стандарта ERC1155. Недавно в OpenSea был разработан репозиторий на Github для начала работы со стандартом ERC1155.

Составные компоненты
Составные компоненты, возглавляемые стандартом ERC-998, обеспечивают шаблон, по которому NFT могут владеть как невзаимозаменяемыми, так и взаимозаменяемыми активами. В мейннете было развернуто всего несколько компонентов NFT, но мы считаем, что есть невероятно захватывающие возможности для их использования!
…у cryptokitty может быть когтеточка и миска; блюдо может содержать в себе NFT “еда”. Если я продаю cryptokitty, я продаю и все имущество моего котика.
Не-Ethereumn стандарты
В то время как Ethereum – это место, где в настоящее время происходит наибольшая часть действий, есть несколько других стандартов NFT, которые появляются в других цепочках. DGoods, разработанный командой Mythical Games, сосредоточен на создании многофункционального кроссчейн стандарта, начиная с EOS. Проект Cosmos также разрабатывает модуль NFT, который может быть использован как часть Cosmos SDK.
Метаданные NFT
Как мы говорили ранее, метод ownerOf может помочь найти владельца NFT. Например, запросив ownerOf(1500718) по смарт-контракту CryptoKitties, мы можем увидеть, что владельцем CryptoKitty #1500718 на момент написания статьи является аккаунт с адресом 0x6452… Это можно проверить, посетив их аккаунт CryptoKitty на OpenSea или вебсайт CryptoKitties.co.

Но как OpenSea и CryptoKitties понимают, как именно выглядит CryptoKitty #1500718? И что насчет его уникальных атрибутов и названия?
Вот здесь и появляются метаданные. Метаданные предоставляют описательную информацию для конкретного идентификатора токена. В случае с CryptoKittty метаданные – это имя кошки, изображение кошки, описание и любые другие признаки (называемые “cattributes”, в случае с CryptoKitty). Например, билет на концерт, помимо имени и описания, в метаданных будет иметь дату мероприятия и тип. А вот метаданные для вышеуказанной кошки могут выглядеть примерно так:
{
"name": "Duke Khanplum",
"image": "https://storage.googleapis.com/ck-kitty-image/0x06012c8cf97bead5deae237070f9587f8e7a266d/1500718.png",
"description": "Heya. My name is Duke Khanplum, but I've always believed I'm King Henry VIII reincarnated."
}
Вопрос заключается в том, как и где хранить эти данные так, чтобы к ним могли получить доступ NFT-приложения.
On-chain vs off-chain
Сначала разработчики должны решить, какие метаданные представлять в on-chain, а какие поместить в off-chain. То есть, помещаете ли вы метаданные непосредственно в смарт-контракт, представляющий токены, или размещаете их отдельно?
Мет