ERC系列是基于EIP(Ethereum Improvement Proposals)以太坊优化提案的类型之一。对以太坊上了解比较多的游戏设计师应该都知道ERC-20和ERC-721,这两个是目前最流行且被官方正式接受的标准。市面上所有能见到的以太坊上的区块链游戏,大部分是基于ERC-721,最有名的就是以太猫了。基于ERC-20的也有,例如Ethergoo,但在我看来,这是一种取巧的做法。
在说本文的主角ERC-1155和ERC-998之前,先来简单回顾一下ERC-20和ERC-721。
ERC-20是在2015年11月份推出,是目前最为常用的标准化代币规则。ERC-20是同质化代币(Fungible token,缩写为FT),所有的代币单位价值都是一样的且可以分割。不太恰当的例子,就像一块钱,可以分成两个五毛,两个五毛也可以合成一块钱。绝大多数ICO都使用了ERC-20代币或者是ERC-20的升级版ERC-223。
ERC-721是非同质化代币(Non-Fungible Token,缩写为NFT)。ERC-721在2017年底首先被CryptoKitties使用。顾名思义,非同质化代币意味着每个Token都是不一样的,都有自己的唯一性和独特价值,它们是不可分割的:一分割就不是原来的东西了,一只猫没办法分成两个“半猫”。
如果说ERC-20让货币的代币化的话,ERC-721为就是物品的代币化。虽然ERC-721开创了区块链游戏的新时代,但ERC-721在实际应用中并不是很方便,尤其是对物品种类很多的游戏。因为各种物品所具备的功能和属性都不一样,如果用ERC-721实现,每种物品都需要部署单独的完整的智能合约。而且这些智能合约大部分代码是重复的,只是在一些微小的参数上进行了调整。
举个例子,一把枪,附带击退效果,一把刀,附带流血效果,按传统中心化的方案的话,不管是刀还是枪,都是武器,在继承武器共同属性外,各自还有自己的属性。但如果用智能合约实现,就是两个智能合约,而且合约中,共同属性的部分得各自重复实现一遍。要知道,在以太坊公链上发布智能合约是要根据代码量花费GAS费的,重复的代码就意味重复的费用。这不仅仅是开发上的不方便,而是实实在在的成本。
以上的例子还只是两种武器,要是算上刀枪剑戟斧钺钩叉等十八般武器呢?算上不同部位不同职业的防具呢?算上别的道具呢?现下随随便便一个大型游戏可都有成百上千种道具!
即便不考虑发布这些智能合约的GAS费,对于记账的节点来讲,它们也需要兢兢业业一丝不苟的把这些大部分重合的合约都一一记录在案,并为每一个代币合约永远保留它的代码和接口。这让本来性能本来就不佳的网络雪上加霜。
ERC-1155可以在一个智能合约中定义多个物品(token),为解决这个问题提供了新的方案。简单地说,ERC-1155定义的物品将被储存在一个中央智能合约里,只占用极少的空间用来互相区分。这样就节省了重复的代码以及相应的费用。
ERC-1155还可以用来把多个物品(TOKEN)合并打包成一个物品(TOKEN包)。举常见游戏插槽镶嵌的例子,一件有两个插槽的武器,和两个完美的符文,这是三个Token,当把这两个符文镶嵌进武器中,就变成一个新的武器,也就是token包。这个token包也可以极大的减少交易步骤,不过这个跟游戏设计的关系不大,就不多谈了。
如上,ERC-1155融合了ERC-20和ERC-721的一些优点,开发者可以很方便的创建海量种类的物品,每个物品可以是ERC-721那样独立的,也可以像ERC-20一样同质化。
下面简要介绍一下ERC-998。ERC-998目前还在构建之中,并没有正式成为以太坊的EIP,但已经引起了不小的反响。
ERC-998名叫可拆解非同质化代币(Composable NFT,缩写为CNFT)。它的设计可以让任何一个NFT可以拥有其他NFT或FT。转移CNFT时,就是转移CNFT所拥有的整个层级结构和所属关系。简单来说就是一个ERC-998的物品可以包含多个ERC-721和ERC-20形式的物品。
举个例子,CryptoKitties的衍生游戏KittyHats中的猫咪衣服是ERC-721类型。如果你给自己的某只猫咪穿上了衣服,虽然这件衣服是属于猫咪的,但是在现有的ERC-721体系之下体现不出来这种从属关系,仍然猫咪是猫咪,衣服是衣服。如果需要交易整只猫咪和它所拥有的衣服时,需要对于猫咪本身、猫咪的衣服分别做交易。
ERC-998所做的事情就是建立一个相应的以ERC-721猫咪为父token,ERC-721服装为子token的新代币。如果我们现在要卖掉这只猫,先把它们整合成一个整体,这个整体依然是不可分割的,但包含了猫咪对衣服的所有权关系,然后对这个整体进行交易就可以。这会极大的简化物品转移的处理。
CryptoKitties的衍生游戏cryptocuddles在实现猫咪战斗时,是先用CryptoKitties中的数据构建了一只ERC-721的“影子”,然后给这只影子猫加上了技能,是完完全全独立的另外一种ERC-721的物品。ERC-998就不用这么麻烦,只要构建一个ERC-998的物品,让这个代币既拥有以太猫的token,又拥有技能的token就搞定了。
区块链的游戏正在从基础设计上追赶传统游戏,期待那一天早点到来。