ERC721
非同质化token,它依赖于ERC-165
 
ERC721 快速体验
参照官方提供的案例,直接部署到remix,自动下载依赖 https://docs.openzeppelin.com/contracts/4.x/erc721
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract GameItem is ERC721URIStorage {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("ZhongYuanUniversity", "ZUT") {}
function awardItem(address player, string memory tokenURI)
public
returns (uint256)
{
uint256 newItemId = _tokenIds.current();
_mint(player, newItemId);
_setTokenURI(newItemId, tokenURI);
_tokenIds.increment();
return newItemId;
}
}
ERC721 功能体验
部署成功后拥有以下功能

ERC721 功能测试
1. 设置待测试的4个账户

2. 铸造NFT

3. 查询NFT数量

4. 依据tokenid查询NFT属主

5.部分NFT委托授权第三者

6.查询NFT是否已被授权

7.由第三者执行NFT转移

8.查询属主NFT数量,判断是否转移成功

9.将NFT全权委托第三者

10.查询是否委托成功

11.由第三者执行NFT安全转移
safeTransferFrom()实现安全转移功能,其本质是如果接收方的用户地址为合约地址,则必须实现IERC721Receiver-onERC721Received接口。 
12.依据tokenid查询1号属主,判断是否转移成功

13.由第三者执行NFT安全转移,可以附加数据

14.查询原始数据所有者NFT数量
原始数据所有者已全部转移NFT

|