要读懂NFT,就要先了解它的三种底层协议标准
NFT有三种底层协议标准——ERC-721,
ERC-1155,ERC-998。
ERC是「Ethereum Request for Comments」的缩写,意思是以太坊开发者公开征求意见,希望定义出统一的沟通接口,建立出一套可以遵循的标准,让以太坊开发者在撰写智能合约时能更为流畅。
ERC-721
ERC721是用于处理不可替换资产的一种以太坊代币标准。可替换资产像是货币,它可以被其他任何平等单位替代,但诸如房屋、家具则属不可替换资产,它不能被替代,也不能被分割,这就是ERC721规格标准的主要效果。
在ERC721标准下,能将资产转为唯一的、独特的256位元代币。而这种代币可以通过区块链上的智能合约追踪,从而建立数位化资产。
值得一提的是,因为ERC721标准是由Axiom Zen技术总监Dieter Shirley提出的,该公司2017年创立的风靡全球的游戏CryptoKitties,也成为第一个采用ERC721标准的去中心化游戏应用。
CryptoKitties曾经是NFT的第一个明星项目,ERC721标准正是该项目CTO Dieter Shirley所创建和发布的。
可以说Dieter Shirley是NFT的奠基人之一。Dieter是后来NFT领域公链Flow的首席架构师。
ERC721也是NFT领域最常用的通证形式。曾经2017年底造成以太坊网络拥堵的火爆全网的游戏/收藏品项目CryptoKitties,使用的正是721协议。
图片来源:CryptoKitties官网
从上图中可以看到这些加密猫的价格特点各不相同。“每一只加密猫都是独一无二的”,这是CryptoKitties官网曾经的宣传语,也是NFT的最重要特性。
即使同一品类看着一样的猫,也会有参数的变化;而这些肉眼不可见的参数依然是非同质化通证NFT,而不是传统意义上的token代币。
ERC-1155
现有的ERC20和ERC721他们分别是Fungible(可替换的)和Non-Fungible(唯一的)两者相对独立,互不兼容。
而真实的游戏中却是你的武器装备,皮肤,盔甲,在绝大部分情况下是Fungible的,因为同样的枪支,打起来威力是一样的,子弹更是如此。
但当你需要追溯每把武器的来源,使用情况以及唯一性的时候,他需要是Non-Fungible,而ERC20和ERC721彼此之间的不兼容导致你没法做到Fungible 和 Non-Fungible共存。
但是ERC1155解决了这个问题,他结合了两者的优点,你完全可以创建一个道具,它有时候是Fungible但又拥有Non-Fungible的属性。
ERC-1155用了一种新的方式来定义代币,物品将被储存的一个中央智能合约,并占用极少的空间仅用来互相区分。
任何物品Token都可以被合并打包成一个"Token包",Token包也有自己独立的id(减少区块链上大量的冗余字节码)。
ERC1155标准的创立来自Witek Radomski,是Enjin的联合创始人&CTO。
Witek Radomski
Enjin是一个游戏开发商,Witek Radomski创建ERC1155主要原因是开发游戏时需要有游戏道具,需要多道具多账户发送,而每次发送就要调用一次合约非常费钱。
举个例子,有个日活十万、注册用户百万人的游戏,游戏升级每个人送一把剑。这个时候如果在区块链上,给一百万个人每人转一次账,需要花多少钱?按照目前普通转账费用——0.01eth的费用计算,直接需要承担3500万美金的费用,这对于游戏公司来说是一笔巨大的开销,而且流程繁琐,时间周期较长。
ERC1155的诞生从一定程度上解决了类似的问题,因为这个协议标准同时兼具了NFT和FT的特性,具有半同质化代币(semi-fungible token)的特性。
这里的ID和ERC721对比来看的区别是:ID不再是某个物品,而是一个类别。比如说游戏道具汇总的外套就是一个类别,转账的时候设置外套的数量,这样只需要调用一次合约就可以发送多种数量的道具了,比如上文中说到的游戏升级每个用户发一把剑,这就是一个类别。这一类别中的token并没有区别。
不过理论上来说,严格的NFT应该是每个物品都是不同的,所以ERC1155是半同质化代币(semi-fungible token),相当于物理上的半导体——介于绝缘体和导体之间。
值得一提的是:ERC1155可以满足不同场景下的灵活需求,比如同时转账多数量的多类别资产,也可以转账多数量的同一类别资产,大大提高了转账的快捷方便程度。
ERC-998
ERC-998可组合非同质化代币(Composable NFTs,缩写为CNFT)。它的结构设计是一个标准化延伸可以让任何一个NFT可以拥有其他NFT或FT。
转移CNFT时,就是转移CNFT所拥有的整个层级结构和所属关系。简单来说就是ERC-998可以包含多个ERC-721和ERC-20形式的代币。
这意味着CryptoKitties一只猫咪身上可以有同质化的资产,如一些ETH代币,也可以有非同质化的道具,如这个加密猫手里拿了一张卡牌或者带了一个大金链子,这个卡牌或者大金链子本来就是一个NFT。这时候转账一次就可以打包所有东西。ERC998是一种类似“打包”出售的商品。
如ERC-721在房屋交易中表示的是房子这个抽象的整体,但其实一栋房子是一整套东西的集合体,比如独一无二的土地使用权(ERC-721),量产的电视(ERC-20)。
如果你是楼盘开发商,你会扔掉电视因为你看重的只是房子的土地使用权,这些都需要更细化的token来表示。
这时就可以用到ERC-998规则为父token(房子)添加各种子token(房内物品)来完整的表示这个房子,新的整体token依然还是不可分割的NFT,且包含了房子对其中物品的所有权关系,ERC-998可以明明白白表现所属权和一次性交易一整个token。
ERC-998的结构中包含两种映射关系,父tokenID映射到子token合约地址。
当子token是NFT/FT时,子合约地址映射到对应的子tokenID/余额。
也就是说对于子ERC-721 token,ERC-998会追踪tokenID,而对于ERC-20 token,ERC-998会追踪token数量。这种内部记账将有助于确保不拥有父token的人无法转移子token。