ERC-5380: ERC-721 Entitlement Extension

Allows token owners to grant the ability for others to use specific properties of those tokens


Metadata
Status: FinalStandards Track: ERCCreated: 2022-03-11
Authors
Gavin John (@Pandapip1), Tim Daubenschütz (@TimDaub)

Abstract


This EIP proposes a new interface that allows ERC-721 token owners to grant limited usage of those tokens to other addresses.

Motivation


There are many scenarios in which it makes sense for the owner of a token to grant certain properties to another address. One use case is renting tokens. If the token in question represents a trading card in an on-chain TCG (trading card game), one might want to be able to use that card in the game without having to actually buy it. Therefore, the owner might grant the renter the "property" of it being able to be played in the TCG. However, this property should only be able to be assigned to one person at a time, otherwise a contract could simply "rent" the card to everybody. If the token represents usage rights instead, the property of being allowed to use the associated media does not need such a restriction, and there is no reason that the property should be as scarce as the token.

Specification


The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

Base

Compliant entitlement contracts MUST implement the following Solidity interface:


supportsInterface MUST return true when called with ERC5380Entitlement's interface ID.

Enumerable Extension

This OPTIONAL Solidity interface is RECOMMENDED.


supportsInterface MUST return true when called with ERC5380EntitlementEnumerable's interface ID.

Metadata Extension

This OPTIONAL Solidity interface is RECOMMENDED.

This extension uses ERC-1046 for tokenURI compatibility.


supportsInterface MUST return true when called with ERC5380EntitlementMetadata's interface ID.

Interoperability Metadata Extension

ERC-1046's InteroperabilityMetadata is extended with the following TypeScript interface:


tokenURI Metadata Schema

The resolved tokenURI data MUST conform to the following TypeScript interface:


Rationale


ERC-20 and ERC-1155 are unsupported as partial ownership is much more complex to track than boolean ownership.

Backwards Compatibility


No backward compatibility issues were found.

Security Considerations


The security considerations of ERC-721 and ERC-1046 apply.

Copyright


Copyright and related rights waived via CC0.