ERC-5008: ERC-721 Nonce Extension Ethereum Improvement Proposals AllCoreNetworkingInterfaceERCMetaInformational 📢 Last Call Standards Track: ERC ERC-5008: ERC-721 Nonce Extension Add a `nonce` function to ERC-721. Authors Anders (@0xanders), Lance (@LanceSnow), Shrug  Created 2022-04-10 Last Call Deadline 2023-08-15 Requires EIP-165, EIP-721 This EIP is in the process of being peer-reviewed. If you are interested in this EIP, please participate using this discussion link. Table of Contents Abstract Motivation Specification Rationale Backwards Compatibility Test Cases Reference Implementation Security Considerations Copyright 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. /// @dev the ERC-165 identifier for this interface is 0xce03fdab. interface IERC5008 /* is IERC165 */ { /// @notice Emitted when the `nonce` of an NFT is changed event NonceChanged(uint256 tokenId, uint256 nonce); /// @notice Get the nonce of an NFT /// Throws if `tokenId` is not a valid NFT /// @param tokenId The id of the NFT /// @return The nonce of the NFT function nonce(uint256 tokenId) external view returns(uint256); } 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: cd ../assets/eip-5008 npm install npm run test Reference Implementation See ERC5008.sol. Security Considerations No security issues found. Copyright Copyright and related rights waived via CC0. Citation Please cite this document as: Anders (@0xanders), Lance (@LanceSnow), Shrug , "ERC-5008: ERC-721 Nonce Extension [DRAFT]," Ethereum Improvement Proposals, no. 5008, April 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5008. Ethereum Improvement Proposals Ethereum Improvement Proposals ethereum/EIPs Ethereum Improvement Proposals (EIPs) describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.