# 1 TRC-721 Protocol Standard
TRC-721 is a set of standard interfaces, for issuing non-fungible tokens(NFT) on the TRON network. TRC-721 is fully compatible with ERC-721.
## 1.1 TRC-721 Smart Contract Interface Implementation
Every TRC-721 compliant contract must implement the TRC721 and TRC165 interfaces. Other extension interfaces can be implemented according to specific business requirements.
### 1.1.1 TRC-721 & TRC-165 Interfaces
A wallet/broker/auction application MUST implement the `wallet
` interface if it will accept safe transfers.
Note
The hash of `
bytes4(keccak256("onTRC721Received(address,address,uint256,bytes)))
` is different from the Ethereum version `bytes4(keccak256("onERC721Received(address,address,uint256,bytes)))
`. Please use `0x5175f878
` instead of `0x150b7a02
`.
### 1.1.2 OPTIONAL Metadata Extension Interface
The metadata extension is OPTIONAL for TRC-721 smart contracts. This allows your smart contract to be interrogated for its name and for details about the assets which your NFTs represent.
URI is a URI link describing the _tokenId asset, pointing to a JSON file that conforms to the TRC721 metadata description structure. When tokens are minted, each token needs to be assigned a unique URI:
### 1.1.3 OPTIONAL Enumeration Extension Interface
The enumeration extension is OPTIONAL for TRC-721 smart contracts. This allows your contract to publish its full list of NFTs and make them discoverable.