科普 | ERC协议终极解读:ERC-721

黑皮书
黑皮书 机构得得号

Sep 08, 2018 去中心化的区块链价值挖掘社区

摘要: ERC-721协议下的token具有非同质性的特点,即每个代币都具有不同的价值。该协议最出名的应用要数加密猫(CryptoKitties)。在加密猫游戏中,玩家可以买卖和培育数字猫。每一只猫都有其唯一的特性,使得一些稀有的加密猫的收藏价值极其高。

从ERC标准发行以来,基于以太坊网络的token被大范围的创造出来并被用于交易,这些代币俨然已经成为以太坊生态系统的支柱。一些企业用这些token作为它们系统内的货币,一些token被当作公司的股权放在交易所上交易,一些token则作为收藏品存在,如加密猫。

  ERC-721

ERC-721的理念,就与ERC-827完全不同了。要理解ERC-721呈现的概念,就必须理解什么是同质性物品和非同质性物品。

同质性物品 / 非同质性物品

如果一个物品被认为是同质性的,那么这个物品类别下的每个个体之间没有差别。简单来说就是,两个同质性物品的价值在所有人眼中完全相同,它们互相之间可以交换。

比如说一枚2加拿大元,每枚2加元硬币都可以与另一个2加元硬币互换。所以2加元硬币是可互换的,即同质性物品。

举一个非同质性产品的例子。比如清代的官窑瓶。同样是两个清代的官窑花瓶,价值上可能会相差悬殊。保存完整度,制作年份,初代使用者是谁。甚至花瓶的收藏者的身份对于该花瓶价值都有影响。

现在我们来看以下ERC-721协议有哪些用途,其以什么样的方式来实现非同质性token的概念的。每个基于ERC-20协议的token都是一摸一样的,无法区分,但是ERC-721 token的理念是设计一种token,其token所有者可以将他的token与其他人的分辨开。最出名的应用要数加密猫(CryptoKitties)。在加密猫游戏中,玩家可以买卖和培育数字猫。每一只猫都有其唯一的特性,使得一些稀有的加密猫的收藏价值极其高。

ERC-721协议也有一些其他应用,其token可以作为一种资产的证明。比如,ERC-721 token可以被设计用来代表一套房产,一件知识产权等等。ERC-721 token也可以用来代表一些实物。例如一家线上商城,可以设计一套ERC-721 token机制,每个token代表一件商品。

ERC-721技术详解

知道了ERC-721的设计理念,下面来看一下ERC-721的技术解析。以下是openzeppelin项目开发的ERC-721基本界面。

balanceOf
下面这段代码中,ownedTokens列出了某个地址下拥有的token ID。而balanceOf函数会返回某地址下token的总量。

ownerOf
映射tokenOwner时,将tokenID作为输入,返回该token的所有者。但是因为其可见性为“private”,这时就需要引入ownerOf函数,来将此映射的返回值公开可见。它也包含了一个检查方程,在返回数值前检测地址是否为0。

transfer
此函数只能被token所有者调用,transfer函数将新主人的地址设置为_to参量,_tokenId指向被转让的token。此函数必须包含一个逻辑来检测该笔转账是否被签收。转账被签收后,另一个逻辑来移除现主人对token的所有权,然后把其加入到新主人的token列表中。

approve
此函数可用来授权一个地址来声明给定tokenID的所有权。这个函数也被标记为onlyOwnerOf,所以其只能被token所有者调用。tokenApprovals变量用来映射tokenID和被授权的地址。类似于transfer函数,approve也将新主人的地址设置到_to变量下,_tokenId为被转让的资产。函数中包含了检测机制,防止新主人与前主人地址相同,且都不为0。然后更新tokenApprovals映射,并且激活一个Approval事件。

takeOwnership
isApprovedFor函数返回一个布尔值(boolean),其值由approvedFor(_tokenId) ==  _owner的结果决定。takeOwnership函数取_tokenId为输入值,然后对信息发送者执行相同的检查,如果发送者通过了类似于transfer函数的逻辑检测机制,它就可以继续声称对_tokenID的所有权。

· End ·

声明:本文为黑皮书社区-薄荷橙创作,内容为作者个人观点,不代表“黑皮书”立场,不构成任何投资意建议,敬请知晓。

(作者:黑皮书,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 黑皮书 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信