ERC-7561: Simple NFT, Simplified ERC-721

Designed for contract wallet, removes safeTransferFrom, approve, setApprovalForAll, getApproved, isApprovedForAll functions from ERC-721


Metadata
Status: DraftStandards Track: ERCCreated: 2023-10-29
Authors
Xiang (@wenzhenxiang), Ben77 (@ben2077), Mingshi S. (@newnewsms)
Requires

Abstract


This ERC is a new NFT asset designed based on the user contract wallet (including account abstraction), and is forward compatible with ERC-721. To keep NFT assets simple, this ERC removes the approve, setApprovalForAll, getApproved, isApprovedForAll and safeTransferFrom functions of ERC-721.

Motivation


ERC-721 defines Ethereum-based standard NFT that can be traded and transferred, but the essence of ERC-721 is based on the externally-owned account (EOA) wallet design. An EOA wallet has no state and code storage, and the smart contract wallet is different.

Almost all ERCs related to NFTs are add functions, but our opinion is the opposite. We think the NFT contract should be simpler, with more functions taken care of by the smart contract wallet.

Our proposal is to design a simpler NFT asset based on the smart contract wallet.

It aims to achieve the following goals:

  1. Keep the NFT contract simple, only responsible for the transferFrom function.
  2. approve, getApproved, setApprovalForAll and isApprovedForAll functions are not managed by the NFT contract. Instead, these permissions are managed at the user level, offering greater flexibility and control to users. This change not only enhances user autonomy but also mitigates certain risks associated with the ERC-721 contract's implementation of these functions.
  3. Remove the safeTransferFrom function. A better way to call the other party's NFT assets is to access the other party's own contract instead of directly accessing the NFT asset contract.
  4. Forward compatibility with ERC-721 means that all NFT can be compatible with this proposal.

Specification


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

Compliant contracts MUST implement the following interface:


Rationale


The proposal is to simplify NFT standards by removing approve, setApprovalForAll, getApproved, isApprovedForAll and safeTransferFrom functions. This simplification aims to enhance security, reduce complexity, and improve efficiency, making the standard more suitable for smart contract wallet environments while maintaining essential functionalities.

Backwards Compatibility


As mentioned in the beginning, this ERC is forward compatible with ERC-721, ERC-721 is backward compatible with this ERC.

Reference Implementation


forward compatible with ERC-721


Security Considerations


It should be noted that this ERC is not backward compatible with ERC-721, so there will be incompatibility with existing dapps.

Copyright


Copyright and related rights waived via CC0.