去年 11 月,Crypokitties 的发布给加密货币的世界带来了风暴,有些加密猫的价格甚至涨到了 30 万美圆,以太坊网络拥堵不堪,平均贡献了当时以太坊网络30%的交易额。当 Cryptokitties 的用户活跃度和去年年末的高峰期相比急剧降低之时,市场上出现了不少数字加密收藏品的变种。数字加密收藏品增加的背后是不可替代代币出现以后释放出来的助力。数据库
NFT(Non-Fungible Token) 定义了一种生态中不可分割的、具备惟一性的代币交互和流通的接口规范。
浏览器
在区块链上,数字加密货币分为原生币和代币两大类。前者如Bitcoin、Qtum等,拥有本身的主链,使用链上的交易来维护帐本数据;后者如BOT、INK等,依附于现有的区块链,使用智能合约来进行帐本的记录。代币之中又可分为同质化和非同质化两种。网络
同质化代币,即FT(Fungible Token),以ERC20和QRC20为基本标准,是互相能够替代、可接近无限拆分的token。而非同质化代币,即NFT,则是惟一的、不可拆分的token,如加密猫、token化的数字门票等。app
FT的特性使其能够用来表示现实世界中各类具备可替代性的事物,如货币、积分、股票等。这些事物须要能够拆分,而后在用户之间进行交换。在区块链上,FT被普遍应用于发行新的数字货币。这些数字货币一般与公司的股权或是产品的使用权限进行挂钩,吸引用户的购买或炒做。函数
现在市场逐渐回归理性,也使咱们开始认识到FT的局限性:现实生活中真正具备价值的事物是不可替代的,如一件商品、一份合同、一项资质等,这些具备惟一性的资产是没法用FT进行锚定的。工具
相较于FT,NFT 的关键创新之处在于提供了一种标记原生数字资产全部权(即存在于数字世界,或发源于数字世界的资产)的方法,且该全部权能够存在于中心化服务或中心化库以外。NFT 的全部权并不阻止其余人视察它或阅读它,NFT 并非捕获信息而后把它藏起来,只是捕捉信息而后发现该信息与链上全部其它信息的关系和价值。区块链
同时,NFT因为其非同质化、不可拆分的特性,使得它能够锚定现实世界中商品的概念,例如通证化的门票、一瓶珍贵的红酒、独特设计的珠宝等等。NFT 使咱们可以将任意有价值的事物通证化,并追溯该信息的全部权,这样就实现了信息与价值的交汇。ui
NTF是基于区块链的差别性数字资产,兼容NTF的区块链就像一个可以记录任何商品的数据库。NFT理论上能够将现实中具备非同质化特性的事物都锚定起来,实现将现实世界通证化,造成一个价值互联、信息互通的数字资产世界。
编码
目前不可替代代币的势力能够分为四组:加密
不可替代代币发布者
不可替代代币市场
不可替代代币基础设施
针对不可替代代币的各种资源
而落到具体的应用场景中NFT分为如下几种[1]:
12
收藏品
咱们上面也提到过基于NFT设计的加密收藏品,那就是CryptoKitties,同时加密收藏品还有不少别的扩展方向,好比艺术品收藏。咱们能够将须要进行存证的合同、版权、专利等信息,以NTF的形式保存在区块链上,便于后续的更新、流转、交易等。当它的全部者想出售时,只须要简单地出具这枚NFT的标记信息来声明做品的真实性和本身对该做品的全部权便可,同时这种认证是数字化可溯源的,由于艺术资产的全部权记录在区块链上,在保证交易合法性的同时也能够防止艺术品的伪造和欺诈。
12
游戏道具
NFT也正在完全改变游戏世界。一般,游戏中的角色会得到相似武器、衣服、房产等可交易的物品,为每一个物品都建立一个NFT可使它们可以与游戏中的积分代币甚至现实世界的现金进行交易,这就造成了虚拟商品的在线数字经济体系。这些NFT存储在区块链上,它们的信息、归属、以及全部交易记录都将透明公开,且不可销毁不可篡改。
12
电子门票
若是我有一张巨星演唱会的门票而你有一张篮球电子门票,它们是一样类型的物品可是表明的价值却彻底不一样。因具有不可篡改、可追溯特征,区块链与存证有着自然的结合点,存证也所以成为区块链应用的典型场景之一。区块链存证适用于全部须要进行存证、核证、取证的业务场景,尤为是须要解决多方信任问题或获取司法监管许可的状况。同时门票数字化后的身份验证还能防止假票和黄牛票,所以电子票务是NFT能够改造的一个行业。
12
身份认证
咱们能够将NFT应用到身份认证中来实现我的行为的全纪录。好比,得到一个不可交易的NFT来做为出生证实、护照和认证我的驾照等等,尽管该NFT不可交易,可是经过权限控制能够实现身份的交互验证。咱们在招聘时能够验证一我的的身份NFT来查询其大学文凭,在看病时申请查看医生的身份信息来认证其资质等。身份认证将人token化,将全部属性和行为历史都记录在案。
12
电子存证
使用NFT,将现实世界中的合同、文书等信息进行链上去中心化存储,防止伪造且便于追溯。同时,借助于电子签名、证书等技术,对文件的真实性和有效性进行证实。电子存证可有效地实现知识产权、版权、著做权等价值的电子化,而NFT赋予的交易特性又可使得这些价值直接在区块链上进行交易,方便了价值的流通。
自从数字货币出现以来,将现实世界token化是整个行业一直在作的努力。2013 年风靡一时的彩色币是最先想要给数字资产赋予独特特性的尝试之一。彩色币是比特币的附加产物, 或者在大多数案例里,是比特币可被分割的最小份额,也叫给satoshis「加了颜色」,以表明现实世界里的资产,例如一笔房子、股票、债券、商品的交易。而合约币则进一步地容许用户在区块链基础上创造他们本身的实际资产。基于不可替代代币NFT 标准的数字加密收藏品正是创建于这一基础上,恰逢其时地继续肩负彩色币最初的使命,将现实资产与数字货币连接起来,NFT的实现也是现实世界token化的进程之一。
NFT的一个最受关注也是现今最流行、承认度最高的实现即ERC721标准协议[2]。ERC721自己是一个EIP(Ethereum Improvement Proposals),是一个由开发人员提出的以太坊改进方案,经以太坊委员会经过后成为了ERC(Ethereum Request for Comment),即Ethereum意见征求稿中的一员。ERC721 官方简介是:A standard interface for non-fungible tokens, also known as deeds,即NFT。
ERC721做为一个合约标准,提供了在实现ERC721代币时必需要遵照的协议,要求每一个ERC721标准合约须要实现ERC721及ERC165接口,接口定义以下。除了标准接口以外,还有一些可扩展接口,例如ERC721Metadata系列接口定义了ERC721的一些基本信息,ERC721Enumerable系列定义了枚举接口,这些都在标准中有详细说明,再也不赘述。
interface ERC721 /* is ERC165 */ {
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId);
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
function balanceOf(address _owner) external view returns (uint256);
function ownerOf(uint256 _tokenId) external view returns (address);
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable;
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable;
function transferFrom(address _from, address _to, uint256 _tokenId) external payable;
function approve(address _approved, uint256 _tokenId) external payable;
function setApprovalForAll(address _operator, bool _approved) external;
function getApproved(uint256 _tokenId) external view returns (address);
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
interface ERC165 {
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}
上述的全部接口构成了ERC721的完整标准接口和可扩展接口。须要注意的是,真正使用ERC721的时候,必须其中实现一些额外的功能和接口,例如_mint铸币操做、_burn销毁操做、addTokenTo为给定地址添加tokenId等,这些方法共同定义和实现了ERC721代币协议,咱们能够基于此将ERC271代币应用于不少场景中,经过继承其主要token合约来开发遵循ERC721协议的代币,并自由的添加相应的业务逻辑来丰富应用。
因为NFT的不可替代性和加密猫引起的数字收藏品的火爆,基于NFT的标准协议正在一步步地更新和迭代中。例如ERC875 [3]、ERC998 [4]等,虽然目前都在draft阶段,但其提出的观点是很是值得思考的。其中ERC875比较受到咱们的关注,由于NFT自己是对商品的定义,而商品一个重要的属性就是交易。ERC875正是在ERC721的基础上加入了交易功能,容许用户使用区块链上的原生币购买NFT资产。
这里咱们简单分析一下ERC875合约中trade交易实现流程:
在token拥有者owner在想要卖出token时(可一次卖出多个token),owner用本身的秘钥签名售卖总额、成交有效期限、售卖的tokenId列表和合约地址并公布;
买家在获取到该签名信息后,经过给定的一些APP帮助,从签名恢复出tokenId列表和价格信息,以及代码中的V、R、S签名参数,将tokenId索引、V、R、S做为trade输入,与售卖总额相同价格的代币(msg.value)共同构造一笔交易发送到合约地址调用trade接口;
trade函数中调用encodeMessage函数将msg.value和tokenId列表等信息一同编码为message,调用ecrecover函数验证传入的签名信息V、R、S正确性,并求出卖家的地址;
将从卖家地址下登记的资产列表中找出本次售卖对应的每件商品的TokenID,并转移登记到买家地址下的资产列表中,买家成为这批物品的新主人,对于同一份售卖签名信息,能够同时有多个买家,这时候遵循先买先得的原则。
Qtum致力于创建一个具备高兼容性和扩展性的区块链生态,NFT在Qtum生态中也是必不可少的。Qtum已经完成了同质化代币FT的生态兼容,QRC20代币标准一经发出就受到很大关注,有不少项目选择使用QRC20标准在Qtum上构建本身的应用,取得了不错的成果。所以,咱们计划推出Qtum上的NFT标准,鼓励开发者基于Qtum实现NFT的应用,具体包括如下几个方面:
制定QRC721接口协议。协议将参照ERC721,根据最新的应用方向和社区的反馈进行调整。
发布QRC721模板。开发人员计划实现QRC721的基本功能而且完成Qtum上的调试,从而帮助更多的开发者构建符合QRC721标准的应用。
增长对QRC721的支持。根据开发者的需求和应用的发展状况,陆续在浏览器、钱包等Qtum相关工具中增长对QRC721的支持。
经过对NFT的调研和分析,咱们看到了区块链将来的一个发展方向,即用于标记虚拟或现实世界中的商品,从而实现商品的信息记录、流转、交易、追溯等功能。这大大拓宽了区块链的应用前景,为区块链技术走向大众提供了基础。
[1] What Are NFTs? https://coincentral.com/nfts-non-fungible-tokens/
[2] ERC721: Non-Fungible Token Standard. https://eips.ethereum.org/EIPS/eip-721
[3] ERC875: A better NFT standard. https://eips.ethereum.org/EIPS/eip-875
[4] ERC998: Composable Non-Fungible Token Standard. https://eips.ethereum.org/EIPS/eip-998