ERC721
非同質(zhì)化token,它依賴于ERC-165
ERC721 快速體驗(yàn)
參照官方提供的案例,直接部署到remix,自動(dòng)下載依賴 https://docs.openzeppelin.com/contracts/4.x/erc721
// contracts/GameItem.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
// ERC721: 0x80ac58cd
//ERC165: 0x01ffc9a7
contract GameItem is ERC721URIStorage {
//NFT 實(shí)質(zhì): address==>tokenId
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
//NFT name,NFT簡(jiǎn)寫
constructor() ERC721("ZhongYuanUniversity", "ZUT") {}
//白名單 player---》你的地址 tokenURI---》URL
function awardItem(address player, string memory tokenURI)
public
returns (uint256)
{
//獲取當(dāng)前的tokenID
uint256 newItemId = _tokenIds.current();
//鑄造NFT (地址---》數(shù)字tokenID)
_mint(player, newItemId);
//設(shè)置token相關(guān)信息
_setTokenURI(newItemId, tokenURI);
//tokenid自增,防止重復(fù)
_tokenIds.increment();
return newItemId;
}
}
ERC721 功能體驗(yàn)
部署成功后擁有以下功能
ERC721 功能測(cè)試
1. 設(shè)置待測(cè)試的4個(gè)賬戶
2. 鑄造NFT
3. 查詢NFT數(shù)量
4. 依據(jù)tokenid查詢NFT屬主
5.部分NFT委托授權(quán)第三者
6.查詢NFT是否已被授權(quán)
7.由第三者執(zhí)行NFT轉(zhuǎn)移
8.查詢屬主NFT數(shù)量,判斷是否轉(zhuǎn)移成功
9.將NFT全權(quán)委托第三者
10.查詢是否委托成功
11.由第三者執(zhí)行NFT安全轉(zhuǎn)移
safeTransferFrom()實(shí)現(xiàn)安全轉(zhuǎn)移功能,其本質(zhì)是如果接收方的用戶地址為合約地址,則必須實(shí)現(xiàn)IERC721Receiver-onERC721Received接口。
12.依據(jù)tokenid查詢1號(hào)屬主,判斷是否轉(zhuǎn)移成功
13.由第三者執(zhí)行NFT安全轉(zhuǎn)移,可以附加數(shù)據(jù)
14.查詢?cè)紨?shù)據(jù)所有者NFT數(shù)量
原始數(shù)據(jù)所有者已全部轉(zhuǎn)移NFT文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-784834.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-784834.html
到了這里,關(guān)于Solidity合約標(biāo)準(zhǔn)----ERC721的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!