ERC-721初认识
ERC721官方简要解释是Non-Fungible Tokens,简写为 NFTs ,多翻译为 不可互换的Token 。ERC721 是由Dieter Shirley 在2017年9月提出。Dieter Shirley 正是加密猫CryptoKitties背后的公司Axiom Zen的技术总监。加密猫也是第一个实现了ERC721 标准的去中心化应用。
NFTs(Non-Fungible Tokens) ,翻译过来是不可互换的Token。以加密猫为例,每只加密猫实质上都是 ERC-721 的Token,每只加密的基因是不一样的(实质上是拥有不同属性的Token),猫之间是不能置换的。这种独特性使得某些 稀有猫 具有收藏价值,也因此受到追捧。
ERC20代币是可置换的,也就是说所有的 ERC-20Token 都是一样的。我手中的 ERC-20Token 和你手中的 ERC-20Token 本质上是一样的,是可以互相转换的,在使用的时候,我们只关心余额,而不关心Token之间的区别。而 ERC-721 的Token是不可置换的。仍然以加密猫为例子,加密猫这个游戏中的Token就是加密猫,每个人的加密猫是不一样的。 ERC721的Token或虚拟物品具有收藏价值的属性
ERC-721 Token 是不可互换的,比如上面讲的加密猫。所以它适用于那些具有 稀缺性或者不可替换的资源 的场景,比如创造一些稀缺的虚拟物品(这些物品和现实世界中的那些古玩收藏品一样),尤其在加密货币收藏和网络游戏领域拥有巨大的潜力。 ERC-721 Token 虽然不可互换,但是它可以通过交易,去置换 ERC-20 Token ,比如一个加密猫可以价值几百个ETH。
此外,将来它还能实现 物理资产 ,如:房屋、土地等上链,用 ERC-721 对这些资产确权。
ERC721最为一个合约标准,提供了在实现ERC721代币时必须要遵守的协议,要求每个ERC721标准合约需要实现ERC721及ERC165接口,接口定义如下:
注解说明
1、调用者msg.sender应该是当前tokenId的所有者或被授权的地址
2、_from 必须是 _tokenId的所有者
3、_tokenId 应该是当前合约正在监测的NFTs 中的任何一个
4、_to 地址不应该为 0
5、如果_to 是一个合约应该调用其onERC721Received方法, 并且检查其返回值,如果返回值不为bytes4(keccak256(“onERC721Received(address,uint256,bytes)”))抛出异常。
一个可接收NFT的合约必须实现ERC721TokenReceiver接口:
参考:
区块链 — FT、NFT、ERC-20协议和ERC-721协议
FT即同质化代币,同质化的加密货币构成了目前市场上大部分的代币。
FT以这样的方式配置的数字资产——即每个代币(或代币的碎片)与下一个代币等同。
可替代性是法定货币中的一个特征。例如,一张20美元的钞票可以兑换成任何其他20美元的钞票,甚至可以兑换成零头。即使不是绝对的20美元钞票,它也可以是5美元钞票的倍数,甚至更少,总之总量等于20美元。
NFT即非同质化代币,非同质化代币通常是指开发者在以太坊平台上根据 ERC-721 标准/协议所发行的代币。用来描述一种独特的数字资产,它的所有权是在区块链上可以进行溯源的。
NFT 是唯一的、不可拆分的 token,所有的艺术品,不管是图书文字、音乐或是影像…等各种形式,甚至是数字化的收藏品与线上游戏都可以通过 NFT 的特殊认证方式来验证其独特与稀有价值。
因此NFT 与传统经济体系中的收藏品相比具有不同的特征:
官方说明文档地址:
ERC20标准以太坊上的一个代币协议,所有基于以太坊开发的代币合约都遵守这个协议。
账户A有1000个ETH,想允许B账户随意调用100个ETH。
官方说明文档:
ERC-721兼容了ERC-20的一些特性,与ERC-20的主要区别是定义了token的owner, 即每个token都详细记录它历史的拥有者,以及定义了token的Metadata, 即元数据。ERC-721还需要实现ERC165中的接口。
Metadata用于定义单个代币的唯一特征,为一个特定的代币ID提供描述性信息 。以加密猫为例,每只加密猫都有不同的颜色、形状、名称等。
• tokenId :在合约内唯一的 NFT ID,在NFT的生命周期中不可改变(要实现全链唯一的必须用(contractAddr, tokenId)组成的元组)
• name :名称,类似于ERC-20的名称
• symbol :符号,类似于ERC-20的符号
• uri :指向外部信息的链接,一般是一个JSON,而在JSON中有进一步更加具体的信息
如有不对,烦请指出,感谢~
ERC-721 文档翻译(上)
在之前的2篇文章中,已经讲了一些关于ERC-721的基本概念,适用范围,以及ERC-721与ERC-20的区别。本文是针对ERC-721 NFTS (Non-Fungible Tokens)标准的翻译,将会更加详细与准确,由于文章篇幅较长,所以分为上、下2部分来讲解。由于本人水平有限,如有错误,欢迎大家指正。
原文链接
ERC-721是对于不可互换Token的一个标准接口,也称为契约
以下标准将允许在智能合约中去实现 NFTs 的标准API。这些标准提供了一些基本的函数去追踪和交易NFTs。
我们考虑了以下2种使用案例,NFTs由个人拥有和交易以及向第三方经纪人/钱包/运营商托运。NFTs可以代表数字或者物理资产的所有权。我们考虑了各种各样的资产,并且我们知道你会想象的更多:
一般来说,所有的房子都是独特的,没有2只猫是一样的。NFTs是可区分的,并且你必须单独追踪每一个的所有权。
标准接口允许钱包/经纪人/拍卖应用程序在以太坊的任何NFT上运行。我们提供了简单的ERC-721 智能合约以及追踪任意数量NFT的合约。其它的应用程序会在后面讨论。
ERC-721标准是受ERC-20 token 标准和EIP-20被创造2年来的经验的启发。EIP-20不足以追踪NFTs,因为每个资产都是不同的(不可置换的),然而每一个Token都是相同的(可置换的)。
这个标准和EIP-20的区别如下。
在本文档中的关键字,”MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL”将会按照RFC 2119中的描述进行解释。
每个符合ERC-721标准的合约都必须实现ERC721 和 ERC165接口(受以下注意事项的限制)
接口说明:
balanceOf(): 返回由_owner 持有的NFTs的数量。
ownerOf(): 返回tokenId代币持有者的地址。
approve(): 授予地址_to具有_tokenId的控制权,方法成功后需触发Approval 事件。
setApprovalForAll(): 授予地址_operator具有所有NFTs的控制权,成功后需触发ApprovalForAll事件。
getApproved()、isApprovedForAll(): 用来查询授权。
safeTransferFrom(): 转移NFT所有权,一次成功的转移操作必须发起 Transer 事件。函数的实现需要做一下几种检查:
调用者msg.sender应该是当前tokenId的所有者或被授权的地址
_from 必须是 _tokenId的所有者
_tokenId 应该是当前合约正在监测的NFTs 中的任何一个
_to 地址不应该为 0
如果_to 是一个合约应该调用其onERC721Received方法, 并且检查其返回值,如果返回值不为bytes4(keccak256(“onERC721Received(address,uint256,bytes)”))抛出异常。
一个可接收NFT的合约必须实现ERC721TokenReceiver接口:
transferFrom(): 用来转移NFTs, 方法成功后需触发Transfer事件。调用者自己确认_to地址能正常接收NFT,否则将丢失此NFT。此函数实现时需要检查上面条件的前4条。
对于ERC-721智能合约, 元数据扩展(metadata extension) 是可选项(参见下面的注意事项)。这可以让你的智能合约被讯问其名称以及有关您NFTs资产的详细信息
接口说明:
name(): 返回合约名字,尽管是可选,但强烈建议实现,即便是返回空字符串。
symbol(): 返回合约代币符号,尽管是可选,但强烈建议实现,即便是返回空字符串。
tokenURI(): 返回_tokenId所对应的外部资源文件的URI(通常是IPFS或HTTP(S)路径)。
外部资源文件需要包含名字、描述、图片,其格式的要求如下:
对于ERC-721智能合约,枚举扩展(enumeration extension)是可选的。这允许您的合约发布完整的NFTs列表并且使其可以被发现。主要目的是提高合约中NTF的可访问性。
接口说明:
totalSupply(): 返回NFT总量
tokenByIndex(): 通过索引返回对应的tokenId。
tokenOfOwnerByIndex(): 所有者可以一次拥有多个的NFT, 此函数返回_owner拥有的NFT列表中对应索引的tokenId。
NFT是什么?
简单来说,不可替代的代币又称NFT是专有的数字资产。因此,没有 不可替代的令牌是相同的。让我们这样解释一下,当我们向用户发送1个BTC并收到1个BTC时,对于我们来说没有任何变化。那是因为每个硬币都是相同的,这使其成为可替代的数字资产。NFT就像达芬奇(Leonardo da Vinci)的《蒙娜丽莎》(Mona Lisa)。它是独特的,这就是使其变得有价值的原因。全世界没有其他画作。
同样,每个NFT存储某种形式的元数据,使其成为区块链上的唯一条目。也就是说,即使是类似区块链上的NFT也是不可互换的。
独一无二的加密货币如何赋予所有者权力?
NFT带有一种存储丰富元数据的机制,该元数据超出了令牌符号,供应,名称和余额的范围。它还存储资产和所有权详细信息。因此,可以保证所有者和未来的买家有出处。
随着CryptoKitties的发布,NFTs在2017年成为该镇的话题。
NFT有什么价值?
为了回答这个问题,让我们来看看NFT的发展。
早在2013年,当Color Coin就建立在比特币上时,就开始在区块链上创建NFT的尝试。但是,NFT的第一个技术标准于2017年出现。其名称为ERC721。也就是说,它与ERC20不同。这是因为ERC721跟踪各个令牌的所有权和移动。这就是使不可替代的令牌独特且有价值的原因。
猫繁殖游戏CryptoKittes是ERC721的第一个成功实现。因此,每个ERC721代表一个唯一的数字小猫。最昂贵的CryptoKitty在2017年的交易价格为172,625美元(当时为600 ETH)。
这使像Google Ventures这样的大型巨头都意识到NFT的力量的时候。
最近,一家区块链初创公司Enjin与Microsoft合作创建了名为Microsoft Azure Heroes的加密收藏品。我们将以它为例来说明NFT在现实世界中的工作方式。
在现实世界中,NFT在艺术,古董,复古,财产所有权等方面具有一些极具潜力的用例。游戏成为第一个推动NFT实际实施的行业的主要原因有很多。这是因为赌注很低,而且游戏玩家已经熟悉了数字收藏品的概念。
NFT的未来迭代很可能会将物理资产链接到这些加密货币,以实现现实世界中的不信任转移。举一个例子,识别证书和软件许可证可以作为NFT进行交易。
许多项目已经在提出更好的NFT标准,例如ERC115,ERC875和ERC998。
突出不可替代代币的特征:
它们是所有者独有的。
它们不能与另一个相同的NFT互换;
每个NFT都有其独特的特征;
每个NFT代表所有权,权利和特权;
NFT是不可分割的。
NFT如何运作
NFT可以通过多种方式工作。在这里,我们将使用Microsoft推出的最新数字收藏品的示例。许多开发人员正在使用Microsoft Azure平台。现在,他们可以赢得区块链数字收藏品。
恩金(Enjin)共开发了五个徽章,并由区块链提供支持。每个徽章都将限量供应,并将奖励给对Azure平台做出有价值贡献的个人。
风险提示:根据央行等部门发布“关于进一步防范和处置虚拟货币交易炒作风险的通知”,本网站内容仅用于信息分享,不对任何经营与投资行为进行推广与背书,请读者严格遵守所在地区法律法规,不参与任何非法金融行为。本文收集整理自网络,不代表经典网立场,如若转载,请注明出处:https://www.jingdian230.com/qkl/180001.html
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台用户上传并发布,本平台仅提供信息存储服务。
Special statement: The above contents (including pictures or videos, if any) are uploaded and released by users of the we-media platform. This platform only provides information storage services.