Solidity 以太坊智能合约标准-ERC721(2023版)

ERC721是用于创建和管理不可分割且具有唯一性的Token的以太坊标准,常用于非同质化Token(NFT)。此标准定义了如balanceOf、ownerOf和transferFrom等接口,以确保安全的Token转移,并要求实现ERC165接口。智能合约示例展示了如何实现这些功能,包括安全转账、授权和合约间的交互。

ERC721 定义了一种以太坊生态中不可分割的、具有唯一性的Token交互、流通的接囗规范。官网简要称为 Non-Fungible Token Standard(简称NFT标准规范),即非同质化Token(或不可替代的Token)。

ERC721合约标准提供了在实现ERC721 Token 时必须要遵守的协议,要求每个ERC721标准合约需要实现ERC721接囗及ERC165接囗。

ERC721特性:

  • 在该合约内,tokenId唯一
  • tokenId只能被一个owner所拥有
  • 一个owner可以拥有多个NFT,balance函数只能查询owner拥有多少个token
  • NFT可通过approve、transfer等接囗方法进行流通,即NFT所有权转移

ERC721接口实现及详解:

// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.7;
interface IERC721 /* is ERC165 */ {

    event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
    //转移事件:token发生转移时进行event通知;
    event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
    //授权事件:发生授权事件时进行通知;
    event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
    //全部授权事件,发生全部授权时进行通知;
    function balanceOf(address _owner) external view returns (uint256);
    //账户余额:账户有多少个tokenID
    function ownerOf(uint256 _tokenId) external view returns (address);
    //拥有权查询:按照tokenID查询其归属账户
    function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes memory data) external payable;
    //tokenID转移,参数不同;
    function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
    //tokenID安全转移:转移三要素要存在;
    function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
    //tokenID转移
    function approve(address _approved, uint256 _tokenId) external payable;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值