* 本文由Starcoin社区原创,点击 查看原文。
前面我们了解了NFT协议的发展历程,NFT的特性已经由「独一无二」和「不可分割」逐渐的演变成了「稀缺性」和「可组合」。对比以太坊的NFT协议,Starcoin充分发挥Move在NFT场景的优势,设计了兼具安全性和可扩展等特性的标准NFT协议。通过深入剖析IdentifierNFT和MerkleNFT两个模块的巧妙设计,对Starcoin标准NFT协议的应用场景进行了初步讨论。
NFT的价值正在很多领域凸显出来,常见的比如游戏、社交、音视频、电商等等,业内已经有很多的实践:
接下来,我们从上面的场景中,选择有代表性的NFT场景,进一步探讨Starcoin标准NFT协议在这些场景的应用。
讨论NFT的应用场景,就不得不说NFT与游戏。NFT在链游中应用很广泛。链游甚至在很大程度上促进了底层NFT协议的发展。游戏道具跟NFT有很多相似之处,例如彰显个性、价值承载,还有一个非常重要的原因,游戏道具完全由二进制表达出来,是NFT的一个最典型、最完美的应用场景。所以,我们通过一个简单的卡牌游戏,介绍Starcoin标准NFT协议在游戏方面的应用。
下面的Card模块对L1Card和L2Card的定义:
struct L1CardMeta has copy, store, drop{
gene: u64,
}
struct L2CardMeta has copy, store, drop{
gene: u64,
}
struct L1Card has store {}
struct L2Card has store {
first: L1Card,
second: L1Card,
}
public fun init(sender: &signer)
public fun mint_l1(_sender: &signer): NFT acquires L1CardMintCapability
public fun mint_l2(_sender: &signer, first: NFT, second: NFT): NFT acquires L1CardBurnCapability, L2CardMintCapability
这里我们不讨论L1Card和L2Card代表什么样的卡牌,也不讨论卡牌的游戏逻辑,而是分析作为NFT卡牌,设计上的优点:
Starcoin标准NFT协议设计非常简洁高效,开箱即用。例子中,NFT的卡牌游戏,只调用了协议的NFT::register_v2和NFT::mint_with_cap_v2两个函数,非常轻松地把NFT和游戏结合起来了。整个合约不到100行代码,在保障NFT安全的基础上,实现了NFT的灵活组合。感兴趣的可以查看完整代码。
Starcoin标准NFT协议通过Move的泛型,拥有了灵活的可堆叠性,也支持批量操作,可以非常轻松地应用在游戏场景。
NFT作为虚拟身份的标识,在社交等领域也有非常广泛的应用,例如非常火爆的加密朋克和ENS等等。实际上,Starcoin在标准NFT协议之上,针对身份标识场景专门封装了一套通用的IdentifierNFT协议。我们在介绍Starcoin标准NFT协议的时候也介绍过IdentifierNFT模块。IdentifierNFT协议能应用在任何唯一标识的场景,包括但不限于NameService场景(ENS),这里我们介绍另一个IdentifierNFT作为NFT会员身份的应用案例。
struct XMembership has copy, store, drop{
join_time: u64,
end_time: u64,
}
struct XMembershipBody has store{
fee: Token,
}
public fun init(sender: &signer)
public fun join(sender: &signer, fee: u128) acquires XMembershipMintCapability, XMembershipInfo
public fun quit(sender: &signer) acquires XMembershipBurnCapability
public fun do_membership_action(sender: &signer) acquires XMembershipBurnCapability
这里聚焦NFT作为会员身份的逻辑:
以上是使用NFT作为会员标识的例子,里面既使用了Starcoin的标准NFT协议,也运用了IdentifierNFT模块。虽然只有大概100行代码,从初始化NFT开始,到铸造、使用以及销毁NFT,覆盖了整个NFT的生命周期。合约逻辑简单清晰,更重要的是保障了NFT和Token的安全,感兴趣的可以查看完整合约代码。
NFT作为虚拟身份的场景还有很多,Starcoin未来会推出更多的应用。
NFT在电商场景也被广泛应用,例如盲盒、潮玩等等。我们从另一个电商角度,将NFT作为购物凭证,来介绍Starcoin标准NFT协议在电商场景的应用案例。我们想想一下预售、购买电子券、门票等场景,用户线上使用Token购买商品的NFT,然后用NFT去消费或者兑换实物。
struct BoxMiner has copy, store, drop{
price: u128,
}
struct BoxMinerBody has store{}
public fun init(sender: &signer, total_supply:u64, price: u128)
public fun mint(sender: &signer): NFT acquires BoxMinerMintCapability, NFTInfo
以上是BoxMiner模块的主要逻辑:
整个合约大概50行,既实现了完整的业务逻辑,又保障了NFT的安全可靠,感兴趣的可以查看完整合约代码。
电商场景对资产安全的要求更严格。Move正是为金融场景打造的高安全性的智能合约语言。Starcoin标准NFT协议正是通过Move实现,这种得天独厚的安全性,让Starcoin标准NFT协议特别适合电商场景。
Move在NFT场景具有天生的优势,Resource类型跟NFT非常地接近,同时,泛型编程让NFT可随意组合。Starcoin标准NFT协议灵活运用了Move的优势,拥有比以太坊的NFT协议更强大的功能和安全性,更加适合NFT的各种场景。