非同质化代币(简称NFT)真正的起飞,是加密猫在基于区块链的游戏里率先使用它们之后。它们提供了一种将数据附加到加密代币的方法,而不仅仅像ERC20代币那样只有值。这个新的代币标准被称为ERC721,它允许在以太坊区块链上发行和交易独一无二的收藏品。与必须由人类验证真实性的物理收藏品不同,这些数字资产可证明是真实的。与“同质化”的ERC20代币不同 —— 即因为所有的代币都是相同的,所以可同等互换 —— ERC721代币是独一无二的,不能互相替代。由于Loom的PlasmaChain是针对游戏优化的区块链,因此其中一个受欢迎的讨论是ERC721代币标准。ERC721定义了一个物品的类,每个代币具有不同的属性。例如,加密猫(参考此处代码)有一个Kitty类(第241行),它定义了Kitty的基本格式,包括genes(基因)、birthtime(出生时间)、matronid(母id)和sireid(繁殖id)等。当一个新的Kitty被铸造时,这些变量是自定义的,因此所有Kitty在它们具有的变量方面具有相同的结构,但每个变量具有不同的值。这对于像加密猫这样,只有一种类型的收藏品(即Kitty)的收藏品游戏非常有用,但是它却无法满足你想拥有多种类型的收藏品的需求。如果你想将Kitty Toys添加为收藏品,则必须创建新的ERC721合约。 为每种类型的收藏品创建单独的合约很快就会变得不可扩展。为了解决这个问题,ERC721标准有一个扩展:ERC1178。 ERC1178允许在同一ERC1178合约中定义多种类型的收藏品。这意味着它允许同时转移任何数量 的特定类型的收藏品,这在谈论可能没有单独价值,但是数量大时有价值的收藏品很有用。乍一看,ERC1178似乎是问题的完美解决方案,但这里有一个问题。 它打破了与现有钱包和交易所的兼容性。 为了实现ERC1178,你不仅需要在应用程序中实现它,而且还必须期待着你的玩家使用的钱包也支持该规范。
ERC721x来了
ERC721x是Loom对ERC721的扩展。 它是一个兼容ERC721的代币,支持多个同质化类。
使用ERC1178作为基础,ERC721x具有非常薄的可选功能层来支持加密收藏品,并且所有内容都包含在ERC721兼容层中,因此它受当前钱包和交易所基础设施的支持。 兼容层保留了铸币功能,允许根据需要铸造单个ERC721代币。你可以在此处查看GitHub上ERC721x代币的完整代码。(https://github.com/loomnetwork/erc721x/blob/master/contracts/Core/ERC721X/ERC721XToken.sol)具体来说,ERC721x兼容性以mint( )函数的形式出现,我们可以看到它的实际应用。
此函数的抬头与常规ERC721合约中的函数相同,但内部逻辑会检查是否存在该类型的代币,如果存在,则打印另一个副本。 它允许多种不同类型的资产副本的存在。 不是10个Fire Minion卡牌有10个不同的tokenID,而是它们都具有相同的 ID和一个在你库存中的可调数量。这意味着你可以在以太坊上获取ERC721资产并交易数百份特定资产,仅需一次ERC721转移! 对于开发者来说,你可以在同一个ERC721合约中包含多种类型的资产,从而有助于创建更具紧凑的用户体验。
要为自己的代币合约部署ERC721x,可以克隆此代码仓库(https://github.com/loomnetwork/erc721x)。 在那里,你将找到接口和接收器的代码,以及帮助你入门的参考实现。