ERC-5008: ERC-721 Nonce Extension

Add a `nonce` function to ERC-721.


Metadata
Status: Last CallStandards Track: ERCCreated: 2022-04-10
Authors
Anders (@0xanders), Lance (@LanceSnow), Shrug (shrug@emojidao.org)
Requires

Abstract


This standard is an extension of ERC-721. It proposes adding a nonce function to ERC-721 tokens.

Motivation


Some orders of NFT marketplaces have been attacked and the NFTs sold at a lower price than the current market floor price. This can happen when users transfer an NFT to another wallet and, later, back to the original wallet. This reactivates the order, which may list the token at a much lower price than the owner would have intended.

This EIP proposes adding a nonce property to ERC-721 tokens, and the nonce will be changed when a token is transferred. If a nonce is added to an order, the order can be checked to avoid attacks.

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.


The nonce(uint256 tokenId) function MUST be implemented as view.

The supportsInterface method MUST return true when called with 0xce03fdab.

Rationale


At first transferCount was considered as function name, but there may some case to change the nonce besides transfer, such as important properties changed, then we changed transferCount to nonce.

Backwards Compatibility


This standard is compatible with ERC-721.

Test Cases


Test cases are included in test.js.

Run:


Reference Implementation


See ERC5008.sol.

Security Considerations


No security issues found.

Copyright


Copyright and related rights waived via CC0.