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
|