在本文中,我们将解释令牌标准“ ERC721”,该标准允许您基于以太坊创建唯一的令牌。
ERC20,ERC223,ERC721
ERC20是当前使用最广泛的基于以太坊的令牌标准。除了ERC20,还提出了ERC223来解决ERC20汇款问题。
在这里,“标准” 定义了用于确定令牌操作的智能合约的通用规范,每个令牌发行者都基于此规范实现令牌。如果令牌是基于标准的,则处理令牌的钱包和交易所等应用程序可以根据接口在通用流程中处理令牌,而无需为每个令牌编写单独的流程。
ERC20和ERC223是用作货币的令牌标准,但是后面跟随着不可替代的令牌(NFT:不可替代的令牌,以下简称NFT),即标准“ ERC721”在2018年1月提出。讨论了以太坊系统改进建议机制EIP,并将其用作EIP721。规范发布在以太坊网站和GitHub上。
ERC721针对的NFT及其应用
在解释NFT之前,我将解释货币“可替代性”的性质。
在货币方面,通常强调可替代性。可替代性是每个硬币都可以接受的特性。预期每个1ETH具有相同的值,并且可以交换。听起来很自然,但是在具有电子历史记录的货币(例如虚拟货币)的情况下,该货币(例如,过去用于犯罪的货币和被盗的货币)可能会被着色并被接收者拒绝有性。还有一些虚拟货币(例如Zcash)隐藏交易,以保证更高的可替代性。
*相关文章:Zcash以零知识证明实现私人交易
那么NFT不能替代什么样的代币呢?代币往往会提醒您某种虚拟货币,但是很容易想象在基于以太坊的去中心化游戏CryptoKitties中,像小猫一样的收藏品在2017年底的虚拟货币热潮中很受欢迎。实际上,CryptoKitties是ERC721的早期采用者而闻名。通过继承ERC721接口来实现CryptoKitties小猫的所有权。CryptoKitties可以看作是一款游戏,您可以在以太坊网络上享受收集,交配和交换类似猫的代币的乐趣。
此外EIP721的页面中,为ERC721的目标,已经被提到是实物资产的房子和艺术作品,独特的卡片数码收藏,比如一个负值贷款。
您可以在提供有关以太坊网络信息的Etherscan列表中查看存在哪些ERC721令牌。似乎有很多与游戏有关的事物,但也有名称为“ land”的代币,也有与土地有关的代币。这是ERC721令牌,用于名为Decentraland的虚拟世界中的土地交易。(*从10/24首次出现更新。)
ERC721的特点
让我们看一下ERC721接口,请记住ERC721令牌不能被替换。与ERC20一样,ERC721也具有transferFrom函数来传输令牌,但是定义略有不同。
<ERC20>
1
|
function transferFrom(address from, address to, uint tokens) public returns (bool success);
|
<ERC721>
1
|
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
|
在ERC721中,每个令牌都是唯一的并且不能被替换,即,它是唯一的,因此,令牌ID(_tokenId)代替令牌数量(_value)被指定为参数并被传送。对于其他转移功能和批准功能,请指定令牌ID,而不是指定令牌数量。
还有一种用于保存ERC721特定功能和数据的机制。ownerOf函数从令牌ID返回所有者的地址。
1
|
function ownerOf(uint256 _tokenId) external view returns (address);
|
使用是可选的,但是ERC721Metadata可以处理令牌元数据。以CryptoKitties小猫为例,名称,详细信息,可视图像URL等是元数据。假定元数据存储在外部服务器上,并且ERC721Metadata包含一个以ERC721元数据JSON格式返回元数据的URI。
1
2
3
4
5
|
interface ERC721Metadata {
function name() external view returns (string _name);
function symbol() external view returns (string _symbol);
function tokenURI(uint256 _tokenId) external view returns (string);
}
|
规范中还存在一个问题,该问题将元数据保留在外部。去中心化的应用程序不再能够保证“应用程序需要永远运行而无需管理”的性质。例如,如果看起来像是外部存储的收藏品的图像数据丢失了,价值就会丢失。因为有这种可能性。
ERC721还定义了一个ERC721TokenReceiver接口,该接口将在应用程序侧(例如处理令牌的钱包)实现。
1
2
3
|
interface ERC721TokenReceiver {
function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes4);
}
|
对于接受称为安全传输的安全令牌传输的应用程序,该应用程序必须实现在ERC721令牌传输时调用的onERC721Received函数。这类似于ERC223,后者要求接收方智能合约实现tokenFallback功能以解决ERC20汇款失败问题。
在开发ERC721令牌和处理它们的智能合约时,最好使用以Solidity编写的称为OpenZeppelin的智能合约开放框架,就像ERC20一样。它不仅节省了安装的麻烦,而且对于防止由您自己的代码引起的事故也很有用。
ERC721的未来
随着虚拟货币的传播和使用,人们认识到对标准的需求,并且从ERC20开始,出现了新标准,例如ERC223和ERC721。这使我们想起了计算机和Internet普及期间各种软件,硬件以及网络协议和标准的标准化和提议。
提议作为NFT标准的ERC721已从草稿阶段作为适用于收藏游戏(如CryptoKitties)的应用程序发布。ERC721部分合并了ERC20规范,在处理令牌错误交付方面具有与ERC223相同的功能。
在未来,随着相关令牌的标准,包括怎么比的比赛我只是要注意是否使用ERC721资金的其他领域。
本文链接地址:https://www.wwsww.cn/ytf/1311.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。