Эта статья представляет собой краткое описание того, как ERC-6551 позволяет любому NFT владеть любым типом криптоактива.
Давайте начнем с того, что на самом деле происходит с большинством NFT.
NFT в Ethereum — это просто записи данных в смарт-контрактах, которые сообщают вам, кто владеет NFT, кто может передавать NFT и как выглядят метаданные NFT. Вот функция, которая возвращает информацию о данном NFT:
Получить владельца данного NFT
Получить tokenURI данного NFT
Получите адрес кошелька, на котором одобрен данный NFT
Когда вы чеканите NFT, вы просто устанавливаете значение владельца записи данных (адрес кошелька). Когда вы передаете NFT, вы просто меняете значение владельца (адрес кошелька). Следующие два рисунка представляют собой связанные настройки кодов владения в контракте ERC721:
Функция монетного двора в контракте ERC721
Передаточная функция в контракте ERC721
Большинство контрактов NFT настолько просты. Как мы видели выше, нет кода, позволяющего этим NFT владеть другими токенами NFT, ETH или ERC20.
Смарт-контракты нельзя изменить, так как же ERC-6551 позволяет любому NFT владеть другими активами?
Ответ: реестр + контрактный кошелек.
Кошелек смарт-контракта (кошелек CA) — это просто смарт-контракт, который может получать NFT, ERC20 или ETH и дополнительно выполнять произвольные транзакции. Эти контрактные кошельки имеют свои собственные адреса (как и все смарт-контракты).
Если вы не знакомы с реестрами, вы можете думать о них как об отдельных смарт-контрактах, в которых хранится информация. Реестр ERC-6551 содержит: информацию о том, какие NFT сопоставляются с какими кошельками смарт-контрактов, а также использует прокси-сервер для создания кошелька смарт-контракта (не имеет значения, знаете ли вы это).
Код договора реестра?
Например, Azuki #4567 может сопоставляться с кошельком смарт-контракта по адресу 0x243F4E0d556EFD1006c52E85A6ddFb6748A4C0b7. Один NFT может управлять несколькими учетными записями контрактов, но каждая учетная запись контракта принадлежит только одному NFT, как показано на рисунке ниже:
Что ж, теперь у нас есть реестр, который может создавать кошельки для NFT и связывать NFT с кошельками, и этот кошелек, привязанный к NFT, теперь можно использовать как обычный кошелек. Этот кошелек может передавать ETH, покупать токены NFT или обменивать токены ERC20, конечно, транзакция должна быть инициирована владельцем NFT.
Я хочу повторить, что эти кошельки, привязанные к NFT, являются смарт-контрактами. Они похожи на кошельки с мультиподписью в том, что кто-то должен вызвать функцию в контракте, чтобы кошелек выполнил определенные действия. Для кошельков ERC-6551 владелец NFT вызовет uteCall в кошельке, чтобы инициировать транзакцию.
Так что же такого особенного в этих кошельках, привязанных к NFT? Когда меняется владелец, контролирующий NFT, одновременно меняется и контроль над кошельком. Контроль NFT означает, что вы контролируете все в кошельке, привязанном к NFT, и NFT превратится из одного актива в пакетный пакет активов.
TL;DR: ERC-6551 позволяет всем NFT иметь кошелек с помощью реестра и кошелька смарт-контракта. Реестр создает контрактный кошелек и связывает контрактный кошелек с NFT. Контрактные кошельки могут содержать другие активы, и только владелец NFT может выполнять транзакции в этом кошельке.
Посмотреть Оригинал
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Углубленный анализ основных принципов ERC-6551
Автор: @0xCygaar Перевод: MetaCat
Эта статья представляет собой краткое описание того, как ERC-6551 позволяет любому NFT владеть любым типом криптоактива.
Давайте начнем с того, что на самом деле происходит с большинством NFT.
NFT в Ethereum — это просто записи данных в смарт-контрактах, которые сообщают вам, кто владеет NFT, кто может передавать NFT и как выглядят метаданные NFT. Вот функция, которая возвращает информацию о данном NFT:
Получить владельца данного NFT
Получить tokenURI данного NFT
Получите адрес кошелька, на котором одобрен данный NFT
Когда вы чеканите NFT, вы просто устанавливаете значение владельца записи данных (адрес кошелька). Когда вы передаете NFT, вы просто меняете значение владельца (адрес кошелька). Следующие два рисунка представляют собой связанные настройки кодов владения в контракте ERC721:
Функция монетного двора в контракте ERC721
Передаточная функция в контракте ERC721
Большинство контрактов NFT настолько просты. Как мы видели выше, нет кода, позволяющего этим NFT владеть другими токенами NFT, ETH или ERC20.
Смарт-контракты нельзя изменить, так как же ERC-6551 позволяет любому NFT владеть другими активами?
Ответ: реестр + контрактный кошелек.
Кошелек смарт-контракта (кошелек CA) — это просто смарт-контракт, который может получать NFT, ERC20 или ETH и дополнительно выполнять произвольные транзакции. Эти контрактные кошельки имеют свои собственные адреса (как и все смарт-контракты).
Если вы не знакомы с реестрами, вы можете думать о них как об отдельных смарт-контрактах, в которых хранится информация. Реестр ERC-6551 содержит: информацию о том, какие NFT сопоставляются с какими кошельками смарт-контрактов, а также использует прокси-сервер для создания кошелька смарт-контракта (не имеет значения, знаете ли вы это).
Код договора реестра?
Например, Azuki #4567 может сопоставляться с кошельком смарт-контракта по адресу 0x243F4E0d556EFD1006c52E85A6ddFb6748A4C0b7. Один NFT может управлять несколькими учетными записями контрактов, но каждая учетная запись контракта принадлежит только одному NFT, как показано на рисунке ниже:
Что ж, теперь у нас есть реестр, который может создавать кошельки для NFT и связывать NFT с кошельками, и этот кошелек, привязанный к NFT, теперь можно использовать как обычный кошелек. Этот кошелек может передавать ETH, покупать токены NFT или обменивать токены ERC20, конечно, транзакция должна быть инициирована владельцем NFT.
Я хочу повторить, что эти кошельки, привязанные к NFT, являются смарт-контрактами. Они похожи на кошельки с мультиподписью в том, что кто-то должен вызвать функцию в контракте, чтобы кошелек выполнил определенные действия. Для кошельков ERC-6551 владелец NFT вызовет uteCall в кошельке, чтобы инициировать транзакцию.
Так что же такого особенного в этих кошельках, привязанных к NFT? Когда меняется владелец, контролирующий NFT, одновременно меняется и контроль над кошельком. Контроль NFT означает, что вы контролируете все в кошельке, привязанном к NFT, и NFT превратится из одного актива в пакетный пакет активов.
TL;DR: ERC-6551 позволяет всем NFT иметь кошелек с помощью реестра и кошелька смарт-контракта. Реестр создает контрактный кошелек и связывает контрактный кошелек с NFT. Контрактные кошельки могут содержать другие активы, и только владелец NFT может выполнять транзакции в этом кошельке.