Solidity合约标准----ERC721

ERC721

非同质化token,它依赖于ERC-165

在这里插入图片描述
在这里插入图片描述

ERC721 快速体验

参照官方提供的案例,直接部署到remix,自动下载依赖 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 实质:  address==>tokenId
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;

   //NFT name,NFT简写
    constructor() ERC721("ZhongYuanUniversity", "ZUT") {}

   //白名单 player---》你的地址  tokenURI---》URL
    function awardItem(address player, string memory tokenURI)
        public
        returns (uint256)
    {
        //获取当前的tokenID
        uint256 newItemId = _tokenIds.current();
        
        //铸造NFT  (地址---》数字tokenID)
        _mint(player, newItemId);
        //设置token相关信息
        _setTokenURI(newItemId, tokenURI);
        //tokenid自增,防止重复
        _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

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟逆袭之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值