Автор: Эш Ли, Ноа Хо
Источник: https://www.spectrumlab.io/zh/reports/erc6551%E7%95%B6nft%E7%A2%B0%E4%B8%8A%E5%90%88%E7%B4%84%E9% 8C%A2%E5%8C%85
Дискуссии по протоколу ERC-6551 постепенно разгораются в сообществе. Этот протокол открывает огромный потенциал для расширения NFT. ERC-6551 создает уникальный контрактный кошелек для каждого NFT через счет токен-бондов (TBA), позволяя хранить активы и записывать связанные действия. Это создает возможность проверки личности невзаимозаменяемых токенов (NFT) и комбинированных NFT. Копнув глубже, мы можем обнаружить, что ERC-6551 фактически предоставляет полнофункциональный кошелек для NFT, а «ключом» этого кошелька является сам NFT. В этой статье будет рассмотрена стандартная история развития NFT и рассмотрены предыдущие попытки расширения NFT. Поскольку ядром TBA является контрактный кошелек, мы также дадим краткое представление о контрактном кошельке. Наконец, мы углубимся в детали реализации протокола и его потенциальные применения.
1. История и текущая ситуация стандартов NFT
В качестве специального актива криптовалюты и цифрового искусства NFT предоставляет новый цифровой носитель произведений искусства и расширяет сценарии применения технологии блокчейн. В отличие от традиционных взаимозаменяемых токенов, каждый NFT уникален и связан с определенными метаданными, такими как изображения, игровой реквизит, музыка и другие электронные материалы. Таким образом, NFT можно использовать в качестве сертификата права собственности на электронные данные, которые люди могут собирать или обменивать. 3 мая 2014 года цифровой художник Кевин Маккой создал первую известную работу NFT «Квант». Это пиксельный восьмиугольник, состоящий из различных форм и выполненный в психоделическом стиле. Однако только с появлением ERC-721 (запрос на комментарии Ethereum 721) NFT действительно имел единый стандарт, предоставляющий разработчикам удобство применения в различных проектах.

ERC-721
ERC-721 тесно связан с историей развития CryptoPunks. CryptoPunks вышел в 2017 году и включает в себя 10 000 уникальных изображений размером 24x24 пикселя. Именно его успех привлек широкое внимание разработчиков и сообщества, заставив больше людей осознать огромный потенциал NFT. С тех пор он стал основой для многих проектов NFT и привел к разработке стандарта ERC-721. Стандарт был основан Дитером Ширли, техническим директором CryptoKitties. В январе 2018 года Уильям Энтрикен, Дитер Ширли, Джейкоб Эванс и Настасья Сакс совместно предложили стандарт ERC-721. Этот стандарт невзаимозаменяемых токенов реализует ABI, связанный с токенами, в смарт-контрактах, закладывая основу для создания, управления и передачи уникальных цифровых активов на Ethereum, открывая новую главу для художников, коллекционеров и рынка цифрового искусства.

Основные особенности ERC-721 заключаются в следующем:
Уникальность: в отличие от токенов ERC-20 (которые взаимозаменяемы и каждый токен идентичен любому другому токену), каждый токен ERC-721 уникален.
Право собственности и передача: этот стандарт токена позволяет определить владельца любого токена и позволяет владельцу или утвержденному лицу передавать токен.
Ассоциация метаданных: позволяет связать метаданные с каждым токеном, которые могут включать изображение, описание или другие соответствующие свойства токена.
Чтобы гарантировать свой статус стандарта, ERC-721 определяет следующие ключевые методы и события:
Такие методы, как BalanceOf(), OwnerOf(), Approved(), GetApproved(), setApprovalForAll(), isApprovedForAll(), TransferFrom() и SafeTransferFrom().
и такие события, как Transfer() и Approval().
Короче говоря, стандарт ERC-721 предоставляет механизм уникальных активов в Ethereum, гарантируя уникальность и право собственности на каждый актив, а также позволяя их проверять, продавать и управлять ими. ERC-721, стандарт невзаимозаменяемых токенов, добился взрывного успеха в области цифрового искусства и предметов коллекционирования. ERC-721 важно определяет
Однако, несмотря на то, что многие известные проекты были добавлены в приложения NFT, все же существуют некоторые ограничения, например, они не могут работать в качестве агентов или быть напрямую связаны с другими активами в цепочке. Для решения этих проблем сообщество предложило ряд расширений и новых стандартов, наиболее представительными из которых являются EIP3664 и EIP3525.
ERC-3664
Еще в мае 2021 года команда DRepublic предложила EIP-3664, протокол расширения атрибутов NFT. Это предложение изобретательным способом решает ограничения основных стандартов NFT, таких как ERC-721 или ERC-1155, такие как недостаточная выразительность атрибутов, трудности интеграции между NFT и централизованное хранение атрибутов.
В частности, EIP-3664 не требует внесения изменений в существующие стандарты ERC-721 и ERC-1155. Он динамически добавляет свойства в NFT, используя функцию обратного вызова интерфейса IERC721Receiver или IERC1155Receiver в методе mint NFT. Или это можно сделать, переписав метод приведения. Используя этот протокол, NFT может иметь любое количество атрибутов, прикрепленных к нему без ограничений.
В EIP-3664 все атрибуты реализуют интерфейс IERC3664. Базовые атрибуты включают несколько основных полей, таких как идентификатор, имя, символ, адрес URI, баланс и т. д., которые используются для описания метаданных NFT. Благодаря EIP-3664 расширения атрибутов NFT становятся более гибкими и настраиваемыми. Он обеспечивает стандартизированный метод реализации функций атрибутов NFT и легко интегрируется с существующей экосистемой NFT.
ERC-3525
EIP-3525 представляет полувзаимозаменяемые токены (SFT), которые можно рассматривать как активы между взаимозаменяемыми токенами (FT) и невзаимозаменяемыми токенами (NFT). Подобно NFT, токены SFT можно передавать в целости и сохранности с одного адреса кошелька на другой. Но, как и FT, SFT позволяет передавать между разными токенами только часть стоимости. Например, на другой участок земли можно передать только часть «жизни» земли. Несомненно, SFT превосходит FT по настройке и превосходит NFT по эффективности.

ERC3525 позволяет создавать многоуровневые структуры SFT, похожие на русские матрешки, для создания более сложных виртуальных миров и определения правил взаимодействия между различными уровнями. Используя ERC3525, NFT может хранить любую цифровую валюту. Это означает, что токены, имеющие экономическую ценность, могут быть встроены в NFT для достижения более богатых функций и методов взаимодействия. Например, SFT может содержать NFT, имеющий ценность, а другие токены могут быть вложены в NFT. Благодаря ERC3525 разработчики могут определять правила и логику SFT с помощью смарт-контрактов и настраивать определенные правила поведения и правила транзакций. Эти характеристики делают ERC3525 одним из важных стандартов в области NFT, предоставляя разработчикам и участникам проекта больше возможностей для творчества.
2. ЭРК-6551
представлять
Чтобы повысить масштабируемость и практичность NFT, предложение ERC-6551 направлено на предоставление каждому NFT тех же прав и интересов, что и пользователям Ethereum. Это означает, что NFT может не только хранить активы, но и записывать историю транзакций, что значительно расширяет сферу его применения. В соответствии с этим предложением держатели NFT могут создать эксклюзивный контрактный кошелек под названием TBA (Token Bond Account) для своего NFT для выполнения различных операций в цепочке. Это достигается за счет определения единого реестра – Registry. Этот реестр предназначен для назначения уникальных и фиксированных адресов учетных записей смарт-контрактов всем NFT и обеспечения того, чтобы контроль над учетной записью оставался полностью в руках владельца NFT. Примечательно, что это предложение полностью совместимо с существующими стандартами ERC-721 или 1155 без каких-либо изменений, а также адаптируется к большинству инфраструктур, поддерживающих учетные записи Ethereum.
Это нововведение предоставляет NFT те же функции, что и учетные записи Ethereum, открывая множество новых сценариев применения NFT. Например, с помощью этого предложения сложные активы в реальности, такие как персонажи ролевых игр, автомобили, состоящие из нескольких частей, диверсифицированные инвестиционные портфели и даже членские карты, могут быть преобразованы в формы NFT. Кроме того, это предложение не только совместимо со всеми существующими стандартами активов в сети, но также предоставляет возможности расширения для новых стандартов активов в будущем.
Как упоминалось выше, ERC-6551 позволяет создать кошелек, предназначенный для взаимодействия в цепочке для каждого NFT. Этот тип кошелька отличается от кошельков, которые мы обычно используем на таких платформах, как Metamask. На самом деле это контрактный кошелек, который представляет собой смарт-контракт, развернутый в сети Ethereum. Прежде чем мы углубимся в то, как это реализовано, давайте сначала поймем основные различия между этими двумя кошельками.
Контрактный счет
Учетная запись Ethereum — это объект, который хранит баланс Ethereum (ETH) и может отправлять транзакции в сети Ethereum. Учетные записи могут контролироваться пользователями или развертываться в виде смарт-контрактов.
Учетные записи в Ethereum имеют 4 поля:
nonce: счетчик, используемый для отображения количества транзакций, отправленных внешней учетной записью, или количества контрактов, созданных контрактной учетной записью. Каждая учетная запись может выполнить только одну транзакцию с заданным одноразовым номером, чтобы предотвратить атаки повторного воспроизведения, которые относятся к широковещательной рассылке и повторному выполнению подписанной транзакции несколько раз.
баланс: модель учета баланса, количество Вэй, принадлежащих этому адресу. Вэй — единица измерения Эфириума.
codeHash: этот хэш представляет код учетной записи на виртуальной машине Ethereum (EVM). Контрактные учетные записи имеют запрограммированные фрагменты кода, которые могут выполнять различные действия. Этот код EVM выполняется, если учетная запись получает вызов сообщения. В отличие от других полей учетной записи, это нельзя изменить. Все фрагменты кода сохраняются под соответствующим хешем в базе данных штата для последующего извлечения. Это значение хеш-функции называется codeHash. Для внешних учетных записей поле codeHash представляет собой хэш пустой строки.
StorageRoot: хэш хранилища. Merkle Patricia trie 256-битный хеш корневого узла, который закодировал сохраненное содержимое учетной записи (карта 256-битных целочисленных значений) и закодировал как trie как карту 256-битного хэша Keccak из 256-битного целого числа. ключи для кодирования RLP 256-битного целочисленного значения. Этот Trie кодирует хэш содержимого хранилища этой учетной записи и по умолчанию пуст.
Существует два типа учетных записей Ethereum: внешние учетные записи (закрытые ключи, управляемые пользователем) и контрактные учетные записи.
Внешние учетные записи (EOA): контролируются закрытым ключом, их codeHash пуст. Такие учетные записи могут отправлять и получать криптовалюты и взаимодействовать со смарт-контрактами. К ним относится наш часто используемый кошелек Metamask.
Контрактный аккаунт (CA): закрытого ключа нет, и его codeHash не пуст. Это смарт-контракт, развернутый в сети Ethereum, который управляет кошельком контракта через внешние учетные записи, взаимодействующие с контрактом.
В CA существуют стандартные контрактные кошельки, такие как абстрактные кошельки учетных записей ERC4337, и кошельки типа Native AA, такие как цепочки ZkSync и StarkNet, в которых нет традиционных транзакций и все учетные записи являются контрактными. В настоящее время у кошелька есть проблемы с правами собственности и подписи. Например, пользователи потеряют все свои активы, если потеряют закрытый ключ. Также существуют проблемы с небольшим алгоритмом подписи и ограниченными разрешениями. Кроме того, комиссия за обработку может быть уплачена только в одной валюте с помощью платежного вопроса ETH.
Не меняя уровень протокола консенсуса, он может помочь Ethereum двигаться в направлении абстракции учетных записей. ERC4337 может реализовать обновление абстракции учетных записей с помощью смарт-контрактов, от первоначального инициирования всей транзакции до ее включения во всю цепочку блоков. был обновлен и изменен, а UserOperation был введен для описания структуры транзакций, отправляемых от имени пользователей. Bundler будет упаковывать транзакции в эти пулы памяти, чтобы снизить транзакционные издержки пользователей. Сценарий с несколькими знаками является более полным для достижения социального восстановления. и т. д. Функциональные обновления.
выполнить
В соответствии со стандартом ERC-6551 держатели NFT могут развернуть новый смарт-контракт, а именно TBA, в сети Ethereum или других блокчейнах, поддерживаемых EVM, взаимодействуя с контрактом регистрации. Право собственности на TBA принадлежит держателю NFT и изменится с передачей NFT. Только владелец NFT может контролировать этот TBA. Кодекс TBA, его правила берут начало в Договоре о реализации.
На следующем рисунке показано, как работает ERC-6551: Предположим, что пользователь является держателем NFT, а его учетная запись пользователя владеет двумя NFT: № 123 контракта A и № 456 контракта B. Учетная запись пользователя взаимодействует с реестром без разрешений, то есть с контрактом регистрации, и вводит информацию NFT и адрес контракта для создания TBA. Когда учетная запись пользователя вызывает контракт на регистрацию, введите информацию NFT токена № 123 и адрес реализации A (0x321…), и будет создана учетная запись контрактного кошелька A (0x123…). Его право собственности принадлежит держателю токена NFT № 123, а его функции и правила вытекают из положений реализации A. Когда учетная запись пользователя снова вызывает контракт регистрации и меняет входное содержимое, генерируется еще один TBA. Но для конкретного NFT и контракта на реализацию может быть только один уникальный соответствующий TBA.

Создание и поведение TBA полностью зависят от договора регистрации и договора внедрения. Правила этих контрактов определяют характеристики и функции TBA. EIP-6551 предоставляет шаблоны кода для этих контрактов. Мы углубимся в эти шаблоны в следующих разделах. Однако эти шаблоны — не единственные варианты; их код определяет, как развертывается и функционально реализуется TBA. Это предоставляет разработчикам широкий спектр возможностей расширения. Например, в договоре о регистрации может быть установлено, какие NFT имеют право быть зарегистрированными с использованием договора о регистрации. Контракт на реализацию может определять функции и правила TBA, такие как установка дневного лимита транзакций TBA или указание типов активов, которые он может хранить.
Контракт на реализацию
Все TBA, созданные путем регистрации контракта, могут выбрать контракт на реализацию, который они хотят использовать для учетной записи. Контракт реализации записывает функции и правила учетной записи смарт-контракта. Он должен реализовывать как минимум следующие функции:
ExecuteCall(): функция, используемая для выполнения любой функции смарт-контракта, которая взаимодействует с внешним контрактом. Например, чтобы продать включенный актив в учетную запись, привязанную к NFT, вам может потребоваться вызвать функцию в контракте Uniswap. ExecuteCall позволяет вам вызывать эту функцию от имени вашей учетной записи смарт-контракта, что позволяет вам покупать, продавать/обменивать любой актив, который вы хотите.
token(): функция просмотра только для чтения, которая возвращает идентификатор NFT, которому принадлежит учетная запись, привязанная к токену. Он возвращает идентификатор цепочки (независимо от того, находится ли NFT в основной сети, Polygon, Optimism и т. д.), адрес контракта NFT и идентификатор токена NFT.
Owner(): возвращает адрес владельца NFT, который контролирует учетную запись, привязанную к токену. Согласно приведенному выше примеру, это будет адрес учетной записи пользователя.
nonce(): возвращает текущий nonce этого кошелька смарт-контракта. Каждая успешная транзакция увеличивает значение nonce на 1 с начальным значением 0.
Наконец, хотя это и не вызов функции, контракт реализации, который привязывает учетную запись к токену, должен иметь функцию получения(), чтобы иметь возможность получать собственный актив (например, ETH) непосредственно на его адрес.
Зарегистрировать контракт
Ниже приведен смарт-контракт реестра, написанный на языке Solidity:

Этот код может показать, что параметры, необходимые для создания учетной записи для определенного NFT, включают адрес контракта выполнения реализации, ChainId — идентификатор целевой цепочки, tokenContract, соответствующий контракту, к которому принадлежит NFT, tokenId, соответствующий идентификатору, которому принадлежит NFT. NFT принадлежит, и соль значения обфускации. Чтобы создать учетную запись NFT на основе демо-версии Fast Dapp, вам нужно только ввести адрес и идентификатор контракта NFT, а остальные поля генерируются автоматически. Шаги относительно просты.
Предложение ERC-6551 представляет собой новый стандарт токенов, который представляет собой революционное обновление исходного стандарта NFT. ERC-6551 использует не требующий разрешений реестр, совместимый с существующим ERC-721 NFT. Реестр — это смарт-контракт, который служит фабрикой и каталогом для TBA. Любой может создать TBA для любого токена ERC-721, вызвав функцию в реестре и заплатив небольшую комиссию. Смарт-контракт реестра выполняет две функции:
createAccount: развертывает новую учетную запись, привязанную к токену, для данного NFT ERC-721 и конкретной реализации.
учетная запись: функция просмотра только для чтения, которая возвращает адрес учетной записи, привязанной к токену для данного NFT ERC-721, и приведена ее реализация.
потенциальные приложения
После инцидента с Азуки NFT с одним статическим изображением стали значительно менее привлекательными, в результате чего стоимость многих ведущих проектов упала. Однако NFT, которые являются высокоинтерактивными и компонуемыми, могут стать ключом к восстановлению рынка. От блокчейн-игр, музыки, DID до метавселенной — эти области полны безграничного потенциала.
NFT — это больше, чем просто активы; они также имеют собственную сетевую идентификацию и свойства контейнера, а также могут взаимодействовать с децентрализованными приложениями (Dapps). Это означает, что все взаимодействия с NFT записываются непосредственно на сам NFT, а не на счет его держателя. Кроме того, поскольку NFT основаны на смарт-контрактах, их поведение и взаимодействие можно определять и контролировать с помощью правил контракта, что обеспечивает гибкость и безопасность.
Протокол ERC-6551 внес революционные изменения в область NFT, сместив акцент с пользовательских кошельков на сам NFT, предоставив новые возможности для транзакций, игр, отслеживания и управления. С дальнейшим развитием NFT этот протокол приведет нас в более персонализированную, интерактивную и содержательную цифровую эпоху.
Рассмотрим следующие четыре потенциальных направления применения:
Упаковка активов: NFT может служить контейнером активов, позволяя упаковывать и продавать несколько активов в одном NFT. Например, NFT музыкального альбома может содержать несколько NFT песен, а NFT коллекции произведений искусства может содержать несколько NFT иллюстраций. Это не только делает сбор более систематическим, но и снижает комиссию за газ при торговле.
Инвестиционный портфель: NFT можно использовать в качестве инструмента управления активами, позволяя пользователям хранить и управлять несколькими токенами в TBA. Кроме того, держатели NFT также могут разрешать сторонним менеджерам проводить транзакции с активами и четко определять разрешения менеджера в смарт-контрактах для обеспечения безопасности активов.
Управление идентификацией NFT: NFT может записывать все свои действия в цепочке, что делает ее настоящей идентификацией в цепочке. Пользователи могут использовать один кошелек ENS для представления себя и использовать разные TBA для представления своих ролей в разных сообществах или приложениях.
Модульные NFT: главный NFT может генерировать TBA, в котором хранятся его компоненты NFT. Например, в игре персонаж NFT может быть оснащен различным оборудованием NFT. Это не только делает реализацию Метавселенной более возможной, но также может быть объединено с искусственным интеллектом для создания более реалистичных персонажей NPC.
Короче говоря, будущее NFT полно безграничных возможностей. От управления активами до проверки личности и модульного дизайна игр — они будут играть ключевую роль в цифровом мире.
