ERC-721是什么?以太坊上的非同质化代币标准

2024-02-27分类:NFT 阅读(


在区块链领域,代币是一种重要的概念,它可以代表一种数字资产或权利,可以在区块链网络上进行发行、流通和交易。代币的种类繁多,但根据其可替代性,可以分为两大类:同质化代币(Fungible Token,FT)和非同质化代币(Non-Fungible Token,NFT)。

同质化代币是指每个代币都是相同的,没有区别,可以互相替换的代币。例如,比特币、以太坊等加密货币,以及美元、人民币等法定货币,都是同质化代币。同质化代币的特点是,它们只有数量的差别,没有质量的差别,它们的价值是统一的,不受个别代币的影响。

非同质化代币是指每个代币都是独一无二的,有自己的特征和属性,不能互相替换的代币。例如,加密猫、加密艺术品、加密域名等数字收藏品,以及房产、汽车、证书等实物资产,都是非同质化代币。非同质化代币的特点是,它们不仅有数量的差别,还有质量的差别,它们的价值是不同的,受个别代币的影响。

在以太坊平台上,代币的发行和管理都需要遵循一定的标准,以保证其与其他代币和智能合约的兼容性和互操作性。对于同质化代币,最常用的标准是 ERC-20,它定义了一套代币的基本功能和接口,例如代币的名称、符号、总量、余额、转账、授权等。对于非同质化代币,最常用的标准是 ERC-721,它定义了一套非同质化代币的基本功能和接口,例如代币的所有者、授权、安全转移、元数据等。

ERC-721(Ethereum Request for Comments 721)是由 William Entriken、Dieter Shirley、Jacob Evans、Nastassia Sachs 在 2018 年 1 月提出的一份以太坊改进提案(EIP),它是一个在智能合约中实现非同质化代币 API 的标准。它提供了一些功能,例如将代币从一个账户转移到另一个账户,获取账户的当前代币余额,获取代币的所有者,以及整个网络的可用代币总供应量。除此之外,它还具有其他功能,例如批准账户中一定数量的代币可以被第三方账户转移。如果一个智能合约实现了以下方法和事件,它就可以被称为一个 ERC-721 非同质化代币合约,一旦部署,它就会负责跟踪在以太坊上创建的非同质化代币。

方法:

1. function balanceOf(address _owner) external view returns (uint256); // 获取某个账户拥有的代币数量

2. function ownerOf(uint256 _tokenId) external view returns (address); // 获取某个代币的所有者

3. function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable; // 安全地将代币从一个账户转移到另一个账户,同时传递一些额外的数据

4. function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable; // 安全地将代币从一个账户转移到另一个账户

5. function transferFrom(address _from, address _to, uint256 _tokenId) external payable; // 将代币从一个账户转移到另一个账户

6. function approve(address _approved, uint256 _tokenId) external payable; // 授权某个账户可以转移某个代币

7. function setApprovalForAll(address _operator, bool _approved) external; // 授权某个账户可以转移所有代币

8. function getApproved(uint256 _tokenId) external view returns (address); // 获取某个代币的授权账户

9. function isApprovedForAll(address _owner, address _operator) external view returns (bool); // 获取某个账户是否被授权可以转移所有代币

事件:

1. event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); // 代币转移事件

2. event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId); // 代币授权事件

3. event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved); // 全部代币授权事件

ERC-721 的意义和价值在于,它为非同质化代币提供了一个通用的标准,使得不同的非同质化代币可以在以太坊平台上进行互通和交易,也使得开发者可以更容易地创建和管理非同质化代币。非同质化代币的应用场景非常广泛,例如数字收藏品、游戏道具、数字艺术品、数字身份、数字证书、实物资产等,它们都可以通过 ERC-721 标准来实现其唯一性、稀缺性、可验证性和可交易性。

Tags: