ebay式的拍卖详见
https://opensea.io/blog/announcements/introducing-ebay-style-auctions-for-crypto-collectibles/
特定的应用程序货币详见
https://opensea.io/blog/announcements/buy-and-sell-crypto-collectibles-with-mana/
对于游戏开发者来说,资产的可交易性代表着从封闭经济向开放、自由市场经济的转变。游戏开发者不再需要管理他们经济中的每一个部分:从资源的供应到定价,再到资本控制。取而代之的是,他们可以让自由市场来完成繁重的工作!
- 流动性
非同质化代币的即时交易能力将导致更高的流动性。NFT市场可以迎合不同的受众——从核心交易者到更多的新手——允许更多的资产曝光给更广泛的买家。就像2017年的ICO热潮催生了一个由即时流动性代币驱动的新资产类别一样,NFT也拓展了独特数字资产的市场。
- 不可变性和稀缺性证明
智能合约允许开发人员对非同质化代币的供应设置硬性上限,并强制执行在NFT发行后不能修改的持久性属性。例如,开发人员可以通过编程强制只创建特定数量的特定稀有物品,同时保持更多常见物品的供应量是无限的。开发人员还可以通过在链上编码来强制特定的属性不随时间改变。这对艺术来说尤其有趣,因为艺术很大程度上依赖于原创作品可证明的稀缺性。
- 可编程性
当然,像传统数字资产一样,NFT是完全可编程的。CryptoKitties(我们将在后面讨论)将繁殖机制直接融入代表加密猫的合约中。当今的许NFT都拥有更复杂的机制,如锻造、制作、兑换、随机生成等。这其中的设计空间充满了可能性。
非同质化代币标准
标准是使非同质化代币变得强大的部分原因。它们向开发人员保证资产将以特定的方式运行,并准确地描述了如何与资产的基本功能进行交互。
2.1 ERC721
ERC721由CryptoKitties首创,是第一个代表非同质化数字资产的标准。ERC721是一个可继承的Solidity智能合约标准,这意味着开发人员可以通过从OpenZeppelin库中导入它来轻松创建新的符合ERC721的合约(这里有一个关于创建第一个ERC721合约的有用教程)。ERC721实际上相对简单:它提供了唯一标识符(每个标识符代表一个单一资产)到地址的映射,地址表示该标识符的所有者。ERC721还使用transferFrom方法提供了一种经过许可的方式来转移这些资产。
interface ERC721 {
function ownerOf(uint256 _tokenId) external view returns (address)
function transferFrom(address _from, address _to, uint256 _tokenId) external payable
}
如果你思考一下,这两种方法实际上就是代表NFT所需要的:一种检查谁拥有什么的方法以及一种转移物品的方法。该标准还有其他一些花式操作(其中有些对NFT市场非常重要),但是ERC721的核心是非常基础的。
2.2 ERC1155
ERC1155由Enjin团队首创,将半同质化的理念引入NFT领域。使用ERC1155, ID不是代表单个资产,而是资产的类别。例如,一个ID可能代表“剑”,一个钱包可能拥有1000把这样的剑。在这种情况下,balanceOf方法将返回钱包拥有的剑的数量,用户可以通过用“剑”ID调用transferFrom来转移任意数量的剑。
Enjin详见https://enjinx.io/
interface ERC1155 {
function balanceOf(address _owner, uint256 _id) external view returns (address)
function transferFrom(address _from, address _to, uint256 _id, uint256 quantity) external payable
}
这种类型的系统的一个优点是效率:当使用ERC721时,如果用户想转移1,000把剑,他们将需要为这1,000个独特的代币修改智能合约的状态(通过调用transferFrom方法)。但对于ERC1155,开发人员只需要调用数量为1000的transferFrom,并执行一次转移操作。当然,这种效率的提高伴随着信息的丢失:我们无法再追踪单个剑的交易历史。
还要注意,ERC1155提供了ERC721功能的超集,这意味着可以使用ERC1155构建ERC721资产(您只需为每个资产拥有一个单独的ID和数量1)。由于这些优势,我们最近看到越来越多的人采用ERC1155标准。OpenSea最近在Github上开发了一个用于ERC1155标准入门的存储库。
https://github.com/ProjectOpenSea/opensea-erc1155