Skip to content

Latest commit

 

History

History
41 lines (33 loc) · 2.42 KB

File metadata and controls

41 lines (33 loc) · 2.42 KB

第三十四课 ERC721

使用ERC721标准,来抽象非同质化的物品。

EIP与ERC的区别

EIP全称 Ethereum Improvement Proposals(以太坊改进建议), 是以太坊开发者社区提出的改进建议, 是一系列以编号排定的文件, 类似互联网上IETF的RFC。

EIP可以是 Ethereum 生态中任意领域的改进, 比如新特性、ERC、协议改进、编程工具等等。

ERC全称 Ethereum Request For Comment (以太坊意见征求稿), 用以记录以太坊上应用级的各种开发标准和协议。如典型的Token标准(ERC20, ERC721)、名字注册(ERC26, ERC13), URI范式(ERC67), Library/Package格式(EIP82), 钱包格式(EIP75,EIP85)。

ERC协议标准是影响以太坊发展的重要因素, 像ERC20, ERC223, ERC721, ERC777等, 都是对以太坊生态产生了很大影响。

ERC165

通过ERC165标准,智能合约可以声明它支持的接口,供其他合约检查。

IERC165接口合约只声明了一个supportsInterface函数,输入要查询的interfaceId接口id,若合约实现了该接口id,则返回true:

    interface IERC165 {
        /**
        * @dev 如果合约实现了查询的`interfaceId`,则返回true
        * 规则详见:https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
        *
        */
        function supportsInterface(bytes4 interfaceId) external view returns (bool);
    }

ERC721

ERC721和ERC20的最大区别就是它利用tokenId来表示特定的非同质化代币,授权或转账都要明确tokenId;而ERC20只需要明确转账的数额即可。 不同的tokenId,具有的价值是不一样的。 主要包含的函数有:

  • balanceOf:返回某地址的NFT持有量balance。
  • ownerOf:返回某tokenId的主人owner。
  • transferFrom:普通转账,参数为转出地址from,接收地址to和tokenId。
  • safeTransferFrom:安全转账(如果接收方是合约地址,会要求实现ERC721Receiver接口)。参数为转出地址from,接收地址to和tokenId。
  • approve:授权另一个地址使用你的NFT。参数为被授权地址approve和tokenId。
  • getApproved:查询tokenId被批准给了哪个地址。
  • setApprovalForAll:将自己持有的该系列NFT批量授权给某个地址operator。
  • isApprovedForAll:查询某地址的NFT是否批量授权给了另一个operator地址。
  • safeTransferFrom:安全转账的重载函数,参数里面包含了data。