ERC-6551: Как NFT могут владеть кошельками

Ключевые выводы
• ERC-6551 связывает кошелек смарт-контракта с NFT ERC-721, позволяя им хранить активы и выполнять транзакции.
• NFT могут владеть другими NFT и токенами, создавая самодостаточные контейнеры активов.
• Стандарт улучшает безопасность и удобство делегирования доступа к активам.
• TBA могут быть использованы для создания компонуемых игровых персонажей и переносимых идентификаторов.
• Внедрение ERC-6551 ожидается в 2025 году, что потребует внимания к пользовательскому опыту и одобрениям.
Невзаимозаменяемые токены (NFT) развиваются от статических коллекционных предметов до программируемых идентификаторов, которые могут владеть активами, совершать транзакции и взаимодействовать с децентрализованными приложениями. ERC-6551, также известный как Token Bound Accounts (TBA), — это стандарт, который делает это возможным, предоставляя каждому NFT собственный смарт-кошелек. В этой статье объясняется, как работает ERC-6551, почему это важно, а также рассматриваются вопросы безопасности и пользовательского опыта с практическими ссылками для разработчиков и пользователей.
Что такое ERC-6551, в одном предложении
ERC-6551 определяет реестр и интерфейс счета, который связывает кошелек смарт-контракта с NFT ERC-721, позволяя NFT хранить токены, NFT и разрешения, а также выполнять транзакции независимо от владельца-человека — при этом контроль автоматически следует за текущим владельцем этого NFT. Подробности см. в официальном EIP: EIP-6551: Token Bound Accounts.
Строительные блоки
- NFT ERC-721: ERC-6551 разработан для ERC-721, канонического стандарта NFT на Ethereum и EVM-совместимых сетях. Если вам нужно освежить знания о семантике владения ERC-721, обратитесь к документации Ethereum: ERC-721 Non-Fungible Token Standard.
- Реестр: Единый контракт реестра предоставляет функции
createAccount
иaccount
для развертывания или вычисления адреса TBA для любого данного NFT (chainId, tokenContract, tokenId). Он позволяет использовать детерминированные адреса через CREATE2, поэтому TBA может быть известен до его развертывания. Ссылка: EIP-1014 (CREATE2). - Счет: TBA — это контракт смарт-кошелька, реализующий интерфейс счета ERC-6551 (например,
executeCall
,owner
,isValidSignature
). Он может хранить ERC-20, другие NFT и метаданные. Проверки контроля разрешаются текущему владельцу NFT.
Обзор для разработчиков и примеры: Документация TokenBound. Для доступного введения см. обзор Alchemy: What is ERC-6551? и объяснение от thirdweb: ERC-6551: Token Bound Accounts.
Как NFT могут владеть кошельками (механизм)
- Вывод адреса: Адрес TBA детерминированно выводится из входных данных: chainId, контракт NFT, tokenId, реализация и salt через CREATE2. Вы можете вычислить его без развертывания счета.
- Развертывание счета: Когда это необходимо, реестр развертывает счет. Теперь идентификатор NFT имеет кошелек смарт-контракта.
- Поток управления: Функция
owner()
счета считывает текущего держателя NFT. При передаче NFT контроль над TBA автоматически переходит к новому владельцу — ключи или подписи перемещать не нужно. - Выполнение: Владелец (или разрешенные операторы) может инициировать
executeCall
для взаимодействия с DeFi, минтинга активов или управления разрешениями от имени идентификатора TBA, а не от внешнего счета пользователя (EOA). - Компонуемость: TBA сам по себе может хранить ERC-20, другие ERC-721 и разрешения в блокчейне. NFT становится самодостаточной «капсулой» активов и возможностей.
Почему это важно
- Компонуемые аватары: NFT игрового персонажа может владеть NFT снаряжения, зельями (ERC-20) и достижениями. Торговля персонажем означает торговлю всей его экипировкой, а не только базовым токеном. Пример архитектуры: Документация TokenBound.
- Переносимая идентичность: Единый NFT может представлять межприложения идентификатор с историей кошелька, значками репутации и собственными правами доступа.
- Ликвидные наборы: Создатели могут продавать коллекцию активов, передавая один NFT — покупатель получает весь инвентарь, хранящийся в его TBA.
- Более безопасные делегирования: Вместо делегирования с вашего личного EOA, вы можете делегировать доступ с TBA NFT с ограниченными областями действия.
- Синергия абстракции счета: TBA могут быть реализованы как смарт-кошельки, совместимые с расширенными потоками, такими как ключи сессий и плательщики (paymasters). Для справки см. EIP-4337: Account Abstraction.
Текущие сигналы экосистемы
- Стандартизация: ERC-6551 — это принятый EIP с эталонным реестром и интерфейсом счета, обеспечивающий единообразную межпроектную поддержку. Спецификация: EIP-6551.
- Библиотеки и инструменты: SDK и адреса реестра TokenBound упрощают интеграцию TBA в dApps. Документация: Документация TokenBound.
- Обучение разработчиков: Крупные платформы для разработчиков теперь предоставляют руководства и шаблоны для ERC-6551, что указывает на растущее внедрение и эксперименты. Ссылки: Обзор Alchemy и Объяснение thirdweb.
Как и в случае с большинством стандартов, поддержка пользовательского интерфейса в кошельках и на торговых площадках варьируется в зависимости от сети и проекта. Ожидайте дальнейшего прогресса в течение 2025 года, поскольку игры, социальные протоколы и поставщики NFT-инфраструктуры будут добавлять нативную поддержку TBA.
Основные шаблоны пользовательского опыта
- Инвентарные NFT: Позвольте TBA персонажа владеть предметами, которые игрок приобретает в игре. Листинг персонажа означает передачу всего инвентаря.
- Предустановки разрешений: Храните ключи сессий или делегатов с ограниченными правами доступа в TBA для беспрепятственной игры или социальных действий, вместо глобальных одобрений с личного EOA.
- Постепенное раскрытие: В пользовательском интерфейсе представляйте «Принадлежит NFT» в качестве основного действующего лица при взаимодействии с dApp — минимизируя путаницу между EOA пользователя и TBA NFT.
- Переносимые наборы: Реализуйте политики «передать с содержимым» или «стереть содержимое при передаче», определяемые создателем, для балансировки безопасности и функциональности.
Модель безопасности и лучшие практики
TBA улучшают компонуемость, но вводят новые операционные риски. Учитывайте:
- Перенос одобрений: Если TBA имеет оставшиеся одобрения (разрешения ERC-20 или одобрения NFT), передача NFT передает эти одобрения покупателю. Это может быть опасно, если было одобрено вредоносное средство расходования. Более безопасные шаблоны:
- Очищайте разрешения при передаче или при выставлении на продажу.
- Используйте лимиты расходов вместо неограниченных одобрений.
- Отображайте предупреждения о разрешениях в пользовательском интерфейсе до передачи.
- Проверки владения: Убедитесь, что счет последовательно применяет
owner()
к текущему держателю ERC-721 во время выполнения. Следуйте интерфейсам, определенным в спецификации: EIP-6551. - Повторное воспроизведение и область действия подписи: Если ваш TBA поддерживает офчейн-подписи (
isValidSignature
), защититесь от повторного воспроизведения между сетями и контрактами; используйте структуры EIP-712 с разделением доменов. - Риски обновлений: Если вы используете обновляемые TBA, обеспечьте безопасность администратора и логики обновлений; предпочитайте минимальные, проверенные реализации.
- Восстановление и хранители: Рассмотрите возможность резервного копирования (например, социального восстановления) на уровне TBA или через управляющий счет владельца для потребительских сценариев.
- Координация торговых площадок: Если содержимое существенно влияет на стоимость, торговые площадки должны отражать владения и одобрения TBA. Разработчики могут раскрывать инвентарь TBA через индексаторы.
Для руководства по реализации и заметок по безопасности начните с официальной документации: Документация TokenBound.
Быстрый старт для разработчиков (концептуально)
- Вычислите адрес TBA для данного NFT с помощью функции
account
реестра (детерминированно, развертывание не требуется). - Разверните TBA через
createAccount
, когда он впервые потребуется для действия. - Реализуйте пользовательские потоки для:
- Отправки ERC-20 и ERC-721 на адрес TBA.
- Предоставления операторам с ограниченной областью действия от TBA для действий dApp.
- Выполнения вызовов dApp через
executeCall
TBA.
- Необязательно: используйте функции абстракции счета для спонсирования газа и ключей сессий. Справка: EIP-4337.
Мультичейн и соображения по газу
- Счета для конкретной сети: Один и тот же NFT в сети A и его мостовое представление в сети B будут иметь разные TBA. Избегайте путаницы между сетями, указывая контекст сети в пользовательском интерфейсе.
- Экономика газа: TBA являются смарт-кошельками, поэтому их развертывание и выполнение требуют больше газа, чем простой EOA. Абстрагируйте газ для пользователей с помощью плательщиков (paymasters) или мета-транзакций, где это уместно. См. EIP-4337 для шаблонов спонсируемых транзакций.
- Предварительное вычисление: Благодаря детерминизму CREATE2, dApps могут ссылаться на адрес TBA еще до развертывания и заранее финансировать его или устанавливать разрешения. Ссылка: EIP-1014.
Когда использовать ERC-6551
Используйте TBA, когда сам NFT должен быть действующим лицом или контейнером активов:
- Игровые идентификаторы и экипировка
- Членские NFT с учетными данными и квотами
- Наборы от создателей и кураторские коллекции
- Социальные идентификаторы со значками репутации
Избегайте TBA для простых коллекционных предметов, которым не нужно совершать транзакции или хранить дополнительные активы, или когда сложность для пользователя перевешивает преимущества.
Как OneKey вписывается в NFT-владеющие кошельки
Контроль над TBA в конечном итоге зависит от безопасности счета, который владеет базовым NFT. Если ваш EOA скомпрометирован, контроль над NFT — и, следовательно, над его TBA — находится под угрозой. Аппаратный кошелек помогает смягчить это, храня приватные ключи в автономном режиме.
OneKey разработан для использования в мультичейн-среде с высокой частотой транзакций Web3, сохраняя при этом высокий уровень безопасности и прозрачность с открытым исходным кодом. Для потоков ERC-6551 OneKey может:
- Обеспечить безопасность EOA, который владеет вашими NFT и передает их, гарантируя, что контроль над TBA остается в ваших руках.
- Чисто подписывать сообщения EIP-712 и транзакции смарт-кошельков для dApps, интегрирующих TBA.
- Предоставлять согласованный мультичейн-опыт в экосистемах Ethereum и EVM, что крайне важно, когда TBA существуют для каждой сети.
Если вы планируете использовать NFT в качестве активных идентификаторов с инвентарем и разрешениями в блокчейне, закрепление владения в аппаратном кошельке, таком как OneKey, снижает вероятность того, что скомпрометированные горячие кошельки смогут захватить контроль над TBA.
Заключение
ERC-6551 превращает NFT в первоклассных действующих лиц в блокчейне со своими кошельками, открывая возможности для создания компонуемых игровых персонажей, переносимых наборов идентификаторов и более безопасных, ограниченных делегирований. Реестр и интерфейсы счетов стандарта упрощают для разработчиков добавление поддержки TBA, а пользователи получают более широкую функциональность от своих NFT. По мере роста внедрения в 2025 году уделяйте пристальное внимание одобрениям, пользовательскому опыту на торговых площадках и интеграции абстракции счета.
Для безопасного участия используйте надежный аппаратный кошелек для управления NFT, которые лежат в основе ваших TBA. OneKey предлагает сочетание безопасности и удобства использования, которое обеспечивает сохранность ваших NFT-владеющих кошельков, пока вы исследуете этот новый рубеж.