7 июня 2023

ERC-6551

Перевод

Это вольный перевод: eips.ethereum.org/EIPS/eip-6551 

Общее описание

Стандарт ERC-721 позволил создать множество приложений для NFT. Некоторые заметные примеры использования включают разведение кошек, создание произведений искусства и ликвидные позиции.

NFT всё чаще становятся формой ончейн-идентификации. Это вполне естественно следует из спецификации ERC-721: каждый NFT имеет глобально уникальный идентификатор и, соответственно, уникальную личность.

В отличие от других форм ончейн-идентификации, токены ERC-721 не могут действовать как агент или ассоциироваться с другими активами. Это ограничение контрастирует со многими реальными примерами NFT. 

Например:

  • Персонаж в ролевой игре, который накапливает активы и способности с течением времени на основе совершённых им действий.
  • Автомобиль, состоящий из множества сгораемых и несгораемых компонентов. 
  • Автоматизированный инвестиционный портфель, состоящий из множества взаимозаменяемых активов. 
  • Членская карточка с пропуском, предоставляющая доступ в заведение и записывающая историю прошлых взаимодействий.

Несколько предложений попытались наделить токены ERC-721 способностью владеть активами. Каждое из этих предложений определяет расширение стандарта ERC-721. Это требует от авторов смарт-контрактов включить поддержку предложений в свои контракты с токенами ERC-721. 

В результате эти предложения в значительной степени несовместимы с ранее развернутыми контрактами ERC-721.

Данное предложение предоставляет каждому токену ERC-721 все возможности счёта Ethereum, сохраняя при этом обратную совместимость с ранее развёрнутыми контрактами на токены ERC-721. Это достигается путём развёртывания уникальных, детерминировано адресуемых смарт-контрактов для каждого токена ERC-721 через реестр без права доступа.

Каждый связанный с токеном счёт принадлежит одному токену ERC-721, что позволяет токену взаимодействовать с блокчейном, записывать историю транзакций и владеть ончейн-активами. 

Контроль над каждым привязанным к токену счётом передаётся владельцу токена ERC-721, что позволяет владельцу инициировать ончейн-действия от имени своего токена.

Счета, привязанные к токенам, совместимы практически со всей существующей инфраструктурой, поддерживающей счета Ethereum, от ончейн-протоколов до оффчейн-индексов

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

Обзор

Система, описанная в данном предложении, состоит из двух основных компонентов:

  1. Реестр без (специальных) разрешений для развёртывания привязанных к токенам учётных записей;
  2. Стандартный интерфейс для реализации привязанных учётных записей.

Обоснование

Контрфактические адреса счетов

Указав канонический реестр счетов, приложения, желающие поддержать данное предложение, могут вычислить адрес для данного счёта, связанного с токеном, используя определённую реализацию до развертывания контракта для этого счёта. 

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

Неоднозначность учётной записи

Предложенная выше спецификация позволяет токенам ERC-721 иметь несколько привязанных к токену счетов: по одному на каждый адрес реализации. Во время разработки данного предложения были рассмотрены альтернативные архитектуры, в которых каждому токену ERC-721 присваивался бы один привязанный к токену счёт, что сделало бы каждый адрес привязанного к токену счёта однозначным идентификатором.

Однако эти альтернативы имеют несколько недостатков:

  • Во-первых, из-за природы смарт-контрактов невозможно обеспечить ограничение в один привязанный к токену счёт на токен ERC-721. Тот, кто желает использовать несколько привязанных к токену ERC-721 счетов, может сделать это, развернув дополнительный контракт.
  • Во-вторых, ограничение каждого токена ERC-721 одной привязанной к токену учётной записью потребует включения в данное предложение статической, доверенной реализации учётной записи. Такая реализация неизбежно наложит конкретные ограничения на возможности привязанных к токену счетов. Учитывая количество неисследованных случаев использования, которые позволяет данное предложение, и пользу, которую различные реализации счетов могут принести экосистеме NFTs, авторы считают, что определение канонической и ограниченной реализации в данном предложении преждевременно.
  • В-третьих, данное предложение направлено на предоставление токенам ERC-721 возможности действовать в качестве ончейн-агентов. В текущей практике агенты-на-чейне часто используют несколько учётных записей. Частым примером являются люди, которые используют «горячий» аккаунт для ежедневного использования и «холодный» аккаунт для хранения ценностей. Если onchain-агенты обычно используют несколько счетов, то вполне логично, что токены ERC-721 должны унаследовать ту же способность.

Реализация прокси

Минимальные прокси ERC-1167 хорошо поддерживаются существующей инфраструктурой и являются распространённым шаблоном смарт-контракта. 

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

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

Поддержка EIP-155

Данное предложение использует идентификаторы EIP-155 для идентификации токенов ERC-721 наряду с адресом контракта и идентификатором токена. 

Идентификаторы токенов ERC-721 глобально уникальны в одной цепи Ethereum, но могут быть не уникальны в нескольких цепях Ethereum. Использование идентификаторов для уникальной идентификации токенов ERC-721 позволяет авторам смарт-контрактов, желающим реализовать данное предложение, дополнительно поддерживать счета, привязанные к токенам нескольких чейнах.

Обратная совместимость

Данное предложение стремится к максимальной обратной совместимости с существующими контрактами на токены, не являющимися легкими. Таким образом, оно не расширяет стандарт ERC-721.

Кроме того, данное предложение не требует от реестра проведения проверки интерфейса ERC-165 на совместимость с ERC-721 до создания счёта. Это сделано специально, чтобы обеспечить максимальную обратную совместимость (с теми токенами), которые предшествовали стандарту ERC-721, например, Cryptokitties. Авторы смарт-контрактов, реализующие это предложение, могут по желанию выбрать принудительное определение интерфейса для ERC-721.

Несгораемые контракты с токенами, которые не реализуют метод ownerOf, такие как Cryptopunks, не совместимы с данным предложением. Система, описанная в данном предложении, может быть использована для поддержки таких коллекций с незначительными изменениями, но это выходит за рамки данного предложения.

Предотвращение мошенничества

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

Рассмотрим следующую потенциальную аферу:

  • Алиса владеет ERC-721-токеном X, которому принадлежит привязанный к токену счет Y.
  • Алиса вносит 10 ETH на счёт Y.
  • Боб предлагает купить токен X за 11 ETH через децентрализованный рынок, предполагая, что вместе с токеном он получит 10ETH, хранящиеся на счете Y.
  • Алиса снимает 10 ETH со счёта, связанного с токеном, и немедленно принимает предложение Боба.
  • Боб получает токен X, но счёт Y оказывается пустым. 

Чтобы смягчить мошенническое поведение злонамеренных владельцев счетов, децентрализованные торговые площадки ДОЛЖНЫ реализовать защиту от такого рода мошенничества на уровне торговой площадки. 

Контракты, реализующие этот EIP, МОГУТ также реализовать определённые меры защиты от мошеннического поведения.

Вот несколько стратегий защиты, которые следует рассмотреть:

  1. Прикрепить текущий nonce счёта, связанного с токеном, к ордеру на рынке. Если nonce счёта изменился с момента размещения заказа, считайте предложение недействительным. Эта функция должна поддерживаться на уровне торговой площадки.
  2. Приложить к рыночному ордеру список обязательств по активам, которые, как ожидается, останутся на счёте, привязанному к токену, после выполнения ордера. Если с момента размещения ордера какой-либо из активов был удалён со счёта, считайте предложение недействительным. Это также должно быть реализовано торговой площадкой.
  3. Отправить ордер на децентрализованный рынок через внешний смарт-контракт, который выполняет вышеуказанную логику перед проверкой подписи ордера. Это позволяет реализовать безопасные переводы без поддержки рынка.
  4. Внедрить механизм блокировки на реализацию счёта, связанного с токенами, который не позволяет злоумышленникам извлекать активы со счёта, пока он заблокирован.

Предотвращение мошенничества выходит за рамки данного предложения.

Циклы владения

Все активы, хранящиеся на счёте, связанном с токенами, могут стать недоступными, если будет создан (рекурсивный) цикл владения. 

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

Циклы владения могут возникнуть в любом графе из n>0 связанных токенами счетов. 

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

Клиентам приложений и реализациям счетов, желающим принять данное предложение, рекомендуется реализовать меры, ограничивающие возможность возникновения циклов владения.

Комментарий Menaskop

Что ж, судя по ERC-2535 & ERC-6551 рынок NFT 2.0 сформировался и оформился. Что и требовалось доказать? Да. Но дальше нас ждёт непростой путь, о котором рассказывал ранее и расскажу не раз, а пока всё и

До!

Обсудить в Discord!

Menaskop
  • Зарегистрирован: 22 мая 2012 г.
  • Локация:London/United Kingdom
  • Сайт:penroseisparty.com