在区块链的世界里,数字资产的概念已经远超比特币这样的同质化代币,非同质化代币,或称NFT,以其独特的不可替代性,在数字艺术、收藏品、游戏道具、房地产等领域掀起了一场革命,而以太坊,作为智能合约平台的先驱,其ERC721标准定义了NFT的核心规范,本文将通过一个清晰的ERC721合约示例代码,带你一步步理解其核心机制与实现逻辑。

什么是ERC721?

ERC721是一个以太坊代币标准,它要求每个代币都是独一无二的,这与ERC20(同质化代币,如每个币都相同)形成了鲜明对比,你可以把它想象成数字世界的“房产证”——每一套房子(代币)都有唯一的地址(Token ID),价值各不相同,ERC721标准定义了智能合约需要实现的接口(函数),确保了不同NFT项目之间的互操作性。

ERC721合约的核心要素

一个标准的ERC721合约通常包含以下几个核心部分:

  1. IERC721 接口:定义了合约必须实现的外部函数,如 balanceOf(查询地址的代币数量)、ownerOf(查询代币所有者)、transferFrom(转移代币)等。
  2. IERC721Metadata 接口:可选但强烈推荐,用于提供代元的元数据信息,如名称、符号以及通过 tokenURI 函数获取每个代币的详细描述(通常是JSON格式,指向图片、描述等)。
  3. ERC721 基础合约:OpenZeppelin库提供了经过安全审计的 ERC721 基础合约,我们只需要继承它并在此基础上进行开发,极大地提高了安全性和开发效率。
  4. _mint 函数:这是铸造新代币的核心函数,它会创建一个新的、独一无二的代币,并将其所有权分配给指定地址。
  5. _ownerOf_balances 内部状态:用于记录每个Token ID的所有者以及每个地址拥有的代币数量。

ERC721合约示例代码

下面是一个基于OpenZeppelin库的、功能完整的ERC721合约示例,这个合约名为 MyNFT,它实现了ERC721和ERC721Metadata标准,并包含了一个简单的铸造功能。

随机配图