Блог

Многоразовые NFT? Революционный протокол ERC-6672 NFT. Анализ

В начале этого года тайваньский стартап RE:DREAMER представил совершенно новый стандартный протокол - ERC-6672, созданный на основе ERC-721. Этот протокол революционизирует концепцию НФТ, позволяя выкупать их многократно, открывая множество возможностей для взаимодействия НФТ с реальным миром.

ERC-6672: Многоразовый НФТ

Согласно определению лаборатории RE:DREAMER Lab, ERC-6672 - это расширение стандарта ERC-721, которое вводит поле "статус" в рамках ERC-721. Это поле записывает статус выкупа и хранится внутри смарт-контракта NFT.

Благодаря ERC-6672 держатели NFT теперь могут подтвердить свое право собственности на физические или цифровые активы и возможность многократного погашения NFT. Это означает, что держатели могут использовать свои NFT в различных сценариях, получая различные права или опыт.

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

Пример применения

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

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

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

В отличие от традиционных НФТ ERC-721, которые, как правило, могут быть использованы только один раз, ERC-6672 позволяет использовать НФТ в нескольких сценариях. Каждое погашение записывается в блокчейн, что позволяет пользователям отслеживать всю историю NFT.

Анализ интерфейса

Интерфейс ERC-6672 включает в себя следующие функции и параметры:
pragma solidity ^0.8.16;

/// @title ERC-6672 Multi-Redeemable NFT Standard
/// @dev See https://eips.ethereum.org/EIPS/eip-6672
/// Note: the ERC-165 identifier for this interface is 0x4dddf83f.
interface IERC6672 /* is IERC721 */ {
    /// @dev This event emits when an NFT is redeemed.
    event Redeem(
        address indexed _operator,
        uint256 indexed _tokenId,
        address redeemer,
        bytes32 _redemptionId,
        string _memo
    );

    /// @dev This event emits when a redemption is canceled.
    event Cancel(
      address indexed _operator,
      uint256 indexed _tokenId,
      bytes32 _redemptionId,
      string _memo
    );

    /// @notice Check whether an NFT is already used for redemption or not.
    /// @dev 
    /// @param _operator The address of the operator of the redemption platform.
    /// @param _redemptionId The identifier for a redemption.
    /// @param _tokenId The identifier for an NFT.
    /// @return Whether an NFT is already redeemed or not.
    function isRedeemed(address _operator, bytes32 _redemptionId, uint256 _tokenId) external view returns (bool);

    /// @notice List the redemptions created by the given operator for the given NFT.
    /// @dev
    /// @param _operator The address of the operator of the redemption platform.
    /// @param _tokenId The identifier for an NFT.
    /// @return List of redemptions of speficic `_operator` and `_tokenId`.
    function getRedemptionIds(address _operator, uint256 _tokenId) external view returns (bytes32[]);
    
    /// @notice Redeem an NFT
    /// @dev
    /// @param _redemptionId The identifier created by the operator for a redemption.
    /// @param _tokenId The NFT to redeem.
    /// @param _memo
    function redeem(bytes32 _redemptionId, uint256 _tokenId, string _memo) external;

    /// @notice Cancel a redemption
    /// @dev
    /// @param _redemptionId The redemption to cancel.
    /// @param _tokenId The NFT to cancel the redemption.
    /// @param _memo
    function cancel(bytes32 _redemptionId, uint256 _tokenId, string _memo) external;
}
_operator (тип адреса): Представляет собой адрес кошелька или контракта оператора платформы выкупа.

_redemptionId (тип bytes32): Идентификатор, созданный оператором для события выкупа.

_tokenId (тип uint256): Идентификатор токена НМТ.

Основная цель этого интерфейса - позволить нескольким операторам предоставлять услуги выкупа для контракта NFT. Параметр `_operator` будет меняться в зависимости от кошелька или адреса каждого оператора.

В сценарии, когда несколько мероприятий организуются разными операторами с использованием одного и того же NFT, могут быть сгенерированы разные значения `_redemptionId`, чтобы события по выкупу для разных мероприятий не конфликтовали друг с другом.

Заключение

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

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